透過應用程式安裝程式將安裝參數傳遞至您的應用程式

使用 MSIX 散發應用程式時,您可以設定應用程式,讓您在下載/安裝 URI 中定義的查詢字串參數會在應用程式啟動時傳遞至您的應用程式,當使用者按一下下載/安裝 URI 之後。 不論使用者第一次安裝應用程式,還是先前已安裝應用程式,都適用此功能。 本文說明如何設定已封裝的應用程式及其下載/安裝 URI,以利用這項功能。 如果您想要根據來源、下載類型等來追蹤或處理不同的安裝,而且適用于網頁下載,以及使用者按一下 URI 的任何其他案例,例如,從電子郵件行銷活動中,這會很有用。 如需詳細資訊,請參閱此 部落格文章

設定您的應用程式以進行通訊協定啟用

第一件事是註冊您的應用程式,以使用您定義的 自訂通訊協定 來啟動它。 叫用此通訊協定時,會啟動您的應用程式,並在啟動應用程式時,將 URI 中指定的任何 prameter 傳遞至應用程式的啟用事件引數。 您可以在 MSIX appxmanifest.xml 檔案的 [應用程式延伸模組] 節點中新增通訊協定延伸模組專案來註冊通訊協定:

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

如果您使用Windows 封裝專案,您也可以按兩下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