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

MSIX を使用してアプリを配布する場合は、ユーザーがダウンロード/インストール URI をクリックした後に、ダウンロード/インストール URI で定義したクエリ文字列パラメーターがアプリ起動時にアプリに渡されるようにアプリを構成できます。 これは、ユーザーが初めてアプリをインストールする場合でも、アプリが以前にインストールされている場合でも機能します。 この記事では、この機能を利用するためにパッケージ アプリケーションとそのダウンロード/インストール 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 パッケージ プロジェクトを使用している場合は、package.appxmanifest ファイルをダブルクリックし、[宣言] タブに移動して、[使用可能な宣言] で [プロトコル]を選択することで、既定のマニフェスト エディターを使用してカスタム プロトコルを定義することもできます。

Protocol declaration in package.appxmanifest

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

アプリの起動時にアプリに渡されるインストール パラメーターを処理するには、アプリケーションにコードを実装する必要があります。 次のコード例では、AppInstance.GetActivatedEventArgs メソッドを使用して、アプリのインスタンス化に使用されるアクティブ化の種類を決定します (別のメソッドを使用してパラメーターを処理することもできます)。 インストール URI からのクエリ文字列パラメーターを使用してアプリを起動またはアクティブ化すると (次のセクションの定義を参照)、アクティブ化の種類は、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