CustomInstallActions
CustomInstallActions 要素には、どのカスタム インストール アクションをいつ実行するかについてのすべての定義が含まれます。この要素は MicrosoftGame.config ファイル内で 1 つのインスタンスしか宣言できません。必須の子要素として Folder が 1 つあります。これはすべてのカスタム アクションに必要なすべてのファイルを含むフォルダーを指定する文字列です。このフォルダーにはサブフォルダーを含めることができます。パッケージが任意のカスタム アクション実行可能ファイルの依存関係を含み、それらが各々の適切な読み込みパスにあることを保証する責任はあなたにあります。タイトルをパッケージ化するとき、
makepkg はこの CustomInstallActions 要素を、生成される appxmanifest.xml 内の MSIX windows.customInstall 拡張機能に変換します。そこでは同等の要素が <CustomInstall> であり、Folder は 属性 として表現されます。その <CustomInstall> 形式を自分で作成する必要はありません。MicrosoftGame.config では、後述の ゲーム構成ファイルの変更 の例に示すとおり、Folder は CustomInstallActions の子 要素 です。指定した Folder に、主要なゲーム実行可能ファイルやその他のファイルを配置してはいけません。ここは明示的にカスタム インストール ファイル専用です。
アクションの種類
カスタム インストール拡張の 3 つの子ノードは、特定のカスタム アクションが実行されるタイミングを指定します。カスタム インストール アクションには 3 つの種類があります。- Install action: プラットフォームがアプリの最初の起動前に実行するアクション
- Repair action: ユーザーが Repair または Reset を選択したときに実行されるアクション
- Uninstall action: ユーザーがアプリをアンインストールしたときに実行されるアクション
名前とは裏腹に、install action はパッケージがインストールされたときには実行されません。各アクションのタイプはアプリのライフサイクルの特定の時点で実行され、InstallAction はタイトルの 最初の起動直前 に 1 回実行されます (これは、プラットフォームが必要な UAC プロンプトを表示できる最初の時点です)。「Install」、「Repair」、「Uninstall」は、そのアクションが属するライフサイクルの カテゴリ を示すもので、実行される瞬間を示すものではありません。実際のパッケージ インストール/ダウンロード時に実行される処理が必要な場合、カスタム インストール アクションはその仕組みではありません。完全なシーケンスについては カスタム アクションの使用方法 を参照してください。
Uninstall アクションは、Install または Repair アクションが実行された場合にのみ実行されます。システムは Name プロパティを使用してこの状態を追跡します。このため、Install/Repair/Uninstall アクションが同じ Name を持つことが重要です。
アクションの構成要素
File
各アクションについて、実行するファイルを指定する必要があり、このファイルはパッケージ内に存在している必要があります。パスを指定する場合、それは暗黙的に CustomInstallActions の Folder パスに対する相対パスになります。絶対パスを指定することはできません。パスはバックスラッシュ (\) で始まってはいけません。Name
アクションに Name を指定する必要があります。この Name は親の Actions ノード内で一意である必要がありますが、異なる Actions ノード間では共有できます。たとえば、File=“MySetup.exe” と Name=“abc123” を、InstallAction と RepairAction の両方として指定できます。一方、2 つの InstallAction 要素がある場合、それぞれ異なる Name を持つ必要があります。実行可能ファイルが変更されない限り、同じ実行可能ファイルに対してはパッケージ バージョン間で同じ Name を使用する必要があります。Name はアクションの識別子として使用され、プラットフォームがどのアクションが正常に実行されたか、および更新されたパッケージに対して実行する必要があるかを追跡できるようにします。更新されたパッケージが、すでに正常に実行された Name を持つカスタム アクションを指定する場合、プラットフォームは更新時にこのアクションをスキップします。引数リストの違いは識別性の違いを構成しません。更新された パッケージで、同じ実行可能ファイルを異なる引数で実行したい場合は、異なる Name を指定する必要があります。宣言する Name を適切に構成し、バージョン間で追跡する責任はあなたにあります。
Arguments
各カスタム インストール アクションには 3 番目の要素である argument があり、再配布可能コマンドを実行するために必要な引数を含めることができます。カスタム アクションの使用方法
アンチチート ソフトウェアのインストールは通常、ユーザーが管理者権限を持っていることを必要とし、一般的に - カスタム アクションは非常に強力な機能であるため - プラットフォームは、カスタム アクションを持つすべてのパッケージに対して管理者権限を要求します。管理者権限で実行される操作については、Windows はアプリの最初の実行時にユーザー アカウント制御 (UAC) プロンプトを表示することを要求します。ユーザー ワークフローは次のとおりです。- ゲームの Microsoft Store ページには、インストールに昇格権限が必要かどうか、インストールがカスタム アクションを実行するかどうか、およびこれがユーザーにとってどのような意味を持つかを含む要件の説明が含まれます。この情報は、ユーザーがゲームの購入について十分な情報に基づいた決定を下せるように提供されます。
- ユーザーがこれらの制約と影響に納得している場合、Install を選択します。
- プラットフォームは、パッケージにカスタム アクションが含まれていることを検出し、カスタム アクションを実行する必要があるという事実を記録します。ただし、初期インストール フェーズ中はカスタム アクションを実行しません。代わりに、カスタム アクションはユーザーが最初にゲームを起動したときに実行されます。
- ゲームの最初の起動時、プラットフォームがカスタム アクションを実行しようとする時点で、UAC プロンプトが表示されます。ユーザーは管理者資格情報を提供し、昇格を受け入れる必要があります。パッケージに複数のカスタム アクションが含まれていても、ユーザーに表示される UAC プロンプトは 1 つだけです。カスタム アクションの 1 つ以上が変更されない限り、更新時にさらに UAC プロンプトが表示されることはありません。ゲームがアンインストールされるときには UAC プロンプトが表示されます。
カスタム インストール アクションは、メインの MSIXVC パッケージ内でのみサポートされます。フレームワーク パッケージ、オプション パッケージ、変更パッケージ、その他の種類のパッケージではサポートされません。
カスタムのインストール、修復、およびアンインストール アクションは、小売の Microsoft Store デプロイ パイプラインによって実行されます。開発用にローカルでパッケージをインストールした場合 (たとえば、
wdApp install を使用してルースな .msixvc をインストールする場合、または Add-AppxPackage を使用してパッケージを登録する場合) には実行されません。ローカル開発でのインストールでは、パッケージがアクションを正しく 宣言 していること (それらが windows.customInstall 拡張機能として生成される appxmanifest.xml に表示されること) を検証することは可能ですが、そのパスではカスタム アクションの実行可能ファイル自体は呼び出されません。エンドツーエンドで実行されるアクションを検証するには、Store またはサンドボックスのフロー経由でタイトルをインストールしてください。