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


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

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

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

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

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

Обзор

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

Льготы

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

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

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

Ограничения

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

Установка средств упаковки MSIX для единого проекта

Средства однопроектной упаковки MSIX включают заготовки проектов Visual Studio, которые можно использовать для создания упакованных настольных приложений WinUI. Эти средства включены в расширение Windows App SDK для Visual Studio. Инструкции по установке Windows App SDK см. в разделе Install tools for the Windows App SDK.

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

Чтобы подтвердить, что расширение установлено, щелкните Extensions>Manage Extensions>Installed>All и убедитесь, что Single-project MSIX Packaging Tools присутствуют в списке.

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

Если вы используете Windows App SDK версии 1.0 Preview 2 или более поздней, вы можете создать новое приложение на основе WinUI, которое включает поддержку MSIX для одного проекта, просто с помощью шаблона Blank App, Packaged (WinUI in Desktop). Дополнительные сведения см. в разделе Create your first WinUI project.

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

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

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

Если у вас уже есть решение для настольного приложения WinUI (см. шаблоны WinUI в Visual Studio), включающее проект упаковки для Windows Application Packaging Project (см. Set up your desktop application for MSIX packaging in Visual Studio), то откройте это решение в Visual Studio сейчас.

Если нет, создайте новое настольное приложение WinUI в Visual Studio с помощью шаблона Blank App, упакованное с помощью проекта упаковки приложений Windows (WinUI в настольных приложениях). Ваше решение будет выглядеть так же, как на снимке экрана ниже.

решение с использованием проекта пакетирования

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

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

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

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

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

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net8.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.

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

    1. В Solution Explorer щелкните правой кнопкой мыши папку Properties в узле project приложения и выберите Add>New Item... .

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

    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 .

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

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

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

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

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

  1. Выберите Build>Configuration Manager.
  2. В Configuration Manager установите флажок Deploy для каждой комбинации конфигурации и платформы (например, Debug и x86, Debug и arm64, Release и 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, которое создает однопроектное решение WinUI.

Примечание.

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

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

Дополнительную информацию о том, что происходит с файлами и записями реестра при создании пакета приложения Windows для десктопного приложения, см. в статье Understanding how packaged desktop apps run on Windows.

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

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