답변:
몇 가지 장점 :
엔터프라이즈 환경에서 소프트웨어를 배포 할 때 MSI를 통해 소프트웨어를 배포하는 것이 즐겁습니다. 대조적으로, 나는 다른 컨테이너에있을 때 거의 항상 소프트웨어 배포를 두려워합니다.
MSI 설치 조작에 대한 추가 정보를 보려면 msiexec
실행 대화 상자를 입력 하십시오.
UPDATE 년 7 월 2018 년 : 아래 정보의 매우 압축 요약 유래로 볼 수 있습니다 : MSI의 주요 장점 ( "executive summary"
- 종류의).
나는로 개발에 일한 릴리스 관리자 , 엔지니어 구축 , 설정 개발자 와 같은 응용 프로그램 패키저 및 배포 엔지니어 대기업에 있습니다.
이것은 MSI 의 최고 (최악) 개념 및 실제 기능 에 대한 검토입니다 . MSI 파일에서 발견 되는 가장 일반적인 디자인 문제 는 아래에 별도의 답변으로 제공됩니다 . 완전하지 않은 척-정말 지저분한 "뇌 덤프"- "책에서 찾을 수없는 것들"(아마도 정당한 이유).
또한이 MSDN 기사 를 Windows Installer : 시스템 관리자를위한 이점 및 구현으로 읽어보십시오 .
한마디로 MSI는 표준화와 레거시 설치 프로그램 기술의 " 배취 냄새 "를 다루는 것입니다 . 반복적 인 배포 문제를 일으킨 잘못된 설치 아키텍처 디자인의 전체 모음.
전반적으로 MSI가 제공하는 포괄적 인 표준 프레임 워크 설치에 대한 결정적으로도 제거 포함 하고 내장 기능과 옵션이 자동 실행 으로 표준화 된 GUI 할 수 있습니다 원격 트리거를 .
이러한 기능만으로도 이전 설치 기술에 비해 설치 제거 및 자동 실행이 우연히 처리되었습니다. 아마도 회사 배포에 가장 중요한 기능 일뿐 아니라 Active Directory 또는 Microsoft SCCM (이전의 SMS)과 같은 전용 원격 관리 도구를 통한 안정적인 원격 패키지 관리 , IBM Tivoli , CA Unicenter 및 유사
누군가이 답변의 이전 버전을 복제했습니다 . 더 빨리 읽을 수 있습니까?
MSI는 기존 배포 냄새 를 의도적 으로 권장하지 않습니다 . 이러한 주제는 아래 섹션에서 설명하지만 레거시 설치 관리자 및 이전 배포 기술에서 가장 잘 알려진 문제는 다음과 같습니다.
이 목록에는 기타 중요하고 인정 된 배포 결함이 많이 있습니다. 회사 배포 세계에서는 이러한 문제가 가장 자주 나타 났으며, 표준 호환 MSI 파일을 만들기 위해 디스크 및 레지스트리 검색 기술 로 레거시 설치 관리자 를 캡처 하는 " 애플리케이션 리 패키징 " 비즈니스로 이어졌습니다. 안정적인 배포를 위해
응용 프로그램 재 패키징 은 전문적인 작업 이며 일반적으로 지식이있는 사람이 올바르게 수행하면 우수한 품질의 MSI 파일이 생성되지만 특정 응용 프로그램이 작동하려면 대화식으로 실행해야하는 복잡한 등록 논리로 인해 모든 응용 프로그램을 재 포장 할 수는 없습니다.
에서 일반 언어 MSI의 정말 중요한 이점은 (특별한 순서없이)입니다 :
에서 실제 내가 찾은 적은 성공적인 측면을 포함하는 패치 (매우 복잡한) MSI-GUI (매우 복잡 일반 기능, 유연성이 부족하다), 탄력성이 (가 발생할 수 자체 수리 문제를 반복 디버그 하드 등) 전반적인 복잡성을 초보자를위한 기술을 다루는 것 (업그레이드, GUI 및 많은 상호 작용하는 세부 사항 등 예기치 않은 결과가 발생하는 등의 기본 작업의 복잡성) MSI의 오버 헤드가 증가하여 설치 프로세스 속도도 상당히 느려졌습니다. MSI 설치 속도 향상에 대한 몇 가지 팁을 참조하십시오 .
이 텍스트의 나머지 부분에서는 MSI의 이러한 측면 중 일부에 대해 자세히 설명합니다.
MSI 파일은 본질적 으로 파일 또는 데이터 스트림 모음의 파일 시스템 인 COM 구조의 저장소 파일 로 저장 되는 제거 된 SQL-Server 데이터베이스 입니다. 이것은 Microsoft Office 문서에 사용되는 파일 형식이며, 검토 및 검사 할 수 있는 표준 형식 을 제공합니다 . 대기업 에게는 큰 문제 입니다.
컴파일 된 사용자 지정 작업을 제외하고 MSI 파일은 흰색 상자 입니다. 설정이 시스템 전체의 네트워크 설정과 같은 열악한 것을 변경하면 실제로 적절한 도구를 사용하여 볼 수 있습니다 . 주목할만한 예외는 사용자 지정 작업 컴파일 입니다 - 블랙 박스 . Windows 로고 요구 사항 에는 작업 내용을 설명하기 위해 사용자 지정 작업에 주석을 달아야하지만 설치 개발자는이를 종종 무시합니다. Wix의 출현이이를 개선하기를 바랍니다.
이러한 컴파일 된 사용자 지정 작업이 실제로 기술적 의미에서 수행하는 작업을 확인하려면 설정 캡처 가 필요합니다. 이것은 내 경험으로는 거의 이루어지지 않습니다. 소프트웨어에 회사 배포에 대한 승인이 필요한 경우 공급 업체에 문의하는 것이 더 일반적이며, 설정뿐만 아니라 사용을 방해하는 응용 프로그램 자체 일 수도 있습니다.
MSI는 공급 업체의 설치 프로그램 업데이트와 상호 운용성을 유지하면서 조직의 요구와 표준에 맞게 변환을 통해 사용자 정의 할 수 있습니다. 설치 관리자 자체는 변경하지 않고 변환 (.mst 파일) 이라는 별도의 조직 별 파일 (원하는 경우 데이터베이스 조각 또는 변경 트랜잭션 )로 사용자 지정을 만듭니다 . 사용자 정의 작업을 비활성화하거나 일반적으로 설치 관리자의 항목을 재정의하거나 비활성화 할 수 있으며 파일을 포함하여 새 항목을 추가 할 수도 있습니다. 변환 파일은 때때로 MSI 파일을 다른 언어로 지역화하는 데 사용됩니다. 하나의 MSI에 여러 변환을 적용 할 수 있습니다 . 경로 가 잘린 샘플은 다음 과 같습니다.
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
빠른 매개 변수 설명 :
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
Windows Installer 는 제품이 레지스트리에 설치 한 모든 항목에 대한 포괄적 인 데이터베이스 를 유지 관리합니다 ( HKEY_CLASSES_ROOT \ Installer- 여기서 직접 변경하지 마십시오! 전문가에게도 해당됨).
제품 설치 여부, 설치된 기능 및 설치된 파일 버전을 확실하게 확인할 수 있습니다. 또한 기본 제품에 적용된 패치 목록이있을 수 있습니다 (있는 경우). Microsoft SCCM , IBM Tivoli , CA Unicenter 등과 같은 다양한 스크립팅, 구성 및 관리 도구를 사용하여 API 지원 Win32, COM 또는 .NET 을 통해이 데이터베이스에 액세스 할 수 있습니다 .
MSI에는 또한 "권한이 높은"원칙이 포함되어있어 제한된 사용자가 관리자 권한이 필요한 제품의 설치를 트리거 할 수 있습니다. 이것은 관리자가 모든 워크 스테이션에 실제로 설치 프로그램을 설치하지 않고도 설치 프로그램을 사용할 수있게하는 " 광고 기능 " 의 일부입니다 . 이 높은 권한 개념이 올바르게 작동하려면 설치 관리자 자체가 여러 핵심 계정에서 올바르게 작성되어야합니다. 사용자는 제품 자체의 설치를 트리거하거나 SCCM, Tivoli, Unicenter (대개 회사)와 같은 전용 배치 시스템으로 설치를 제어 할 수 있습니다. 작업을 수행하기 위해 임시 관리자 권한 을 망칠 필요가 없습니다. 레거시 설치 프로그램의 경우가 종종 있습니다.
포괄적 인 설치 데이터베이스는 설치된 패치에 대한 전체 개요를 제공하므로 자동화 및 관리 도구를 통해 보안 취약성을 탐지 할 수 있습니다.
MSI 파일을 유효성 검사 규칙으로 검사하여 여러 내부 일관성 규칙 ( ICE 라고 함)을 준수하는지 확인할 수 있습니다.). 회사는 특수한 회사 규칙 및 요구 사항을 적용하기 위해 자체 ICE 검사를 만들 수 있습니다. 이는 품질 관리에 큰 도움이됩니다. 유효성 검증이 가능한 이유는 관계형 데이터베이스의 자체 참조 특성 및 연관된 데이터베이스 스키마 때문입니다. 데이터베이스는 외래 키, 데이터 형식, 필드 너비, 스키마 버전 등과 관련하여 내부적으로 일관되고 자체 스키마와 호환되어야합니다. 형식 지정 및 유형 결함이 아닙니다. 예를 들어, 잘못된 대상에 배포중인 파일 또는 파일 형식을 검색 할 수 있습니다.
Windows 설치 관리자 의 관리자 설치 기능은 MSI에서 소스 파일을 추출하는 표준 방법을 제공합니다 ( 여기에서이 주제에 대한 추가 정보가 있습니다 ). 그런 다음이 소스 파일을 공유에 배치하고 모든 워크 스테이션에서 설치할 수 있습니다. 이를 통해 CD 또는 유사한 설치 매체를 요청하지 않고도 수리, 설치 제거 및 수정 작업이 완료됩니다. 이는 특별한 상황에서 이전 버전의 소스 파일에 액세스해야하는 패치 및 업데이트 작업에 특히 중요합니다.
이 복원 기능에는 일반적인 문제가 있습니다. 대부분의 관리자는 주기적으로자가 복구주기 가 반복 되는 시스템을 경험했습니다 . 이 문제의 긴 원인 목록을 보려면 링크를 따르십시오. 그리고 다시, 여기 더 읽기 쉬운 짧은 버전 이 있습니다.
MSI 파일을 설치하면 일반적으로 복원 지점 작성이 시작 됩니다. 또한 설치 중 교체 또는 덮어 쓰기 된 모든 파일 및 레지스트리 항목은 설치가 완료되지 않으면 사용자 지정 작업에서 수행 된 변경 사항을 금지하고 저장 및 복원됩니다.
사용자 지정 작업은 Windows 로고 준수를위한 자체 롤백 지원을 구현해야합니다. 이것은 종종 무시되지만 기본 사용자 정의 조치의 변경 사항을 실행 취소하기 위해 두 번째 사용자 정의 조치를 작성해야합니다.
롤백은 설치에 실패하더라도 워크 스테이션이 안정적인 상태를 유지하도록합니다. 실제 롤백 스크립트는 A의 저장되어있는 숨겨진 폴더 시스템 드라이브에 직접 - 일반적으로 C : \ Config.MSI , 그리고 그것은 확장 .RBS와 .RBF를 가진 파일이 포함되어 - 롤백 스크립트 파일 . 잘못 설계된 MSI 파일이 Windows의 기본 제공 기능을 위반할 수 있다고 예상 할 수 있으므로 자세한 내용은이 스레드의 다른 게시물을 참조하십시오.
롤백을 비활성화하고 설치 속도를 높이는 방법이 있습니다. 일반적으로 권장되지 는 않지만 MSIFASTINSTALL 속성 및 DISABLEROLLBACK에 대한 자세한 내용은 다음과 같습니다 . 이것은 복잡한 기능이지만 빠른 롤백 개요 입니다.
매우 복잡하지만 Windows Installer의 패치는 시스템에서 완벽하게 관리 및 등록되므로 설치된 내용을 확인하여 시스템 보안 상태를 확인할 수 있습니다. 업데이트는 몇 가지 기본 변형으로 표준화되며,이를 통해 복잡성을 처리 할 수있는 경우보다 확실하게 업데이트를 수행 할 수 있습니다. 배포 시스템은 어떤 업데이트가 실패했으며 그 이유를보고 할 수 있습니다.
주관적인보기 패치는 잘 작동에 2 개 기본적인 용도 : 1 전달 제품) 작은 핫픽스 및 2 )이 제품 깨끗한 제거를 방지의 결함 제거 순서를 해결하기 위해 설치된 제품을 패치.
패치는 이미 작동중인 업데이트를 위한 전달 메커니즘 일뿐 입니다. 따라서 원래 설정보다 더 복잡 하고 오류가 발생하기 쉬운 컨테이너 일뿐 입니다. 패치의 가장 중요한 규칙은 패치 가 원래 MSI보다 작아야하거나 패치를 제공 할 분명한 이유가 없다는 것입니다. 여러 제품 버전을 대상으로하는 패치는 빠르게 커질 수 있습니다.
Windows Installer는 표준화 된 로깅 기능 을 제공 하여 이전 화신보다 훨씬 우수하지만 거의 지나치게 장황합니다. 로그 파일을 사용하여 해독 할 수 있습니다 로그 분석기 및 사용자 정의 로그 수준은 불필요한 정보와 너무 큰 로그 파일을 생성 제거하는 데 사용할 수 있습니다. 디버깅 목적으로 자세한 로깅은 매우 유용합니다. MSI 로그 파일을 읽는 좋은 수동 방법 은 Rob Mensching의 블로그 를 참조하십시오 (본질적으로 로그 파일에서 " value 3 " 을 검색 함 ). 자세한 로깅을 수행하는 샘플 명령 행은 다음과 같습니다.
msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"
Windows Installer 팀 의 Robert Macdonald 의이 기사 는 MSI 로깅 : Windows Installer 로그를 해석하는 방법에 대한 실제적인 모습으로 적극 권장됩니다 .
Windows Installer에 관한 모든 것이 좋은 것은 아닙니다 . 그것의 복잡성은 이해할 수없는 수 시간에,하지만 당신은 계정에 위의 혜택 목록을 때 대기업에 대한 MSI 파일은 크게 배포의 다른 형태에 우수하다.
새로운 " 패러다임 " 을 이해하려면 MSI가 고정 된 일련의 이벤트가 아니라 대상 시스템에서 어떤 일이 일어날 지에 대한 선언적 설명 으로 의도 된 것임을 이해하는 것이 중요 합니다. 거대한 SQL 문 으로 생각할 수 있다고 가정합니다 . 예를 들어 INI 파일에 추가하거나 수정하려는 항목을 선언합니다. 설치가 실행되면 변경 사항을 추적하고 롤백을 사용할 수 있으므로 설치에 실패한 경우 변경 사항을 되돌릴 수 있습니다. 이것은 실제로 " automagic " 처럼 작동 하며 올바르게 수행 될 때 신뢰할 수 있습니다.
그것은이다 거대한 두통 에 대한 경험 MSI 개발자 사람들이 복잡한에 의존보고, 더 나은로 구현되는 기능에 대한 신뢰할 수없는 사용자 지정 작업에 내장 된 MSI의 기능을 제공합니다. 모든 MSI 오류 및 롤백 문제의 상당 부분은 잘못된 사용자 지정 작업으로 인해 발생하며 대부분의 다른 오류는 MSI 디자인을 잘못 사용하여 발생합니다 (일반적인 MSI 오류 목록은 별도의 답변 참조).
기본 제공 MSI 기능 외에도 MSI 파일을 컴파일하는 XML 방식 인 Wix 와 같은 새로운 프레임 워크를 통해 점점 더 많은 사용자 정의 기능을 사용할 수 있으므로 대부분의 작업에 복잡한 사용자 정의 동작 로직이 필요하지 않습니다.
MSI 는 ini 파일 설정, 글꼴, 환경 변수, 레지스트리 키, COM 정보, 바로 가기, 파일 확장자, 시작 조건, GAC 설치, ODBC 등의 병합 처리를 완벽하게 지원합니다.
WIX가 에 대한 지원과 함께 더 나아가 매우 고급 기능 , 같은 SQL 서버 확장으로 설치 및 구성, 성능 카운터, DirectX를 확인하고 다른 게임 관련 작업을 IIS, .NET 네이티브 이미지 생성, COM +, 드라이버, 방화벽 규칙, PowerShell을 확장, 응용 프로그램 폐쇄, 사용자, 그룹, 공유 등을 관리합니다. 처리하는 데 다소 관련이 있지만 사용자 정의 작업보다 훨씬 안정적입니다.
관점에 넣어 시도하려면이 내장 및 기성품 솔루션 된다 사용할 수있는 최고의 배포 전문가에 의해 만들어진 , 그리고 그들이 수천 테스트 아마도 수만 또는 사용자의 수백만 MSI에 내장 된 물건 ( 그 자체). 자신 만의 맞춤 작업을 더 잘 수행 할 수 있다고 생각하십니까? 사용자 지정 작업을 사용하는 것은 드문 경우이며 설치 한 제품에 고유 한 작업을 수행해야합니다 . 또한 적절한 롤백 지원도 작성해야합니다.
사용자 지정 작업을 작성하는 것은 거의 항상 실수 이지만 유연성이 정말로 필요한 실제 사례가 있습니다. 항상 그렇듯이 전투를 잘 선택하는 것이 중요합니다. 처음에는 재미있는 일이지만, 예상치 못한 많은 문제에 직면하여 많은 시간을 낭비하게 될 것입니다. 나는 이것을 매우 진지하게 의미합니다. 오류가 발생하기 쉬운 VBScript 사용자 지정 작업을 제거하기 위해 회사에서 직접 사용할 수있는 C ++ 사용자 지정 작업 모음을 작성했습니다. 실제 MSI 파일에 대한 연결은 그다지 복잡하지 않습니다. 어떤 기성품 옵션을 사용할 수 있는지 조사하는 데 몇 주 동안의 개발 작업이 절약되고 배치 안정성이 훨씬 높아질 수 있습니다.
매우 중요한 요점은 예측 가능한 런타임 컨텍스트와 사용 가능한 오류 처리가 가능하고 한 번만 실행되고 매우 가장 된 가장 , 시퀀싱 , 컨디셔닝 및 런타임을 특징으로하는 설정이 아닌 경우 애플리케이션 실행시 많은 애플리케이션 구성이 발생해야한다는 것입니다. 복잡성 .
설치 프로그램은 응용 프로그램을 구성해서는 안되며 처음 시작할 때 응용 프로그램을 구성 할 수 있도록 준비해야합니다 . 특히 설치 프로그램은 HKLM에 쓰기, 서비스 등록, 시스템 별 경로에 설치 및 응용 프로그램이 일반 사용자 권한으로 자체적으로 작성할 수없는 것과 같은 높은 권한이 필요한 모든 설정을 작성해야합니다.
설정 개발자 인 경우 설정 사용자 지정 작업을 작성하는 대신 응용 프로그램 시작 시퀀스를 코딩해야합니다 . 다른 것이 없다면, 당신이 다른 사람에게 "벅을 넘기려고"하는 것처럼 보이는 것을 피하기 위해. 이 시작 순서에서 QA 직원의 테스트를 쉽게받을 수있는 훨씬 더 안정적이고 테스트 가능한 코드를 작성할 수 있습니다 (배포 테스트 및 응용 프로그램 테스트를 이해하지 못하는 경우가 많습니다).
설정 복잡성의 핵심은 오류가 누적되는 것 (빠른 재 컴파일이 아닌 전달 프로세스를 관리하고 있음), 오류를 디버깅하기가 매우 어렵다 (오류가 발생한 시스템에 액세스 할 수 없음) 및 대상 시스템을 중심으로합니다. 상태는 상상할 수있는 모든면에서 다릅니다 . 이 복잡성과 대상 시스템이 Windows Installer 및 WiX 생성 및 배포 복잡성 (아래쪽 참조) 과 같은 여러 가지 방법으로주의를 기울이는 방법에 대한 자세한 내용은이 답변을 참조하십시오.
MSI 파일을 컴파일하는 새로운 XML 기반 방법에 대한 설명은 이 WiX 빠른 소개 를 읽으십시오 . 텍스트 기반 소스 파일은 이전보다 훨씬 나은 소스 제어 기능을 제공합니다. 이것은 무료로 제공되는 오픈 소스 툴킷으로 강력히 권장 됩니다.
NB : MSI 파일 의 일반적인 디자인 문제 에 대한 빠른 설명은 스레드의 다른 부분을 참조하십시오. 불완전하지만 읽을 가치가 있습니다. 100 % 관련이 없기 때문에이 회신에 추가하고 싶지 않지만 실제 사용에는 중요한 주제입니다.
(부끄러운 "프로모션"을 용서하십시오-쉽게 액세스하고 검색 할 수 있습니다)
다음은 네트워크에서 배포를 제어하려는 시스템 관리자에게 도움이 될 수있는 몇 가지 항목에 대한 링크입니다.
특별 사용 방법 주제 :
개념적 주제 / 모범 사례 :
이 답변은 진행중인 작업이며 대략적인 개요입니다. 추가, 질문 및 업데이트를 환영합니다. 이 목록이 결코 완전한 것은 아닙니다. 번거로운 패키지에 대한 정보가 포함 된 주석을 추가하십시오.
또한 많은 MSI 파일에는 오류, 때로는 심각한 파일이 포함되어 있지만, 숙련 된 응용 프로그램 패키지 관리자가이를 감지하여 대부분의 경우 문제를 해결할 수 있다고 경고해야합니다. 본질적으로 다른 질문에 대답하기 때문에 이것을 별도의 답변으로 추가하고 있지만 동일한 스레드와 관련이 있다고 생각합니다.
MSI와 관련된 기술적 세부 사항은 매우 복잡 합니다. 기본적으로 파일 및 레지스트리 설정을 구성 요소 (원자 설치) 및 기능 (사전 기능과 같이 설치할 사용자가 선택할 수있는 응용 프로그램 부분)으로 분해합니다. 구성 요소를 분할하기위한 여러 가지 모범 사례 규칙이 있으며 여기 MSI 파일의 오류가 많습니다. 이러한 오류는 일반적으로 "주요 업그레이드"사용을 표준화하여 처리됩니다.
실제 설치는 여러 설치 순서로 수행되며 일부는 높은 권한을 갖습니다 . 이 모든 것들이 데이터베이스 테이블에 정의되어 있으며, MSI가 이해하고 다루기가 매우 복잡합니다. 설치 순서 전체에 표준 및 사용자 지정 작업이 적용됩니다. 표준 작업은 Microsoft에서 설계되었으며 수행해야합니다 (시퀀스를 때때로 수정할 수 있음). 공급 업체는 MSI 자체에서 다루지 않는 사용자 지정 논리를 수행하기 위해 사용자 지정 작업을 사용할 수 있습니다. 이들은 스크립트 또는 컴파일 된 형태 일 수 있습니다. 사용자 지정 작업은 즉시 (한 번에 실행되고, 시스템을 변경하지는 않지만 자주 변경되거나) 연기되거나 (배당 스크립트에 작성되어 트랜잭션으로 실행되어 롤백을 지원함) 연기 될 수 있습니다.
MSI의 일반적인 오류 는 다음과 같습니다 (특별한 순서는 없으며 실제 혼란으로 표시됨).
몇 가지 더 미묘한 오류와 몇 가지 더 크고 전형적인 문제가 있습니다.
MSDN 의 Windows Installer 모범 사례 기사를 확인하십시오 .
MSI를 사용하면 패치 (MSP 파일) 및 업그레이드가 쉬워집니다. MSI는 고유 한 제품 및 업그레이드 코드 개념을 사용하여 전체 프로세스를보다 쉽게 만듭니다.
일부 배포 시스템 (CA Unicenter Software Delivery가 한 예)도 MSI를 특별한 방식으로 이해하여 배포 시스템에 훨씬 더 잘 통합 될 수 있습니다. 예를 들어 MSI를 배포 시스템의 소프트웨어 라이브러리에 공급하면 제품 내의 다양한 기능을 자동으로 감지하고 훨씬 더 세밀한 사용자 지정 작업 (로컬 설치, 확인, 복구 등) 및 로깅을 자동으로 허용합니다.
자가 치유 / 수리 또한 MSI의 주요 장점입니다.
또한 오픈 소스 Windows Installer XML "XML 소스 코드에서 Windows 설치 패키지를 빌드하는 도구 세트를 확인하십시오 . 도구 세트는 개발자가 MSI 및 MSM 설치 패키지를 빌드하기 위해 빌드 프로세스에 통합 할 수있는 명령 줄 환경을 지원합니다." MS가 여러 주요 소프트웨어 패키지를 준비하는 데 사용합니다.