Tâches de préinstallation
Les OEM et les MO sont autorisés à expédier des applications préinstallées dans l’image de l’appareil. Certaines de ces applications préinstallées nécessitent que des tâches s’exécutent sans intervention de l’utilisateur et souvent avant que l’utilisateur final ouvre l’application pour la première fois, par exemple, une application d’enquête sur les produits ou une inscription de serveur SMS. De même, certaines applications auront besoin de tâches de maintenance pour s’exécuter sans intervention de l’utilisateur une fois qu’une application a été mise à jour. Les tâches de préinstallation et de mise à jour fournissent le mécanisme permettant aux tâches de s’exécuter en arrière-plan sans que l’application soit installée ou mise à jour.
Deux types de tâches de déploiement sont disponibles pour les uaPs : PreInstallConfigTask et UpdateTask. Les deux sont des IBackgroundTasks.
Voici les règles générales qui régissent ces tâches.
- Votre manifeste d’application ne peut contenir qu’un seul PreInstallConfigTask et un UpdateTask.
- Les tâches de déploiement s’appliquent à n’importe quel type de plateforme.
- Les tâches de déploiement peuvent s’exécuter une fois l’opération de déploiement terminée et validée.
- Les tâches de déploiement ayant échoué ne sont pas redémarrées.
- Les tâches de déploiement ayant échoué n’affectent pas le déploiement réussi de l’application.
- Les tâches de déploiement ne sont pas redémarrées après le redémarrage.
- Les tâches de déploiement ne doivent pas dépendre les unes des autres.
Exemples de code
Exemple UpdateTask
La tâche de mise à jour est prise en charge pour tout chemin de mise à jour possible, par exemple :
- .xap à .xap
- .xap à .appx
- .xap à .appxbundle
- .appx à .appx
- .appx à .appxbundle
- .appxbundle à .appxbundle
Voici l’exemple de manifeste .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>
Voici l’exemple de code 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();
}
}
Exemple de tâche PreInstallConfigTask
Voici l’exemple de manifeste .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>
Voici l’exemple de code 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();
}
}
Tâches de préinstallation pour les applications Windows classiques
Trois types de tâches de déploiement sont disponibles pour les applications Windows classiques, comme indiqué dans le tableau ci-dessous. Si vous déployez votre application Windows classique sur Windows 10, ces tâches fonctionneront comme prévu.
Tâche | Description |
---|---|
_OEM_TASK PREINSTALL | Une application préinstallée de 1re ou de 2e partie peut s’exécuter au moment de l’installation sans exiger que l’application soit lancée par l’utilisateur final. |
UPDATE_TASK | Une fois qu’une application a été mise à jour, y compris .appx vers .uap, une tâche de maintenance peut être exécutée pour effectuer toutes les tâches liées à la migration, également sans nécessiter d’interaction utilisateur. |
CONVERGENCE | Windows 8.1 et Windows 8.1 Convergence du code téléphonique. Activez également le schéma de manifeste .appx unifié. |