アプリケーションのエクスペリエンスをカスタマイズする機能は、特に企業にとって重要です。 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>
変更パッケージとメイン パッケージの関係が 1 対 1 の場合、これは単純な構成です。 一般的なカスタマイズでは、多くの場合、HKEY_CURRENT_USERまたはHKEY_CURRENT_USERCLASSのレジストリ キーが必要です。 MSIX パッケージ内には、レジストリ キーをキャプチャするためのUser.datファイルとUserclass.dat ファイルがあります。 HKCU\Software* の下にレジストリ キーが必要な場合は、User.datを作成する必要があります (HKLM\Software* に使用されるRegistry.datと同様)。 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 以降で動作するようにするには、変更パッケージのマニフェストにこの要素を含める必要があります。 これは、MSIX パッケージ化ツールの 1 月リリースを使用して MSIX 変更パッケージをパッケージ化する場合に行われます。 リリース前にツールを使用してパッケージを変換した場合は、ツールで既存のパッケージを編集して、この新しい要素を追加できます。 さらに、ユーザーが変更パッケージをインストールすると、パッケージがメイン アプリケーションを変更する可能性があることを通知されます。
バージョン 1903 より前に作成された変更パッケージを使用している場合は、パッケージ マニフェストを編集して、 MaxVersionTested 属性を 10.0.18362.0 に更新する必要があります。
<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 パラメーターを使用することをお勧めしています。
対立の解決
複数の変更パッケージが同じ値を変更しようとした場合、変更パッケージの名前の アルファベット順 を考慮して競合が解決されます。