変更パッケージを使用して Enterprise アプリをカスタマイズする

特に企業では、アプリケーションのエクスペリエンスをカスタマイズする機能が重要です。 IT プロフェッショナルには、ユーザーのニーズに合わせてアプリケーションをカスタマイズすることが、Windows 10 への移行に不可欠であることがわかっています。 MSI を使用してパッケージ化されたアプリケーションをカスタマイズする場合は、IT プロフェッショナルが開発者からパッケージを取得し、ニーズに合わせてカスタマイズしてインストーラーを再パッケージ化する必要があることをよく理解しておいてください。 これは企業にとってコストのかかる作業です。 今後は、再パッケージ化が不要になるように、カスタマイズとメインアプリケーションを分離する必要があります。 これにより、企業は、カスタマイズの制御を維持しながら、開発者から最新の更新プログラムを取得できます。

Windows 10 Version 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>

これは、変更パッケージとメインパッケージ間の関係が1対1の場合の単純な構成です。 一般的なカスタマイズでは、HKEY_CURRENT_USER または HKEY_CURRENT_USERCLASS の下にレジストリキーが必要になることがよくあります。 MSIX パッケージ内には、レジストリキーをキャプチャするためのユーザー .dat ファイルとユーザーファイルが用意されています。 Hkcusoftware の下にレジストリキーが必要な場合は、、Hklm\software を作成する必要があります * (レジストリと同様に、dat が使用されます * )。 HKCU\Sofware\Classes の下にキーが必要な場合は、Userclass を使用し * ます。

次に、.dat ファイルを作成する一般的な方法を示します。

  • Regedit を使用してファイルを作成します。 Regedit で hive を作成し、必要なキーを挿入します。 右クリックして、[エクスポート] をクリックし、hive ファイルとして保存します。 ファイルの名前は、必ずユーザー .dat またはユーザー名にしてください。

  • API を使用して、必要なファイルを作成します。 Orsavehive関数を使用すると、.dat ファイルを保存できます。 ファイルにイーサまたはという名前を設定します。

必要な変更を加えたら、他の MSIX パッケージと同様に変更パッケージを作成できます。 その後、現在の展開設定を使用してパッケージを展開できます。 メインアプリを再起動すると、変更パッケージによって行われた変更が表示されます。 変更パッケージを削除することを選択した場合、メインアプリは変更パッケージなしで状態に戻ります。

デバイスにインストールされている変更パッケージを確認する

PowerShell を使用すると、次のコマンドを使用して、インストールされている変更パッケージを確認できます。

Get-AppPackage -PackageTypeFilter Optional

Windows 10 Version 1809 の変更パッケージ

Windows 10 Version 1809 では、メインパッケージが想定どおりに実行されるように、変更パッケージにレジストリに設定する必要がある構成を含めることができます。 つまり、メインアプリケーションでは、プラグインが存在するかどうかを確認するためにレジストリを利用します。 メイン パッケージと修正パッケージを展開すると、アプリケーションは、実行時にメイン パッケージと修正パッケージの両方の仮想レジストリ (VREG) を認識します。

メイン パッケージは VREG を使用して次のことを行っている可能性があることに注意してください。

  • プラグインのファイル (DLL) を読み込む場所を表示しています。 この場合、ファイルがパッケージの一部であることを確認します。 これにより、メイン パッケージは実行時にファイルにアクセスできます。
  • VREG キーの値を確認する場所を認識する。 メイン パッケージは VREG に存在する値を探しているかもしれません。 修正パッケージを手動で作成するか、ツールを使用して作成するときは、値が正しいことを確認します。

Windows 10、バージョン1903以降の変更パッケージ

Windows 10 Version 1903 では、次の機能が追加されました。

マニフェストの更新

MSIX 修正パッケージのマニフェストに次の要素のサポートが追加されました。

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

修正パッケージがバージョン 1903 以降で動作するようにするには、修正パッケージのマニフェストにこの要素を含める必要があります。 MSIX Packaging Tool の 1 月リリースを使用して MSIX 修正パッケージをパッケージ化した場合、この操作は自動的に行われます。 このリリース前に Microsoft のツールを使用してパッケージを変換している場合は、Microsoft のツールで既存のパッケージを編集してこの新しい要素を追加できます。 さらに、ユーザーが修正パッケージをインストールすると、そのパッケージによってメイン アプリケーションが変更される可能性があることを示すアラートが出力されます。

バージョン1903より前に作成された変更パッケージを使用している場合は、パッケージマニフェストを編集して属性を10.0.18362.0 に更新する必要が MaxVersionTested あります。

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

MSIX Packaging Tool を使用して修正パッケージを作成する

MSIX Packaging Tool を使用して修正パッケージを作成できます。

  • メイン パッケージを指定します。 変換操作を行っているマシンでメイン パッケージの MSIX バージョンが利用可能であることを確認します。 そうでない場合は、発行元とメイン アプリケーションの情報を手動で入力する必要があります。 また、一部のカスタマイズでは、メイン アプリケーションがマシンにインストールされている必要があります。 修正パッケージ 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 パラメーターを使用することをお勧めします。