アプリ インストーラーを使用してインストール パラメーターをアプリに渡す

MSIX を使用してアプリを配布する場合は、ユーザーがダウンロード/インストール URI をクリックした後に、ダウンロード/インストール URI で定義したクエリ文字列パラメーターがアプリの起動時にアプリに渡されるアプリを構成できます。 これは、ユーザーが初めてアプリをインストールする場合でも、アプリが以前にインストールされた場合でも機能します。 この記事では、MSIX パッケージ アプリケーションとそのダウンロード/インストール URI を構成して、この機能を利用する方法について説明します。 これは、ソースやダウンロードの種類などに基づいてさまざまなインストールを追跡または処理し、Web ダウンロードや、ユーザーが電子メール キャンペーンなどの URI をクリックするその他のケースで機能する場合に便利です。 詳細については、このブログ投稿 を参照してください

プロトコルのアクティブ化用にアプリケーションを構成する

まず、定義したカスタム プロトコルを使用してアプリを起動するためにアプリ を登録 します。 このプロトコルが呼び出されると、アプリケーションが起動され、URI で指定された任意のプラグメーターが、アプリの起動時にアプリのアクティブ化イベント引数に渡されます。 プロトコルを登録するには、MSIX の appxmanifest.xml ファイルの [アプリケーション拡張機能] ノードにプロトコル拡張エントリを追加します。

<Application>
...
   <Extensions>
     <uap:Extension Category="windows.protocol">
        <uap:Protocol Name="my-custom-protocol"/>
     </uap:Extension>
   </Extensions>
  
...
</Application>

Windows Packaging Projectを使用している場合は 、package.appxmanifest ファイルをダブルクリックし、[宣言] タブに移動し、[使用可能な宣言] で [プロトコル]を選択することで、既定のマニフェスト エディターを使用してカスタム プロトコルを定義 することもできます。

package.appxmanifest でのプロトコル宣言

インストール後にアプリを起動するときにパラメーターを処理するコードを記述する

アプリの起動時にアプリに渡されるインストール パラメーターを処理するには、アプリケーションにコードを実装する必要があります。 次のコード例では 、AppInstance.GetActivatedEventArgs メソッドを使用して、アプリのインスタンス化に使用されるアクティブ化の種類を決定します (別のメソッドを使用してパラメーターを処理することもできます)。 アプリが起動またはアクティブ化され、インストール URI からのクエリ sting パラメーターが使用されると (次のセクションの定義を参照)、アクティブ化の種類は、appxmanifest.xml で宣言されたカスタム プロトコルとダウンロード/インストール URI によって定義されるプロトコルのアクティブ化になります。 アクティブ化イベントの引数は ProtocolActivatedEventArgs 型であり、次のコードで使用されています。


using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;

public static void Main(string[] cmdArgs)
{
            
    var activationArgs = AppInstance.GetActivatedEventArgs();
    switch (activationArgs.Kind)
    {
        //Install parameters will be passed in during a protocol activation
        case ActivationKind.Protocol:
        HandleProtocolActivation(activationArgs as ProtocolActivatedEventArgs);
        break;
        case ActivationKind.Launch:
        //Regular launch activation type
        HandleLaunch(activationArgs as LaunchActivatedEventArgs);
        break;
        default:
        break;
     }       
    

     static void HandleProtocolActivation(ProtocolActivatedEventArgs args)
     {

         if (args.Uri != null)
        {
            //Handle the installation parameters in the protocol uri
            handleInstallParameter(args.Uri.ToString());

        }
            
}

カスタム アクティブ化プロトコルとパラメーターをインストール URI に追加する

インストール パラメーターを処理するためにアプリを設定したら、アプリのダウンロード/インストール URI をカスタマイズして、ユーザーが URI をクリックした後に、起動時にアプリに渡される一意に定義されたパラメーターを含めすることができます。 URI には次が含まれている必要があります。

  1. アプリケーション を呼び出す ms-appinstaller アプリ インストーラー。
  2. アプリのカスタム プロトコルと、アプリの起動時にアプリに渡すインストール パラメーターを示す一意のパラメーター activationUri。
  3. アプリのカスタム プロトコルと パラメーターとその値。

次の例の URI では、カスタム プロトコル my-custom-protocol を定義し、パラメーター my-parameter を定義し、 値 my-param-value を指定しました。 ユーザーが URI をクリックした後にアプリが起動すると 、activationUri の後に URI のクエリ文字列部分が表示されます。この場合 、my-custom-protocol:?my-parameter=my-param-value になります。

ms-appinstaller:?source=https://contoso.com/myapp.appinstaller&activationUri=my-custom-protocol:?my-parameter=my-param-value
ms-appinstaller:?source=https://contos.com/myapp.msix&activationUri=my-custom-protocol:?my-parameter=my-param-value