Разработка дополнительных пакетов и связанных наборов

Дополнительные пакеты включают в себя содержимое, которое можно интегрировать с главным пакетом. Они полезны для загружаемого контента (DLC), так как позволяют поделить большое приложение при наличии ограничений на размер или доставить любое дополнительное содержимое отдельно от исходного приложения. Дополнительные сведения о дополнительных пакетах см. в записи блога: расширение возможностей приложения с помощью дополнительных пакетов.

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

Необязательные пакеты и связанные наборы запускаются внутри контейнера MSIX основного приложения.

Предварительные требования

  • Visual Studio 2019 или Visual Studio 2017 (версия 15,1 или более поздняя)
  • Windows 10 версии 1703 или более поздней
  • пакет SDK для Windows 10 версии 1703 или более поздней

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

Примечание

чтобы отправить приложение, которое использует необязательные пакеты и/или связанные наборы для Microsoft Store, вам потребуется разрешение. Необязательные пакеты и связанные наборы можно использовать для бизнес-приложений или корпоративных приложения без разрешения центра партнеров, если они не отправлены в магазин. Для получения разрешения на отправку приложений, использующих дополнительные пакеты и связанные наборы, см. раздел Поддержка разработчиков для Windows.

Пример кода

Во время чтения этой статьи рекомендуется следить за примером кода для дополнительного пакета на GitHub, чтобы получить практическое понимание работы дополнительных пакетов и связанных наборов в Visual Studio.

Дополнительные пакеты

Чтобы создать дополнительный пакет в Visual Studio, необходимо выполнить следующее:

  1. Убедитесь, что для параметра Минимальная версия целевой платформы приложения задано значение 10.0.15063.0 или выше.
  2. Из проекта вашего главного пакета откройте файл Package.appxmanifest. Перейдите на вкладку "Упаковка" и обратите внимание на имя семейства пакета, в которое входят все символы до символа "_".
  3. В проекте необязательного пакета щелкните правой кнопкой мыши Package.appxmanifest и выберите пункт Открыть с помощью > XML (текстовый редактор).
  4. Найдите в этом файле элемент <Dependencies>. Добавьте следующее и замените [MainPackageDependency]именем семейства пакетов , которое было на шаге 2. Эта строка будет указывать, что ваш дополнительный пакет зависит от главного пакета.
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

Примечание

Если вы хотите создать дополнительный пакет от другого издателя, необходимо будет указать издателя основного приложения, если они отличаются. например, < uap4: маинпаккажедепенденци Name = "Main_app" Publisher = "CN = Contoso..."/ > . Это не будет работать при публикации в хранилище.

После настройки зависимостей пакета из шагов с 1 по 4 можно продолжить разработку, как обычно. Дополнительные сведения см. в записи блога: создание первого необязательного пакета.

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

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

Теперь каждый раз при нажатии клавиши F5 или сборке проекта дополнительного пакета программа Visual Studio будет создавать сначала проект главного пакета. Это гарантирует синхронизацию главного и дополнительного проектов.

Связанный набор состоит из основного пакета и необязательного пакета, который тесно связан с помощью метаданных, указанных в файле. appxbundle или. msixbundle основного пакета. Эти метаданные связывают основной пакет с дополнительным пакетом (используя имя appxbundle-файла и версию) и дополнительный пакет для основного пакета (с использованием независимого от версии имени). Visual Studio помогает вам получить правильные метаданные в ваших файлах.

Управление версиями пакетов в связанном наборе синхронизируется таким образом, что не позволит использовать последнюю версию любого пакета до тех пор, пока не будут установлены все связанные пакеты набора (указанные версией в основном пакете). Пакеты обслуживаются независимо, но пакеты, указанные в наборе, могут не использоваться до тех пор, пока не будут обновлены все. Дополнительные сведения о связанных наборах см. в записи блога: Инструментарий для создания связанного набора.

Чтобы настроить решение для связанных наборов для вашего приложения, выполните следующие действия:

  1. Щелкните правой кнопкой мыши проект основного пакета и выберите Добавить > новый элемент...
  2. Из этого окна выполните поиск установленных шаблонов для ".txt" и добавьте новый текстовый файл.

    Важно!

    Новый текстовый файл должен называться Bundle.Mapping.txt.

  3. Bundle.Mapping.txtВ файле введите строку "[оптионалпрожектс]", а затем относительные пути к необязательным проектам пакета. Ниже приведен пример файла Bundle.Mapping.txt:
    [OptionalProjects]
    "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj"
    "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
    

если решение настроено таким образом, Visual Studio создаст манифест пакета с именем AppxBundleManifest.xml для основного пакета со всеми необходимыми метаданными для связанных наборов.

обратите внимание, что, как и необязательные пакеты, Bundle.Mapping.txt файл для связанных наборов будет работать только в Windows 10, версии 1703 или более поздней. Кроме того, минимальная версия целевой платформы приложения должна быть равна 10.0.15063.0 или выше.

Удаление дополнительных пакетов

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

PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
    
// Warn user that application will be restarted. 
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
    throw removalResult.ExtendedError;
}

Примечание

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

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

Известные проблемы

В настоящее время в Visual Studio не поддерживается отладка дополнительного проекта связанного набора. Чтобы обойти эту проблему, можно развернуть и запустить активацию (Ctrl+F5) и вручную подключить отладчик к процессу. Чтобы подключить отладчик, перейдите в Visual Studio в меню "Отладка", выберите пункт "Присоединиться к процессу..." и подключите отладчик к процессу основного приложения.