Distribuire l'app desktop in pacchetto

Se si decide di includere la tua app desktop in un pacchetto MSIX (vedere Creazione di un pacchetto MSIX da proprio codice), è possiile pubblicare l'applicazione in pacchetto in Microsoft Store o trasferirla localmente in uno o più dispositivi.

Nota

Hai un piano su come potresti eseguire la transizione degli utenti alla tua applicazione in pacchetto? Prima di distribuire l'app, vedi la sezione Eseguire la transizione degli utenti alla tua app in pacchetto in questa guida per avere qualche idea.

Distribuire l'applicazione pubblicandola in Microsoft Store

Microsoft Store è un modo semplice con cui gli utenti possono scaricare la tua app.

Pubblica l'applicazione in Microsoft Store per raggiungere un pubblico più ampio. Anche i clienti aziendali possono ottenere la tua applicazione per distribuirla all'interno delle rispettive organizzazioni con Microsoft Store per le aziende.

Se prevedi di pubblicare in Microsoft Store, ti verranno chieste alcune domande aggiuntive nell'ambito del processo di invio. Questo avviene perché il manifesto del pacchetto dichiara una funzionalità con restrizioni denominata runFullTrust ed è necessario approvare l'uso di tale funzionalità da parte dell'applicazione. È possibile ottenere altre informazioni su questo requisito qui: Funzionalità con restrizioni.

Non è necessario firmare l'applicazione prima di inviarla a Microsoft Store.

Importante

Se si pensa di pubblicare la tua applicazione in Microsoft Store, assicurarsi che l'applicazione funzioni correttamente nei dispositivi che eseguono Windows 10 S o Windows 11 S. Questa operazione è un requisito di Store. Vedere Testare l'app di Windows per Windows 10 S e Windows 11 S.

Distribuire l'applicazione senza inserirla in Microsoft Store

Se vuoi distribuire l'applicazione senza usare lo Store, puoi farlo manualmente in uno o più dispositivi.

Questo può essere utile se vuoi un maggior controllo sull'esperienza di distribuzione oppure non vuoi partecipare al processo di certificazione di Microsoft Store.

Per distribuire l'applicazione in altri dispositivi senza inserirla nello Store, devi ottenere un certificato, firmare l'applicazione con tale certificato e quindi trasferire localmente la tua applicazione nei dispositivi scelti.

Puoi creare un certificato o ottenerne uno da un fornitore noto, ad esempio Verisign.

Se si prevede una distribuzione nei dispositivi che eseguono Windows 10 S o Windows 11 S, l'applicazione deve essere firmata da Microsoft Store, quindi si dovrà passare attraverso il processo di invio allo Store prima di poterla distribuire su tali dispositivi.

Se crei un certificato, devi installarlo nell'archivio certificati radice attendibile o persone attendibili in ogni dispositivo che esegue l'app. Se ricevi un certificato da un fornitore noto, non devi installare alcun componente in altri sistemi oltre alla tua app.

Importante

Assicurati che il nome dell'editore riportato nel certificato corrisponda al nome dell'editore della tua app.

Per firmare l'applicazione usando un certificato, vedi Firmare il pacchetto di un'applicazione tramite SignTool.

Per trasferire localmente l'applicazione in altri dispositivi, vedere Trasferire localmente app line-of-business in Windows.

Eseguire la transizione degli utenti all'app in pacchetto

Prima di distribuire l'app, prendi in considerazione l'aggiunta di alcune estensioni al manifesto del pacchetto per consentire agli utenti di abituarsi all'uso dell'app in pacchetto. Ecco alcune cose che puoi fare.

  • Puntare i pulsanti della barra delle applicazioni e i riquadri Start esistenti all'app in pacchetto.
  • Associare la tua applicazione in pacchetto a un set di tipi di file.
  • Consentire alla tua applicazione in pacchetto di aprire determinati tipi di file per impostazione predefinita.

Per un elenco completo delle estensioni e per le linee guida su come usarle, vedi Eseguire la transizione degli utenti alla tua app.

Inoltre, prendi in considerazione di aggiungere codice all'applicazione in pacchetto che consenta di effettuare queste attività:

  • Eseguire la migrazione di dati utente associati alla tua applicazione desktop in percorsi cartella appropriati della tua app in pacchetto.
  • Offrire agli utenti la possibilità di disinstallare la versione desktop della tua app.

Esaminiamo ognuna di queste attività. Inizieremo con la migrazione dei dati utente.

Eseguire la migrazione dei dati utente

Se prevedi di aggiungere codice che consenta di eseguire la migrazione dei dati utente, è preferibile eseguire tale codice solo al primo avvio dell'applicazione. Prima di eseguire la migrazione dei dati utente, mostra una finestra di dialogo all'utente che spieghi l'operazione in corso, perché tale operazione è consigliabile e cosa accadrà ai dati esistenti.

Ecco un esempio di come potresti eseguire questa operazione in un'app in pacchetto basata su .NET.

private void MigrateUserData()
{
    String sourceDir = Environment.GetFolderPath
        (Environment.SpecialFolder.ApplicationData) + "\\AppName";

    if (sourceDir != null)
    {
        DialogResult migrateResult = MessageBox.Show
            ("Would you like to migrate your data from the previous version of this app?",
             "Data Migration", MessageBoxButtons.YesNo);

        if (migrateResult.Equals(DialogResult.Yes))
        {
            String destinationDir =
                Windows.Storage.ApplicationData.Current.LocalFolder.Path + "\\AppName";

            Process process = new Process();
            process.StartInfo.FileName = "robocopy.exe";
            process.StartInfo.Arguments = "%LOCALAPPDATA%\\AppName " + destinationDir + " /move";
            process.StartInfo.CreateNoWindow = true;
            process.Start();
            process.WaitForExit();

            if (process.ExitCode > 1)
            {
                //Migration was unsuccessful -- you can choose to block/retry/other action
            }
        }
    }
}

Disinstallare la versione desktop della tua app

È preferibile non disinstallare l'applicazione desktop degli utenti senza prima richiedere l'autorizzazione. Mostra una finestra di dialogo che richieda all'utente tale autorizzazione. Gli utenti potrebbero decidere di non disinstallare la versione desktop della tua app. In tal caso, devi decidere se vuoi bloccare l'utilizzo dell'applicazione desktop o supportare l'uso affiancato di entrambe le app.

Ecco un esempio di come potresti eseguire questa operazione in un'app in pacchetto basata su .NET.

Per visualizzare il contesto completo di questo frammento di codice, vedi il file MainWindow.cs di questo esempio Visualizzatore di immagini WPF con transizione/migrazione/disinstallazione.

private void RemoveDesktopApp()
{
    //Typically, you can find your uninstall string at this location.
    String uninstallString = (String)Microsoft.Win32.Registry.GetValue
        (@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion" +
         @"\Uninstall\{7AD02FB8-B85E-44BC-8998-F4803BA5A0E3}\", "UninstallString", null);

    //Detect if the previous version of the Desktop application is installed.
    if (uninstallString != null)
    {
        DialogResult uninstallResult = MessageBox.Show
            ("To have the best experience, consider uninstalling the "
              + " previous version of this app. Would you like to do that now?",
              "Uninstall the previous version", MessageBoxButtons.YesNo);

        if (uninstallResult.Equals(DialogResult.Yes))
        {
                    string[] uninstallArgs = uninstallString.Split(' ');

            Process process = new Process();
            process.StartInfo.FileName = uninstallArgs[0];
            process.StartInfo.Arguments = uninstallArgs[1];
            process.StartInfo.CreateNoWindow = true;

            process.Start();
            process.WaitForExit();

            if (process.ExitCode != 0)
            {
                //Uninstallation was unsuccessful - You can choose to block the application here.
            }
        }
    }

}

Passaggi successivi

Altre domande? Inviaci domande nella Tech Community.

Se hai problemi con la pubblicazione dell'applicazione nello Store, questo post di blog contiene alcuni suggerimenti utili.