Упаковка приложения с помощью пакета MSIX одного проекта

MsIX с одним проектом — это функция, которая позволяет создавать упаковаемое классическое приложение WinUI 3 без необходимости в отдельном проекте упаковки. Приложение WinUI 3 — это приложение, использующее платформу WinUI 3 для пользовательского интерфейса и использующее пакет SDK для приложений Windows. Чтобы упаковать классическое приложение, которое не является приложением WinUI 3, см. статью "Настройка классического приложения для упаковки MSIX" в Visual Studio.

Функция MSIX с одним проектом доступна в виде расширения Visual Studio, которое можно использовать для следующих сценариев:

  • Создайте классическое приложение WinUI 3 с помощью шаблона проекта Visual Studio "Пустое приложение", упаковаемое (WinUI 3 в классическом приложении), который поставляется с пакетом SDK для приложений Windows. Этот проект настроен для сборки приложения в пакет MSIX без необходимости отдельного проекта упаковки.
  • Измените существующее классическое приложение WinUI 3, использующее отдельный проект упаковки. Изменение включает удаление отдельного проекта упаковки, как показано на рисунке ниже.

Сравнение проекта упаковки с одним проектом

Обзор

В этом разделе приводятся некоторые важные сведения о функции MSIX с одним проектом.

Льготы

Перед введением функции MSIX с одним проектом, если вы хотите создать упакованое классическое приложение WinUI 3, вам потребуется два проекта в решении— проект приложения, а также дополнительный проект упаковки приложений Windows (см. статью "Настройка классического приложения для упаковки MSIX в Visual Studio"). Функция MSIX с одним проектом позволяет разрабатывать и создавать приложение, используя только проект для приложения. Это обеспечивает более чистую структуру проекта и более простой опыт разработки. Например, вам больше не нужно выбирать отдельный проект упаковки в качестве запускаемого проекта.

Поддерживаемые типы проектов

Функция MSIX с одним проектом поддерживает шаблоны WinUI 3 в Visual Studio (C# и C++) для пакета SDK для приложений Windows.

Ограничения

MsIX с одним проектом поддерживает только один исполняемый файл в созданном пакете MSIX. Если необходимо объединить несколько исполняемых файлов в один пакет MSIX, вам потребуется продолжить использование проекта упаковки приложений Windows в решении.

Установка средств упаковки MSIX с одним проектом

Средства упаковки MSIX с одним проектом включают шаблоны проектов Visual Studio, которые можно использовать для создания новых упакованных классических приложений WinUI 3. Эти средства включены в расширение пакета SDK для приложений Windows для Visual Studio. Инструкции по установке пакета SDK для приложений Windows см. в разделе "Установка средств" для пакета SDK для приложений Windows.

Пакет SDK для приложений Windows 0.8 и C# версии 1.0 ( предварительная версия 3 ): средства упаковки MSIX с одним проектом не включены в расширение пакета SDK для приложений Windows для Visual Studio для Windows для приложений версии 0.8 или для проектов C#, включая предварительную версию 3 пакета SDK для приложений Windows 1.0. Таким образом, если вы используете эти версии, может потребоваться явно установить средства упаковки MSIX с одним проектом. См. следующие сведения:

  • Visual Studio 2022 версии 17.1 и более поздних версий: однопроектные средства упаковки MSIX для Visual Studio 2022 VSIX встроены в Visual Studio 2022 версии 17.1 и более поздних версий.

  • Visual Studio 2022 до версии 17.1. Установите однопроектное расширение MSIX Packaging Tools для Visual Studio 2022 VSIX.

  • Visual Studio 2019: установите однопроектные средства упаковки MSIX для Visual Studio 2019 VSIX. Для расширения требуется Visual Studio 2019 версии 16.10.x или более поздней.

Затем вы можете убедиться, что у вас установлено расширение в Visual Studio. Щелкните extensions Manage Extensions>>Installed>All и убедитесь, что средства упаковки MSIX с одним проектом перечислены.

Создание нового проекта

Если вы используете пакет SDK для приложений Windows 1.0 (предварительная версия 2 или более поздняя версия), вы можете создать новое приложение на основе WinUI 3, которое включает поддержку MSIX с одним проектом, просто с помощью шаблона "Пустое приложение" (WinUI 3 в desktop). Дополнительные сведения см. в статье "Создание первого проекта WinUI 3".

Изменение существующего проекта

Выполните действия, описанные в этом разделе, чтобы изменить существующее приложение на основе WinUI 3, использующее отдельный проект упаковки. Ниже приведены шаги по перемещению манифеста пакета (и другой поддержки, необходимой для сборки пакета MSIX) в проект приложения, а затем удаление отдельного проекта упаковки.

Шаг 1. Создание или открытие существующего проекта упаковки

Если у вас уже есть решение для классического приложения WinUI 3 (см . шаблоны WinUI 3 в Visual Studio), которое включает проект упаковки приложений Windows (см. статью "Настройка классического приложения для упаковки MSIX в Visual Studio"), а затем откройте это решение в Visual Studio.

Если нет, создайте классическое приложение WinUI 3 в Visual Studio с помощью шаблона "Пустое приложение", упаковав его с помощью шаблона "Упаковка приложений Windows" (WinUI 3 в desktop). Решение будет выглядеть так же, как на снимок экрана ниже.

Решение с помощью проекта упаковки

Шаг 2. Изменение параметров проекта приложения

Затем измените некоторые параметры конфигурации, чтобы использовать функцию MSIX с одним проектом. Существуют разные инструкции в зависимости от типа проекта и версии Visual Studio.

  1. В Обозреватель решений дважды щелкните узел проекта для приложения, чтобы открыть CSPROJ-файл в редакторе XML. Добавьте следующий XML-код в основной <элемент PropertyGroup> .

    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    Когда все будет готово, элемент <PropertyGroup> должен выглядеть примерно так.

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. Сохраните изменения и закройте CSPROJ-файл .

  3. Выполните одну из следующих процедур в зависимости от версии Visual Studio.

    Для Visual Studio 2022 или более поздней версии:

    1. В Обозреватель решений щелкните правой кнопкой мыши папку "Свойства" в узле проекта для приложения и выберите "Добавить>новый элемент...".

    2. Выберите текстовый файл, назовите новый файл launchSettings.json и нажмите кнопку "Добавить". Убедитесь, что новый файл находится в папке "Свойства " проекта приложения.

    3. Скопируйте следующие параметры в новый файл. Вы можете изменить значения, необходимые для вашего сценария. Значение MyApp может быть любой строкой. Оно не должно соответствовать имени приложения.

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. Сохраните и закройте файл launchSettings.json .

    Для Visual Studio 2019:

    1. В Обозреватель решений щелкните правой кнопкой мыши узел проекта для приложения и выберите "Свойства".

    2. Выберите вкладку "Отладка " и задайте для свойства Launch значение MsixPackage. Возможно, вам придется дважды выбрать этот вариант, если он возвращается обратно на первую попытку.

      Включение параметра MsixProject

    3. Сохранение изменений.

Шаг 3. Перемещение файлов в проект приложения

Затем переместите несколько важных файлов в проект приложения. Существуют разные инструкции в зависимости от типа проекта.

  1. В проводник переместите файл Package.appxmanifest и папку Images из проекта упаковки в проект приложения. Поместите этот файл и папку на верхний уровень иерархии папок проекта приложения.
  2. В Visual Studio в Обозреватель решений выберите все изображения в папке "Изображения". В окне "Свойства" задайте для действия сборки содержимое.
  3. Удалите проект упаковки из решения.

Иллюстрация перемещения файлов в основное приложение

Шаг 4. Включение развертывания в Configuration Manager

  1. Выберите Создать>Диспетчер конфигураций.
  2. В Configuration Manager установите флажок Развернуть для каждой комбинации конфигурации и платформы (например, Отладка и x86, Отладка и arm64, Выпуск и x64 и пр.).

    Примечание.

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

Включение развертывания в Configuration Manager

Шаг 5. Развертывание приложения

Создание и развертывание проекта приложения. Visual Studio создаст приложение в пакет MSIX, установит пакет и запустите приложение.

Шаг 6. Упаковка приложения для публикации

Используйте команду "Пакет и публикация" в Visual Studio, чтобы упаковать приложение, чтобы опубликовать его в Microsoft Store.

Автоматизация создания и упаковки приложения MSIX с одним проектом

Вы можете создавать msbuild и упаковать однопроектное приложение MSIX, что позволяет автоматизировать рабочий процесс. Метод решения с одним проектом и командной строкой немного отличается от того, что вы уже можете сделать, если у вас есть двухпроектное решение, которое имеет проект упаковки приложений Windows (см. статью "Настройка классического приложения для упаковки MSIX в Visual Studio").

Важным вариантом команды сборки для решения с одним проектом является /p:GenerateAppxPackageOnBuild=true. Без этого параметра проект будет построен, но вы не получите пакет MSIX. Включите этот параметр и приведет к созданию пакета MSIX.

Существует полный пример в виде GitHub Action, который создает решение WinUI 3 с одним проектом.

Примечание.

В настоящее время MSIX не поддерживает создание пакетов MSIX (см . bundling MSIX packages). Он создает только один MSIX. Но вы можете упаковыть .msix файлы в пакет MSIX с помощью действия GitHub пакета MSIX.

Как упакованое классическое приложение работает в Windows

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

Предоставление отзыва

Чтобы отправить нам отзыв, сообщить о проблемах или задать вопросы о функции MSIX с одним проектом, опубликуйте обсуждение или проблему в репозитории GitHub пакета SDK для Приложений Windows.