Condividi tramite


Attività di preinstallazione

Gli OEM e gli MO sono autorizzati a spedire app preinstallate nell'immagine del dispositivo. Alcune di queste app preinstallate richiedono l'esecuzione di attività senza interazione dell'utente e spesso prima che l'utente finale apra l'app per la prima volta; ad esempio un'app di sondaggio sul prodotto o una registrazione del server SMS. Analogamente, alcune app dovranno eseguire attività di manutenzione senza l'interazione dell'utente dopo l'aggiornamento di un'app. Le attività di preinstallazione e aggiornamento forniscono il meccanismo per consentire l'esecuzione delle attività in background senza prima che l'app venga installata o quando viene aggiornata.

Esistono due tipi di attività di distribuzione disponibili per gli UAP: PreInstallConfigTask e UpdateTask. Entrambi sono IBackgroundTasks.

Ecco le regole generali che regolano queste attività.

  • Il manifesto dell'app può contenere un solo PreInstallConfigTask e un UpdateTask.
  • Le attività di distribuzione sono applicabili a qualsiasi tipo di piattaforma.
  • Le attività di distribuzione possono essere eseguite dopo il completamento e il commit dell'operazione di distribuzione.
  • Le attività di distribuzione non riuscite non vengono riavviate.
  • Le attività di distribuzione non riuscite non influiscono sulla corretta distribuzione dell'app.
  • Le attività di distribuzione non vengono riavviate dopo il riavvio.
  • Le attività di distribuzione non devono dipendere l'una dall'altra.

Esempi di codice

Esempio di UpdateTask

L'attività di aggiornamento è supportata per qualsiasi percorso di aggiornamento possibile, ad esempio:

  • Da xap a xap
  • Da .xap a .appx
  • Da .xap a .appxbundle
  • Da .appx a .appx
  • Da appx a appxbundle
  • .appxbundle a .appxbundle

Ecco il manifesto appx di esempio:

<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>

Ecco il codice C# di esempio:

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();
    }
}

Esempio di attività PreInstallConfigTask

Ecco il manifesto appx di esempio:

<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>

Ecco il codice C# di esempio:

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();
    }
}

Preinstalla le attività per le app di Windows classiche

Esistono tre tipi di attività di distribuzione disponibili per le app di Windows classiche, come illustrato nella tabella seguente. Se si distribuisce l'app di Windows classica in Windows 10, queste attività funzioneranno come previsto.

Attività Descrizione
PREINSTALL _OEM_TASK Un'app preinstallata 1 o 2a parte può essere eseguita in fase di installazione senza richiedere l'avvio dell'app da parte dell'utente finale.
UPDATE_TASK Dopo l'aggiornamento di un'app, incluso .appx a .uap, è possibile eseguire un'attività di manutenzione per eseguire qualsiasi attività correlata alla migrazione, anche senza richiedere alcuna interazione dell'utente.
CONVERGENZA Windows 8.1 e Windows 8.1 convergenza del codice telefonico. Abilitare anche lo schema manifesto appx unificato.