Tarefas de pré-instalação
Os OEMs e as MOs têm permissão para enviar aplicativos pré-instalados na imagem do dispositivo. Alguns desses aplicativos pré-instalados exigem que as tarefas sejam executadas sem interação do usuário e, muitas vezes, antes que o usuário final abra o aplicativo pela primeira vez; como um aplicativo de pesquisa sobre o produto ou um registro de servidor de SMS. Da mesma forma, alguns aplicativos precisarão que tarefas de manutenção sejam executadas sem interação do usuário após a atualização de um aplicativo. As tarefas de pré-instalação e atualização fornecem o mecanismo para permitir que as tarefas sejam executadas em segundo plano sem que o aplicativo seja previamente instalado ou quando ele for atualizado.
Há dois tipos de tarefa de implantações disponíveis para UAPs: PreInstallConfigTask e UpdateTask. Ambos são IBackgroundTasks.
Aqui estão as regras gerais que regem essas tarefas.
- O manifesto do aplicativo pode conter apenas um PreInstallConfigTask e um UpdateTask.
- As tarefas de implantação são aplicáveis a qualquer tipo de plataforma.
- As tarefas de implantação podem ser executadas após a conclusão e confirmação da operação de implantação.
- As tarefas de implantação com falha não são reiniciadas.
- Tarefas de implantação com falha não afetam a implantação bem-sucedida do aplicativo.
- As tarefas de implantação não são reiniciadas após a reinicialização.
- As tarefas de implantação não devem depender umas das outras.
Exemplos de código
Exemplo de UpdateTask
Há suporte para a tarefa de atualização para qualquer caminho de atualização possível, por exemplo:
- .xap para .xap
- .xap para .appx
- .xap para .appxbundle
- .appx para .appx
- .appx para .appxbundle
- .appxbundle para .appxbundle
Este é o exemplo de manifesto .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>
Este é o exemplo de código 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();
}
}
Exemplo de tarefa PreInstallConfigTask
Este é o exemplo de manifesto .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>
Este é o exemplo de código 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();
}
}
Pré-instala tarefas para Aplicativos Clássicos do Windows
Há três tipos de tarefa de implantações disponíveis para Aplicativos Clássicos do Windows, conforme mostrado na tabela abaixo. Se você implantar seu Aplicativo Clássico do Windows em Windows 10, essas tarefas funcionarão conforme o esperado.
Tarefa | Descrição |
---|---|
PREINSTALL _OEM_TASK | Um aplicativo pré-instalado de 1ª ou 2ª parte pode ser executado na tarefa de tempo de instalação sem exigir que o aplicativo seja iniciado pelo usuário final. |
UPDATE_TASK | Depois que um aplicativo for atualizado, incluindo .appx para .uap, uma tarefa de manutenção poderá ser executada para executar quaisquer tarefas relacionadas à migração, também sem a necessidade de interação do usuário. |
CONVERGÊNCIA | Windows 8.1 e convergência de código de telefone Windows 8.1. Além disso, habilite o esquema de manifesto .appx unificado. |