Упаковка приложения с помощью пакета 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.
В Обозреватель решений дважды щелкните узел проекта для приложения, чтобы открыть 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>
Сохраните изменения и закройте CSPROJ-файл .
Выполните одну из следующих процедур в зависимости от версии Visual Studio.
Для Visual Studio 2022 или более поздней версии:
В Обозреватель решений щелкните правой кнопкой мыши папку "Свойства" в узле проекта для приложения и выберите "Добавить>новый элемент...".
Выберите текстовый файл, назовите новый файл launchSettings.json и нажмите кнопку "Добавить". Убедитесь, что новый файл находится в папке "Свойства " проекта приложения.
Скопируйте следующие параметры в новый файл. Вы можете изменить значения, необходимые для вашего сценария. Значение 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. */ } } }
Сохраните и закройте файл launchSettings.json .
Для Visual Studio 2019:
В Обозреватель решений щелкните правой кнопкой мыши узел проекта для приложения и выберите "Свойства".
Выберите вкладку "Отладка " и задайте для свойства Launch значение MsixPackage. Возможно, вам придется дважды выбрать этот вариант, если он возвращается обратно на первую попытку.
Сохранение изменений.
Шаг 3. Перемещение файлов в проект приложения
Затем переместите несколько важных файлов в проект приложения. Существуют разные инструкции в зависимости от типа проекта.
- В проводник переместите файл Package.appxmanifest и папку Images из проекта упаковки в проект приложения. Поместите этот файл и папку на верхний уровень иерархии папок проекта приложения.
- В Visual Studio в Обозреватель решений выберите все изображения в папке "Изображения". В окне "Свойства" задайте для действия сборки содержимое.
- Удалите проект упаковки из решения.
Шаг 4. Включение развертывания в Configuration Manager
- Выберите Создать>Диспетчер конфигураций.
- В Configuration Manager установите флажок Развернуть для каждой комбинации конфигурации и платформы (например, Отладка и x86, Отладка и arm64, Выпуск и x64 и пр.).
Примечание.
Не забудьте использовать раскрывающиеся списки Активная конфигурация решения и Активная платформа решения в верхней части вместо раскрывающихся списков Конфигурация и Платформа в той же строке, где находится флажок Развернуть.
Шаг 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.
Windows developer