Distribuir seu aplicativo de área de trabalho empacotado

Se você decidir empacotar o aplicativo da área de trabalho em um pacote MSIX (confira Como criar um pacote MSIX por meio de código, poderá publicar o aplicativo empacotado na Microsoft Store ou executar sideload em um ou mais dispositivos.

Observação

Você tem um plano de como fazer a transição de usuários para seu aplicativo empacotado? Antes de distribuir seu aplicativo, confira a seção Transição de usuários para seu aplicativo empacotado deste guia para obter algumas ideias.

Distribuir seu aplicativo publicando-o na Microsoft Store

A Microsoft Store é uma maneira conveniente para que seus clientes obtenham o aplicativo.

Publicar seu aplicativo na Microsoft Store para alcançar o público mais amplo. Além disso, clientes organizacionais podem adquirir seu aplicativo para distribuição interna em suas organizações por meio da Microsoft Store para Empresas.

Caso planeje publicar na Microsoft Store, você verá algumas perguntas adicionais como parte do processo de envio. Isso ocorre porque o manifesto do pacote declara uma funcionalidade restrita denominada runFullTrust e precisamos aprovar o uso desse recurso pelo aplicativo. Leia mais sobre este requisito aqui: Funcionalidades restritas.

Você não precisa assinar seu aplicativo antes de enviá-lo para a loja.

Importante

Se você planeja publicar o aplicativo na Microsoft Store, lembre-se que ele deve funcionar corretamente em dispositivos com o Windows 10 S ou Windows 11 S. Este é um requisito da Store. Veja Testar o aplicativo do Windows para o Windows 10 S ou Windows 11 S.

Distribuir seu aplicativo sem posicioná-lo na Microsoft Store

Se você preferir distribuir seu aplicativo sem utilizar a Store, você pode distribuir seus aplicativos manualmente para um ou mais dispositivos.

Isso pode fazer sentido se você deseja ter mais controle sobre a experiência de distribuição ou se você não quiser se envolver com o processo de certificação da Microsoft Store.

Para distribuir seu aplicativo para outros dispositivos sem colocá-lo na Store, você precisa obter um certificado, assinar seu aplicativo usando esse certificado e fazer o sideload do aplicativo para esses dispositivos.

Você pode criar um certificado ou obtê-lo de um fornecedor popular, como o Verisign.

Se você pretende distribuir seu aplicativo para dispositivos com o Windows 10 S ou Windows 11 S, seu aplicativo deve ser assinado pela Microsoft Store e você terá que passar pelo processo de envio da Store para distribuir seu aplicativo para esses dispositivos.

Se você criar um certificado, você precisa instalá-lo na loja de certificados Trusted Root ou Trusted People em cada dispositivo que executa seu aplicativo. Se você receber um certificado de um fornecedor popular, você não precisa instalar nada em outros sistemas além de seu aplicativo.

Importante

Assegure-se de que o nome do editor no certificado corresponda ao nome do editor no aplicativo.

Para autenticar o aplicativo usando um certificado, confira Autenticar um pacote de aplicativo usando a SignTool.

Para fazer o sideload do aplicativo em outros dispositivos, confira Sideload de aplicativos LOB no Windows.

Transição dos usuários para o aplicativo empacotado

Antes de distribuir o seu aplicativo, considere adicionar algumas extensões ao manifesto do pacote para ajudar os usuários a terem o hábito de usar seu aplicativo empacotado. Aqui estão algumas coisas que você pode fazer.

  • Aponte os blocos Iniciar e os botões da barra de tarefas existentes para o aplicativo empacotado.
  • Associe o aplicativo empacotado a um conjunto de tipos de arquivos.
  • Faça com que seu aplicativo empacotado abra certos tipos de arquivos por padrão.

Para obter a lista completa das extensões e as orientações de como usá-las, confira Transição de usuários para seu aplicativo.

Além disso, considere adicionar código ao seu aplicativo empacotado que realize estas tarefas:

  • Migra os dados do usuário associados ao seu aplicativo desktop para as localizações de pastas apropriadas do seu aplicativo empacotado.
  • Oferece aos usuários a opção de desinstalar a versão para computador do seu aplicativo.

Vamos falar sobre cada uma dessas tarefas. Vamos começar com a migração de dados do usuário.

Migrar dados do usuário

Se você vai adicionar código que migra os dados do usuário, é melhor executar esse código somente quando o aplicativo é iniciado pela primeira vez. Antes de migrar os dados dos usuários, exiba uma caixa de diálogo para o usuário explicando o que está acontecendo, por que é recomendável e o que acontecerá com os dados existentes.

Aqui está um exemplo de como você pode fazer isso em um aplicativo empacotado com base em .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
            }
        }
    }
}

Desinstalar a versão para computador do seu aplicativo

É melhor não desinstalar o aplicativo desktop dos usuários sem antes solicitar a permissão deles. Exiba uma caixa de diálogo que solicita essa permissão ao usuário. Os usuários podem decidir não desinstalar a versão para computador do seu aplicativo. Se isso acontecer, você precisará decidir se deseja bloquear o uso do aplicativo desktop ou oferecer suporte ao uso simultâneo de ambos os aplicativos.

Aqui está um exemplo de como você pode fazer isso em um aplicativo empacotado com base em .NET.

Para exibir o contexto completo deste trecho de código, confira o arquivo MainWindow.cs deste exemplo Visualizador de imagens do WPF com transição/migração/desinstalação.

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

}

Próximas etapas

Tem dúvidas? Se tiver dúvidas, acesse nossa Tech Community.

Se você tiver problemas para publicar seu aplicativo na Store, essa postagem de blog contém algumas dicas úteis.