Поделиться через


Распространите упакованное настольное приложение

Если вы решили упаковать настольное приложение в пакет MSIX (см. создание пакета MSIX из кода), можно опубликовать упакованное приложение в Microsoft Store или установить его на одно или несколько устройств.

Замечание

У вас есть план по переходу пользователей в упакованое приложение? Прежде чем распространять приложение, ознакомьтесь с разделом «Как перевести пользователей на упакованное приложение» этого руководства, чтобы получить идеи.

Распространение приложения путем публикации его в Microsoft Store

Microsoft Store — удобный способ для клиентов получить ваше приложение.

Опубликуйте приложение в Microsoft Store, чтобы достичь самой широкой аудитории. Кроме того, клиенты организации могут получить приложение для внутреннего распространения в своих организациях через Microsoft Store для бизнеса.

Если вы планируете опубликовать в Microsoft Store, вам будет предложено несколько дополнительных вопросов в рамках процесса отправки. Это связано с тем, что манифест пакета объявляет ограниченную возможность с именем runFullTrust, и нам нужно утвердить использование этой возможности приложения. Дополнительные сведения об этом требовании см. здесь: ограниченные возможности.

Перед отправкой приложения в Магазин не нужно подписывать его.

Это важно

Если вы планируете опубликовать приложение в Microsoft Store, убедитесь, что приложение работает правильно на устройствах под управлением Windows 10 S или Windows 11 S. Это требование к Магазину. См. раздел протестируйте приложение Windows для Windows 10 S или Windows 11 S.

Распространение приложения без его размещения в Microsoft Store

Если вы предпочитаете распространять приложение без использования Магазина, вы можете вручную распространять приложения на один или несколько устройств.

Это может иметь смысл, если требуется более широкий контроль над процессом распространения или вы не хотите участвовать в процессе сертификации Microsoft Store.

Чтобы распространить приложение на другие устройства, не размещая его в Магазине, необходимо получить сертификат, подписать свое приложение этим сертификатом, а затем установить приложение напрямую на эти устройства.

Вы можете создать сертификат или получить его от популярного поставщика, например Verisign.

Если вы планируете распространять ваше приложение на устройствах под управлением Windows 10 S или Windows 11 S, его необходимо подписать через Microsoft Store, а значит, потребуется пройти процесс подачи в Магазин до того как вы сможете распространять его на эти устройства.

Если вы создаете сертификат, его необходимо установить в хранилище сертификатов Доверенное корневое или Доверенные лица на каждом устройстве, где работает ваше приложение. Если вы получаете сертификат от популярного поставщика, вам не придется устанавливать ничего на другие системы, кроме вашего приложения.

Это важно

Убедитесь, что имя издателя в сертификате соответствует имени издателя приложения.

Чтобы подписать вашу заявку при помощи сертификата, см. раздел Подписать пакет заявки с использованием SignTool.

См. в раздел об установке корпоративных приложений в Windows, как загрузить ваше приложение на другие устройства.

Переход пользователей в упакованое приложение

Прежде чем распространять приложение, рассмотрите возможность добавления нескольких расширений в манифест пакета, чтобы помочь пользователям приступить к использованию упаковаемого приложения. Вот несколько действий, которые вы можете сделать.

  • Укажите существующие плитки меню "Пуск" и кнопки на панели задач на упакованное приложение.
  • Свяжите упакованное приложение с набором типов файлов.
  • Настройте пакетное приложение на открытие определённых типов файлов по умолчанию.

Полный список расширений и рекомендации по их использованию см. в разделе "Переход пользователей в приложение".

Кроме того, рекомендуется добавить код в упаковаемое приложение, которое выполняет следующие задачи:

  • Переносит пользовательские данные, связанные с вашим настольным приложением, в соответствующие расположения папок упакованного приложения.
  • Предоставляет пользователям возможность удалить настольную версию вашего приложения.

Давайте поговорим о каждой из этих задач. Начнем с миграции данных пользователей.

Перенос данных пользователя

Если вы собираетесь добавить код, который переносит пользовательские данные, лучше всего запустить этот код только при первом запуске приложения. Перед переносом данных пользователей отобразится диалоговое окно для пользователя, которое объясняет, что происходит, почему рекомендуется, и что произойдет с существующими данными.

Ниже приведен пример того, как это можно сделать в упакованном приложении на основе .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
            }
        }
    }
}

Удалите настольную версию вашего приложения

Лучше не удалять приложение рабочего стола пользователя, не спросив у него разрешения. Отображение диалогового окна, которое запрашивает у пользователя это разрешение. Пользователи могут решить не удалять настольную версию вашего приложения. Если это произойдет, вам придется решить, следует ли блокировать использование десктопного приложения или поддерживать одновременное использование обоих приложений.

Ниже приведен пример того, как это можно сделать в упакованном приложении на основе .NET.

Чтобы просмотреть полный контекст этого фрагмента кода, обратитесь к файлу MainWindow.cs примера программы просмотра изображений WPF с функциями перехода, миграции и удаления.

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

}

Дальнейшие шаги

У вас есть вопросы? Спросите нас в нашем технологическом сообществе .

При возникновении проблем с публикацией приложения в Магазине эта запись блога содержит некоторые полезные советы.