애플리케이션의 환경을 사용자 지정하는 기능은 특히 기업에서 중요합니다. IT 전문가와 이야기를 나눴으며, Windows 10으로 전환하기 위해서는 사용자의 요구에 맞게 애플리케이션을 사용자 지정하는 것이 필수적이라는 것을 알고 있습니다. MSI를 사용하여 패키지된 애플리케이션을 사용자 지정할 때 IT 전문가는 개발자로부터 패키지를 획득하고 필요에 맞게 사용자 지정으로 설치 관리자를 다시 패키지해야 합니다. 이것은 기업에 대한 비용이 많이 드는 노력이다. 앞으로 다시 패키징이 더 이상 필요하지 않도록 사용자 지정 및 기본 애플리케이션을 분리하려고 합니다. 이렇게 하면 기업은 사용자 지정을 계속 제어하면서 개발자로부터 최신 업데이트를 받을 수 있습니다.
Windows 10 버전 1809에서는 수정 패키지라는 새로운 유형의 MSIX 패키지를 도입했습니다. 수정 패키지는 사용자 지정을 저장하는 MSIX 패키지입니다. 수정 패키지는 활성화 지점이 없을 수 있는 플러그 인/추가 기능일 수도 있습니다. IT 전문가는 이 기능을 사용하여 애플리케이션이 엔터프라이즈의 사용자 지정에 의해 오버레이되도록 MSIX 컨테이너를 유연하게 변경할 수 있습니다.
작동 방식
수정 패키지는 애플리케이션의 코드를 소유하지 않고 설치 관리자만 있는 엔터프라이즈용으로 설계되었습니다. 최신 버전의 MSIX 패키징 도구(Windows 10 버전 1809 이상)를 사용하여 수정 패키지를 만들 수 있습니다. 애플리케이션에 대한 코드가 있는 경우 앱 확장을 만들 수도 있습니다.
주 앱에 대한 엄격한 바인딩이 있는 수정 패키지를 만들려면 주 앱을 수정 패키지 매니페스트의 종속성으로 선언할 수 있습니다.
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
<uap4:MainPackageDependency Name="Main.App"/>
</Dependencies>
다음 예제에서는 다른 인증서 또는 게시자를 지정하는 방법을 보여 줍니다.
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
<uap4:MainPackageDependency Name="Main.App" Publisher="CN=Contoso, C=US" />
</Dependencies>
수정 패키지와 주 패키지 간의 관계가 일대일인 경우 간단한 구성입니다. 일반적인 사용자 지정에는 HKEY_CURRENT_USER 또는 HKEY_CURRENT_USERCLASS 레지스트리 키가 필요한 경우가 많습니다. MSIX 패키지 내에는 레지스트리 키를 캡처하는 User.dat 및 Userclass.dat 파일이 있습니다. HKCU\Software*에서 레지스트리 키가 필요한 경우 User.dat 만들어야 합니다(Registry.dat HKLM\Software*에 사용되는 것처럼). HKCU\Sofware\Classes*에서 키가 필요한 경우 Userclass.dat 사용합니다.
.dat 파일을 만드는 일반적인 방법은 다음과 같습니다.
Regedit을 사용하여 파일을 만듭니다. Regedit에서 하이브를 만들고 필요한 키를 삽입합니다. 마우스 오른쪽 버튼을 클릭한 후, 하이브 파일로 내보내기 및 저장을 선택합니다. 파일 이름을 User.dat 또는 Userclass.dat으로 반드시 지정하십시오.
API를 사용하여 필요한 파일을 만듭니다. ORSaveHive 함수를 사용하여 .dat 파일을 저장할 수 있습니다. 파일 이름을 반드시 User.dat 또는 Userclass.dat으로 지정하십시오.
필요한 변경을 수행한 후에는 다른 MSIX 패키지와 마찬가지로 수정 패키지를 만들 수 있습니다. 그런 다음, 현재 배포 설정을 사용하여 패키지를 배포할 수 있습니다. 주 앱을 다시 시작하면 수정 패키지가 변경한 내용을 볼 수 있습니다. 수정 패키지를 제거하도록 선택하면 기본 앱이 수정 패키지 없이 상태로 되돌아갑니다.
디바이스에 설치된 수정 패키지 알아보기
PowerShell을 사용하면 다음 명령을 사용하여 설치된 수정 패키지를 볼 수 있습니다.
Get-AppPackage -PackageTypeFilter Optional
Windows 10 버전 1809의 수정 패키지
Windows 10 버전 1809에서 수정 패키지에는 주 패키지가 예상대로 실행되도록 레지스트리에 설정해야 하는 구성이 포함될 수 있습니다. 즉, 기본 애플리케이션은 레지스트리를 활용하여 플러그 인이 있는지 여부를 확인합니다. 주 패키지 및 수정 패키지를 배포할 때 런타임에 애플리케이션은 주 패키지와 수정 패키지의 VREG(가상 레지스트리)를 볼 수 있습니다.
기본 패키지는 VREG를 사용하여 다음 작업을 수행할 수 있습니다.
- 플러그 인의 파일(DLL)을 로드할 위치를 확인합니다. 이 경우 파일이 패키지의 일부인지 확인합니다. 이렇게 하면 주 패키지가 런타임에 파일에 액세스할 수 있습니다.
- VREG 키의 값을 볼 수 있는 위치 보기 기본 패키지는 VREG에 존재할 값을 찾고 있을 수 있습니다. 직접 또는 도구를 사용하여 수정 패키지를 만들 때 값이 올바른지 확인합니다.
Windows 10 버전 1903 이상에서 패키지 수정
다음 기능이 Windows 10 버전 1903에 추가되었습니다.
매니페스트 업데이트
MSIX 수정 패키지의 매니페스트에 다음 요소에 대한 지원을 추가했습니다.
<Properties>
<rescap6:ModificationPackage>true</rescap6:ModificationPackage>
</Properties>
수정 패키지가 버전 1903 이상에서 작동하도록 하려면 수정 패키지의 매니페스트에 이 요소가 포함되어야 합니다. MSIX 패키징 도구의 1월 릴리스를 사용하여 MSIX 수정 패키지를 패키지하는 경우 이 작업이 수행됩니다. 릴리스 전에 도구를 사용하여 패키지를 변환한 경우 도구에서 기존 패키지를 편집하여 이 새 요소를 추가할 수 있습니다. 또한 사용자가 수정 패키지를 설치하는 경우 패키지가 주 애플리케이션을 수정할 수 있다는 경고가 표시됩니다.
버전 1903 이전에 만든 수정 패키지를 사용하는 경우 패키지 매니페스트를 편집하여 특성을 10.0.18362.0으로 업데이트 MaxVersionTested 해야 합니다.
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="10.0.18362.0" />
MSIX 패키징 도구를 사용하여 수정 패키지 만들기
MSIX 패키징 도구를 사용하여 수정 패키지를 만들 수 있습니다.
기본 패키지를 지정합니다. 변환 중인 컴퓨터에서 기본 패키지의 MSIX 버전을 사용할 수 있어야 합니다. 그렇지 않은 경우 게시자 및 기본 애플리케이션 정보를 수동으로 제공하도록 요청합니다. 또한 일부 사용자 지정을 수행하려면 기본 애플리케이션이 컴퓨터에 설치되어 있어야 합니다.
패키지 편집기를 사용하여 변환을 거치면 패키지를 수정합니다. 어쩌면 주 패키지가 당신의 수정 패키지가 VREG에 특정 값을 포함하도록 요구하는 경우가 있을 수 있습니다. 여기서 패키지를 적절하게 편집할 수 있습니다.
MakeAppx.exe 사용하여 수정 패키지 만들기
Windows 10 SDK에 포함된 MakeAppX.exe 도구를 사용하여 수정 패키지를 수동으로 만들 수 있습니다.
매니페스트에서 기본 패키지를 지정합니다. 게시자와 기본 패키지 이름을 포함합니다.
<Dependencies> <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="12.0.0.0"/> <uap4:MainPackageDependency Name="HeadTrax" Publisher="CN=Contoso Software, O=Contoso Corporation, C=US" /> </Dependencies>Registry.dat, User.dat 및 Userclass.dat 만들어 수정 패키지를 로드하는 데 필요한 레지스트리 키를 만듭니다. 사용자 지정 레지스트리 키를 보려면 주 애플리케이션이 필요한 경우에만 필요합니다. 모든 항목이 컨테이너 내에서 실행되므로 런타임에 주 패키지와 수정 패키지 가상 레지스트리가 병합되므로 주 패키지가 수정 패키지 가상 레지스트리를 볼 수 있습니다.
주 애플리케이션의 실행 파일이 VFS(가상 파일 시스템)에 없는 한 이 프로세스는 파일 시스템 플러그 인 및 사용자 지정도 지원합니다. 기본 패키지가 주 패키지의 모든 VFS 및 수정 패키지를 가져올 수 있도록 하기 위한 것입니다.
컴퓨터에 수정 패키지 설치
컴퓨터에 수정 패키지를 설치하는 것은 다른 설치 규칙을 따릅니다. 패키지를 설치할 때 -OptionalPackagePath 매개 변수를 사용할 수 있습니다.
충돌 해결
여러 수정 패키지가 동일한 값을 변경하려고 시도하는 경우 수정 패키지 이름의 사전순 순서 를 고려하여 충돌을 해결합니다.