수정 패키지를 사용하여 엔터프라이즈 앱 사용자 지정

애플리케이션의 환경을 사용자 지정하는 기능은 특히 기업에서 중요합니다. 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 파일을 저장할 수 있습니다. 파일 이름을 ether 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 이상에서 작동하려면 해당 수정 패키지의 매니페스트에 다음 요소가 포함되어야 합니다. 1월에 릴리스된 MSIX 패키징 도구를 사용하여 MSIX 수정 패키지를 패키징하는 경우 이 작업이 수행됩니다. 릴리스 전에 도구를 사용하여 패키지를 변환한 경우 이 새 요소를 추가하도록 도구의 기존 패키지를 편집할 수 있습니다. 또한 사용자가 수정 패키지를 설치할 경우 패키지가 기본 애플리케이션을 수정할 수 있다는 경고가 표시됩니다.

버전 1903 이전에 만든 수정 패키지를 사용하는 경우 패키지 매니페스트를 편집하여 특성을 10.0.18362.0으로 업데이트 MaxVersionTested 해야 합니다.

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="10.0.18362.0" />

MSIX 패키징 도구를 사용하여 수정 패키지 만들기

MSIX 패키징 도구를 사용하여 수정 패키지를 만들 수 있습니다.

  • 기본 패키지를 지정합니다. 변환 중인 컴퓨터에서 기본 패키지의 MSIX 버전을 사용할 수 있어야 합니다. 그렇지 않으면 게시자와 기본 애플리케이션 정보를 직접 제공하도록 요청하게 됩니다. 또한 일부 사용자 지정에서는 사용자의 컴퓨터에 기본 애플리케이션이 설치되어 있어야 합니다. Modification Package MPT

  • 패키지 편집기를 사용하여 변환한 후 패키지를 수정합니다. 기본 패키지에서 수정 패키지가 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 매개 변수를 사용할 수 있습니다.

충돌 해결

여러 수정 패키지가 동일한 값을 변경하려고 시도하는 경우 수정 패키지 이름의 사전순 순서고려하여 충돌을 해결합니다.