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

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

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

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