Передача параметров установки в приложение с помощью Установщика приложений
При распространении приложения с помощью 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 , перейдя на вкладку "Объявления" и выбрав "Протокол " в разделе "Доступные объявления":
Написание кода для обработки параметров при запуске приложения после установки
Вам потребуется реализовать код в приложении для обработки параметров установки, которые будут переданы приложению при его запуске. В приведенном ниже примере кода используется метод 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) должен содержать:
- Протокол ms-appinstaller , вызывающий Установщик приложений.
- Уникальный параметр activationUri , указывающий на пользовательский протокол приложения и параметры установки, которые необходимо передать приложению при его запуске.
- Пользовательский протокол приложения, параметр и его значение.
В приведенных ниже примерах 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