変更パッケージを使用してエンタープライズアプリをカスタマイズするCustomize your Enterprise apps with modification packages

特に企業では、アプリケーションのエクスペリエンスをカスタマイズする機能が重要です。The ability to customize an application's experience is important, especially for enterprises. IT プロフェッショナルには、ユーザーのニーズに合わせてアプリケーションをカスタマイズすることが、Windows 10 への移行作業に不可欠であることがわかっています。We’ve spoken to IT professionals and we know that customizing applications to meet their user's needs is essential to the effort of moving to Windows 10. MSI を使用してパッケージ化されたアプリケーションをカスタマイズする場合は、IT プロフェッショナルが開発者からパッケージを取得し、ニーズに合わせてカスタマイズしてインストーラーを再パッケージ化する必要があることをよく理解しておいてください。When customizing applications that are packaged using MSI, it is well understood that IT professionals must acquire the package from the developers and re-package the installer with the customization to suit their needs. これは企業にとってコストのかかる作業です。This is a costly effort for enterprises. 今後は、再パッケージ化が不要になるように、カスタマイズとメインアプリケーションを分離する必要があります。Moving forward, we want to decouple the customization and the main application so that re-packaging is no longer needed. これにより、企業は、カスタマイズの制御を維持しながら、開発者から最新の更新プログラムを取得できます。This ensures that enterprises get the latest updates from developers while still maintaining control of their customizations.

Windows 10 バージョン1809では、 変更パッケージと呼ばれる新しい種類の msix パッケージが導入されました。In Windows 10, version 1809, we introduced a new type of MSIX package called a modification package. 変更パッケージは、カスタマイズを格納する MSIX パッケージです。Modification packages are MSIX packages that store customizations. 変更パッケージは、ライセンス認証ポイントがない可能性のあるプラグイン/アドオンでもかまいません。Modification packages can also be plugins/add-ons that may not have an activation point. IT プロフェッショナルはこの機能を使用して、企業のカスタマイズによってアプリケーションがオーバーレイされるように、MSIX コンテナーを柔軟に変更できます。IT professionals can use this feature to flexibly change MSIX containers so that applications are overlaid by their enterprise's customizations.

しくみHow it works

変更パッケージは、アプリケーションのコードを所有せず、インストーラーだけを持つ企業向けに設計されています。Modification packages are designed for enterprises that do not own the code of the application and only have the installer. MSIX パッケージ化ツールの最新バージョン (Windows 10 バージョン1809以降) を使用して、変更パッケージを作成できます。You can create a modification package by using the latest version of the MSIX packaging tool (for Windows 10 version 1809 or later). アプリケーションのコードがある場合は、 アプリ拡張機能を作成することもできます。If you have the code for the application, you can alternatively create an app extension.

メインアプリへの厳密なバインドを持つ変更パッケージを作成する場合は、変更パッケージのマニフェストの依存関係としてメインアプリを宣言できます。If you want to create a modification package that has a strict binding to the main app, you can declare the main app as a dependency in the modification package’s manifest.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App"/>
</Dependencies>

次の例では、別の証明書または発行元を指定する方法を示します。The following example demonstrates how to specify a different certificate or publisher.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App" Publisher="CN=Contoso, C=US" />
</Dependencies>

これは、変更パッケージとメインパッケージ間の関係が1対1の場合の単純な構成です。This is a simple configuration if the relationship between the modification package and main package is one-to-one. 一般的なカスタマイズでは、HKEY_CURRENT_USER または HKEY_CURRENT_USERCLASS の下にレジストリキーが必要になることがよくあります。Typical customizations often require registry keys under HKEY_CURRENT_USER or HKEY_CURRENT_USERCLASS. MSIX パッケージ内には、レジストリキーをキャプチャするためのユーザー .dat ファイルとユーザーファイルが用意されています。Inside our MSIX package we have User.dat and Userclass.dat files to capture the registry keys. Hkcusoftware の下にレジストリキーが必要な場合は、、Hklm\software を作成する必要があります * (レジストリと同様に、dat が使用されます * )。You will need to create User.dat if you need registry keys under HKCU\Software* (just like Registry.dat is used for HKLM\Software*). HKCU\Sofware\Classes の下にキーが必要な場合は、Userclass を使用し * ます。Use Userclass.dat if you need keys under HKCU\Sofware\Classes*.

次に、.dat ファイルを作成する一般的な方法を示します。Here are the typical ways to create a .dat file:

  • Regedit を使用してファイルを作成します。Use Regedit to create a file. Regedit で hive を作成し、必要なキーを挿入します。Create a hive in Regedit and insert the necessary keys. 右クリックして、[エクスポート] をクリックし、hive ファイルとして保存します。Than right click, export and save-as hive file. ファイルの名前は、必ずユーザー .dat またはユーザー名にしてください。Make sure to name the file either User.dat or Userclass.dat

  • API を使用して、必要なファイルを作成します。Use an API to create necessary files. Orsavehive関数を使用すると、.dat ファイルを保存できます。You can use the ORSaveHive function to save a .dat file. ファイルにイーサまたはという名前を設定します。Make sure to name the file ether User.dat or Userclass.dat

必要な変更を加えたら、他の MSIX パッケージと同様に変更パッケージを作成できます。After you’ve made the necessary changes, you can create the modification package like any other MSIX package. その後、現在の展開設定を使用してパッケージを展開できます。Then you can deploy the package with the current deployment set-up. メインアプリを再起動すると、変更パッケージによって行われた変更が表示されます。When you relaunch your main app, you can see the changes that the modification package has made. 変更パッケージを削除することを選択した場合、メインアプリは変更パッケージなしで状態に戻ります。If you choose to remove the modification package, your main app will revert to a state without the modification package.

デバイスにインストールされている変更パッケージを確認するFind out what modification packages are installed on your device

PowerShell を使用すると、次のコマンドを使用して、インストールされている変更パッケージを確認できます。Using PowerShell, you can see installed modification packages using the following command.

Get-AppPackage -PackageTypeFilter Optional

Windows 10 バージョン1809での変更パッケージModification packages on Windows 10, version 1809

Windows 10 バージョン1809では、変更パッケージに、メインパッケージが想定どおりに実行されるように、レジストリに設定する必要がある構成を含めることができます。On Windows 10, version 1809, modification packages can include configurations needed to be set in the registry such that the main package will run as expected. つまり、メインアプリケーションでは、プラグインが存在するかどうかを確認するためにレジストリを利用します。Meaning your main application leverages the registry to view whether a plug-in exists. メイン パッケージと修正パッケージを展開すると、アプリケーションは、実行時にメイン パッケージと修正パッケージの両方の仮想レジストリ (VREG) を認識します。When you deploy the main package and the modification package, at runtime the application will view the virtual registry (VREG) of both the main package and the modification package.

メイン パッケージは VREG を使用して次のことを行っている可能性があることに注意してください。Note that your main package may be using the VREG to do the following things:

  • プラグインのファイル (DLL) を読み込む場所を表示しています。Viewing where to load the file (the DLL) of the plug-in. この場合、ファイルがパッケージの一部であることを確認します。If this is the case, then ensure that the file is part of the package. これにより、メイン パッケージは実行時にファイルにアクセスできます。By doing this, main package is able to access the file at runtime.
  • VREG キーの値を確認する場所を認識する。Viewing where to see the value of the VREG keys. メイン パッケージは VREG に存在する値を探しているかもしれません。Your main package may be looking for a value to exist in the VREG. 修正パッケージを手動で作成するか、ツールを使用して作成するときは、値が正しいことを確認します。When you create your modification package either by hand or using our tool, ensure that the value is correct.

Windows 10 バージョン1903以降の変更パッケージModification packages on Windows 10, version 1903, and later

Windows 10 Version 1903 では、次の機能が追加されました。The following features were added to Windows 10, version 1903.

マニフェストの更新Manifest update

MSIX 修正パッケージのマニフェストに次の要素のサポートが追加されました。We’ve added support for the following element to the MSIX modification package’s manifest.

<Properties>
   <rescap6:ModificationPackage>true</rescap6:ModificationPackage>
</Properties>

修正パッケージがバージョン 1903 以降で動作するようにするには、修正パッケージのマニフェストにこの要素を含める必要があります。To ensure that modification packages work in version 1903 or later, the modification package's manifest must include this element. MSIX Packaging Tool の 1 月リリースを使用して MSIX 修正パッケージをパッケージ化した場合、この操作は自動的に行われます。This will be done for you if you package your MSIX modification package using the January release of the MSIX packaging tool. このリリース前に Microsoft のツールを使用してパッケージを変換している場合は、Microsoft のツールで既存のパッケージを編集してこの新しい要素を追加できます。If you've converted a package using our tool prior to the release, you can edit your existing package in our tool to add this new element. さらに、ユーザーが修正パッケージをインストールすると、そのパッケージによってメイン アプリケーションが変更される可能性があることを示すアラートが出力されます。In addition, if users install the modification package, they will be alerted that the package may modify the main application.

バージョン1903より前に作成された変更パッケージを使用している場合は、パッケージマニフェストを編集して属性を10.0.18362.0 に更新する必要が MaxVersionTested あります。If you are using a modification package that was created before version 1903, it is necessary to edit the package manifest to update the MaxVersionTested attribute to 10.0.18362.0.

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

MSIX Packaging Tool を使用して修正パッケージを作成するCreate a modification package using the MSIX Packaging Tool

MSIX Packaging Tool を使用して修正パッケージを作成できます。You can create a modification package with the MSIX Packaging Tool:

  • メイン パッケージを指定します。Specify the main package. 変換操作を行っているマシンでメイン パッケージの MSIX バージョンが利用可能であることを確認します。Be sure to have the MSIX version of your main package available on your machine that you are converting on. そうでない場合は、発行元とメイン アプリケーションの情報を手動で入力する必要があります。If not than we will ask you to manually provide the publisher and main application information. また、一部のカスタマイズでは、メイン アプリケーションがマシンにインストールされている必要があります。Also some customization require that your main application is installed on your machine. 修正パッケージ MPTModification Package MPT

  • 変換が完了したら、パッケージ エディターを使用してパッケージを変更します。Modify the package once it has gone through conversion using the package editor. 修正パッケージの VREG に特定の値が設定されていることがメイン パッケージから求められる場合があります。There may be a case where the main package requires your modification package to have certain values in their VREG. その場合は、パッケージを適切に編集します。This is where you would go and edit the package appropriately.

MakeAppx.exe を使用して修正パッケージを作成するCreate a modification package using MakeAppx.exe

Windows 10 SDK に含まれている MakeAppX.exe ツールを使用して、手動で変更パッケージを作成できます。You can create a modification package manually by using the MakeAppX.exe tool that is included in the Windows 10 SDK.

  • マニフェスト内で、メイン パッケージを指定します。In the manifest, specify the main package. 発行元とメイン パッケージ名を含めます。Include the publisher and the main package name.

    <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 を作成して、修正パッケージを読み込むために必要なレジストリ キーをすべて作成します。Create Registry.dat, User.dat and Userclass.dat to create whatever registry keys are needed to load your modification package. これは、メイン アプリケーションでカスタム レジストリ キーを認識する必要がある場合にのみ必要です。This is only required if you need your main application to view custom registry keys. すべてがコンテナー内で実行されているため、実行時にメイン パッケージと修正パッケージの仮想レジストリが統合され、メイン パッケージが修正パッケージの仮想レジストリを認識できるようになります。Remember that since everything is running inside a container, at runtime the main package and the modification package virtual registry will merge such that main package can view the modification packages virtual registry.

このプロセスでは、メイン アプリケーションの実行可能ファイルが仮想ファイル システム (VFS) にない限り、ファイル システムのプラグインとカスタマイズもサポートされます。This process also supports file system plug-ins and customizations, as long as the executable of the main application is not in a virtual file system (VFS). これは、メイン パッケージがメイン パッケージと修正パッケージのすべての VFS を取得できるようにするためです。This is to ensure that the main package will get all the VFS of the main package and the modification package.