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

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

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

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

Comparing packaging project to single project

Обзор

В этом разделе приводятся некоторые важные сведения о функции 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). Решение будет выглядеть так же, как на снимок экрана ниже.

A solution using the packaging project

Шаг 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. Выберите текстовый файл, назовите новый запуск файла Параметры.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. Сохраните и закройте файл launch Параметры.json.

    Для Visual Studio 2019:

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

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

      Enabling MsixProject option

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

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

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

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

Illustration of moving files to main app

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

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

    Примечание.

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

Enabling Deploy in 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.