Передача параметров установки в приложение с помощью Установщика приложений

При распространении приложения с помощью MSIX вы можете настроить приложение таким образом, чтобы параметры строки запроса, определенные в URI загрузки или установки, передаются в приложение при запуске после того, как пользователь щелкает URI скачивания или установки. Это работает независимо от того, впервые ли пользователь устанавливает приложение или если приложение было установлено ранее. В этой статье показано, как настроить упаковаированное приложение MSIX и его универсальный код ресурса (URI), чтобы воспользоваться преимуществами этой функции. Это может быть полезно, если вы хотите отслеживать или обрабатывать различные установки на основе источника, типа скачивания и т. д. и будут работать для веб-загрузки, а также в любых других случаях, когда пользователь щелкает универсальный код ресурса (URI), например из кампании электронной почты. Дополнительные сведения см. в этой записи блога.

Настройка приложения для активации протокола

Первое, что нужно сделать, — зарегистрировать приложение для запуска с помощью определяемого пользовательского протокола . При вызове этого протокола приложение запускается, и все prameters, указанные в URI, передаются аргументам события активации приложения при его запуске. Чтобы зарегистрировать протокол, добавьте запись расширения протокола в узел расширений приложений в файле appxmanifest.xml MSIX:

<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 для определения типа активации, используемого для создания экземпляра приложения (можно также обрабатывать параметры с помощью другого метода). При запуске или активации приложения с параметрами sting запроса из 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, он получит строку запроса URI после активации 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