Compartir a través de


Distribuir tu aplicación de escritorio empaquetada

Si decide empaquetar la aplicación de escritorio en un paquete MSIX (consulta Building an MSIX package from your code), puedes publicar la aplicación empaquetada en Microsoft Store o transferirla localmente en uno o varios dispositivos.

Nota:

¿Tiene un plan para cómo puede realizar la transición de los usuarios a la aplicación empaquetada? Antes de distribuir la aplicación, consulta la sección Transición de usuarios a la aplicación empaquetada de esta guía para obtener algunas ideas.

Distribuir la aplicación publicándola en Microsoft Store

El Microsoft Store es una manera cómoda de que los clientes obtengan tu aplicación.

Publique la aplicación en Microsoft Store para llegar al público más amplio. Además, los clientes de la organización pueden adquirir la aplicación para distribuir internamente a sus organizaciones a través de la Microsoft Store para Empresas.

Si tiene previsto publicar en Microsoft Store, se le harán algunas preguntas adicionales como parte del proceso de envío. Esto se debe a que el manifiesto del paquete declara una funcionalidad restringida denominada runFullTrusty es necesario aprobar el uso de esa funcionalidad de la aplicación. Puede obtener más información sobre este requisito aquí: funcionalidades restringidas.

No tienes que firmar la aplicación antes de enviarla a la Tienda.

Importante

Si tienes previsto publicar la aplicación en Microsoft Store, asegúrate de que la aplicación funciona correctamente en dispositivos que ejecutan Windows 10 S o Windows 11 S. Este es un requisito de la Tienda. Consulta Prueba tu aplicación de Windows para Windows 10 S o Windows 11 S.

Distribuir la aplicación sin colocarla en Microsoft Store

Si prefieres distribuir la aplicación sin usar la Tienda, puedes distribuir manualmente las aplicaciones a uno o varios dispositivos.

Esto puede tener sentido si quieres un mayor control sobre la experiencia de distribución o no quieres involucrarte con el proceso de certificación de Microsoft Store.

Para distribuir la aplicación a otros dispositivos sin colocarla en la Tienda, tienes que obtener un certificado, firmar la aplicación con ese certificado y, a continuación, transferir localmente la aplicación a esos dispositivos.

Puede crear un certificado o obtener uno de un proveedor popular, como Verisign.

Si tienes previsto distribuir la aplicación en dispositivos que ejecutan Windows 10 S o Windows 11 S, la aplicación debe estar firmada por Microsoft Store para que tengas que pasar por el proceso de envío de la Tienda antes de poder distribuir la aplicación en esos dispositivos.

Si crea un certificado, debe instalarlo en el raíz de confianza o almacén de certificados de personas de confianza en cada dispositivo que ejecuta la aplicación. Si obtiene un certificado de un proveedor popular, no tendrá que instalar nada en otros sistemas además de la aplicación.

Importante

Asegúrese de que el nombre del publicador del certificado coincide con el nombre del publicador de la aplicación.

Para firmar la aplicación mediante un certificado, consulte Firmar un paquete de aplicación mediante SignTool.

Para instalar aplicaciones externas en otros dispositivos, consulte Cargar aplicaciones empresariales en Windows.

Transición de usuarios a la aplicación empaquetada

Antes de distribuir la aplicación, considere la posibilidad de agregar algunas extensiones al manifiesto del paquete para ayudar a los usuarios a acostumbrarse a usar la aplicación empaquetada. Estas son algunas cosas que puedes hacer.

  • Apunte los iconos de inicio existentes y los botones de la barra de tareas a la aplicación empaquetada.
  • Asocie la aplicación empaquetada a un conjunto de tipos de archivo.
  • Haga que la aplicación empaquetada abra determinados tipos de archivos de forma predeterminada.

Para obtener la lista completa de extensiones y las instrucciones sobre cómo usarlas, consulta Transición de usuarios a tu aplicación.

Además, considere la posibilidad de agregar código a la aplicación empaquetada que realice estas tareas:

  • Migra los datos de usuario asociados a la aplicación de escritorio a las ubicaciones de carpetas adecuadas de la aplicación empaquetada.
  • Proporciona a los usuarios la opción de desinstalar la versión de escritorio de la aplicación.

Hablemos de cada una de estas tareas. Comenzaremos con la migración de datos de usuario.

Migración de datos de usuario

Si va a agregar código que migre los datos de usuario, es mejor ejecutar ese código solo cuando se inicie la aplicación por primera vez. Antes de migrar los datos de los usuarios, muestre un cuadro de diálogo al usuario que explique lo que sucede, por qué se recomienda y qué va a ocurrir con sus datos existentes.

Este es un ejemplo de cómo puede hacerlo en una aplicación empaquetada basada en .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
            }
        }
    }
}

Desinstalación de la versión de escritorio de la aplicación

Es mejor no desinstalar la aplicación de escritorio de los usuarios sin pedirles primero permiso. Muestra un cuadro de diálogo que solicita al usuario ese permiso. Es posible que los usuarios decidan no desinstalar la versión de escritorio de la aplicación. Si esto sucede, tendrá que decidir si desea bloquear el uso de la aplicación de escritorio o admitir el uso en paralelo de ambas aplicaciones.

Este es un ejemplo de cómo puede hacerlo en una aplicación empaquetada basada en .NET.

Para ver el contexto completo de este fragmento de código, vea el archivo MainWindow.cs de este ejemplo visor de imágenes de WPF con transición, migración y desinstalación.

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

}

Pasos siguientes

¿Tiene preguntas? Pregúntanos en nuestra comunidad tecnológica .

Si encuentra problemas al publicar la aplicación en la Tienda, esta entrada de blog contiene algunas sugerencias útiles.