Предустановка задач
Изготовителям оборудования и МО разрешено поставлять предустановленные приложения в образе устройства. Некоторые из этих предустановленных приложений требуют выполнения задач без участия пользователя и часто до того, как конечный пользователь откроет приложение в первый раз; например, приложение для опроса продукта или регистрация SMS-сервера. Аналогичным образом, некоторым приложениям потребуется выполнить задачи обслуживания без участия пользователя после обновления приложения. Задачи предварительной установки и обновления предоставляют механизм, позволяющий выполнять задачи в фоновом режиме без установки приложения или при его обновлении.
Существует два типа задач развертывания, доступных для USP: PreInstallConfigTask и UpdateTask. Оба являются IBackgroundTasks.
Ниже приведены общие правила, управляющие этими задачами.
- Манифест приложения может содержать только одну preInstallConfigTask и одну UpdateTask.
- Задачи развертывания применимы к любому типу платформы.
- Задачи развертывания могут выполняться после завершения и фиксации операции развертывания.
- Неудачные задачи развертывания не перезапускаются.
- Неудачные задачи развертывания не влияют на успешное развертывание приложения.
- Задачи развертывания не перезапускаются после перезагрузки.
- Задачи развертывания не должны зависеть друг от друга.
Примеры кода
Пример UpdateTask
Задача обновления поддерживается для любого возможного пути обновления, например:
- С XAP до XAP
- .xap to .appx
- .xap to .appxbundle
- .appx to .appx
- .appx to .appxbundle
- .appxbundle to .appxbundle
Ниже приведен пример appx-манифеста:
<Package>
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>App.dll</Path>
<ActivatableClass ActivatableClassId="App.UpdateTask" ThreadingModel="MTA"/>
</InProcessServer>
</Extension>
</Extensions>
<Applications>
<Application>
<Extensions>
<Extension Category="windows.updateTask" EntryPoint="App.UpdateTask">
</Extension>
</Extensions>
</Application>
</Applications>
</Package>
Ниже приведен пример кода C#.
public sealed class UpdateTask : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
CancellationTokenSource cts = new CancellationTokenSource();
var deferral = taskInstance.GetDeferral();
taskInstance.Canceled +=
(sender, reason) =>
{
cts.Cancel();
};
try
{
await MigrateApp(); // Do app migration/update steps.
}
catch (TaskCanceledException x)
{
// do nothing on cancelation.
}
deferral.Complete();
}
}
Пример задачи PreInstallConfigTask
Ниже приведен пример appx-манифеста:
<Package>
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>App.dll</Path>
<ActivatableClass ActivatableClassId="App.PreInstallConfigTask" ThreadingModel="MTA"/>
</InProcessServer>
</Extension>
</Extensions>
<Applications>
<Application>
<Extensions>
<Extension Category="windows.preInstalledConfigTask" EntryPoint=" App.PreInstallConfigTask">
</Extension>
</Extensions>
</Application>
</Applications>
</Package>
Ниже приведен пример кода C#.
public sealed class PreInstallConfigTask : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
CancellationTokenSource cts = new CancellationTokenSource();
var deferral = taskInstance.GetDeferral();
taskInstance.Canceled +=
(sender, reason) =>
{
cts.Cancel();
};
try
{
await DownloadContactList(); // Do app migration/update steps.
}
catch (TaskCanceledException x)
{
// do nothing on cancelation.
}
deferral.Complete();
}
}
Предустановка задач для классических приложений Windows
Классическим приложениям для Windows доступны три типа задач развертывания, как показано в таблице ниже. Если вы развернете классическое приложение для Windows на Windows 10, эти задачи будут работать должным образом.
Задача | Описание |
---|---|
ПРЕДВАРИТЕЛЬНОЕ _OEM_TASK | Предустановленное приложение от 1 или 2 сторон может выполняться во время установки, не требуя запуска приложения конечным пользователем. |
UPDATE_TASK | После обновления приложения, включая .appx до .uap, можно запустить задачу обслуживания для выполнения любых задач, связанных с миграцией, в том числе без вмешательства пользователя. |
СХОДИМОСТИ | Windows 8.1 и Windows 8.1 Конвергенция кода телефона. Кроме того, включите унифицированную схему манифеста APPX. |