Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для получения информации о мотивациях добавления идентификатора пакета, а также различиях между созданием пакетов в Visual Studio и их созданием вручную, см. раздел "Обзор".
В этом разделе описывается, как создать и зарегистрировать пакет удостоверений с помощью Visual Studio. Для информации о создании пакета идентификации вручную см. Назначение идентификации пакета путем упаковки с использованием внешнего расположения вручную.
Ниже приведены шаги (подробно описанные в этом разделе) для создания и регистрации пакета удостоверений с помощью Visual Studio:
- Установка компонентов Visual Studio
- Добавьте проект упаковки в ваше решение
- Настройте проект пакета для подписания
- Сборка и проверка проекта упаковки в режиме выпуска
- Зарегистрируйте пакет идентификаторов в установщике
- Необязательные шаги
Установка компонентов Visual Studio
Для создания пакета удостоверений в Visual Studio требуется проект упаковки приложений Windows и пакет с расширением "Внешнее расположение ".
Установите компоненты проекта упаковки приложений Windows , как описано в обязательной версии и рабочей нагрузке Visual Studio.
В Visual Studio с помощью пункта меню"Управление расширениями>" установите пакет с расширением "Внешнее расположение".
Добавьте пакетный проект в решение
Чтобы добавить проект упаковки в решение с ссылкой на проект приложения, см. статью "Настройка проекта упаковки приложений Windows" в решении.
Включите упаковку с внешним расположением, щелкнув правой кнопкой мыши на проекте упаковки в обозревателе решений, перейдите на вкладку Внешнее расположение, предоставляемую расширением Package with External Location, включите опцию Package with External Location и сохраните изменения.
Задайте поля Имя пакета и Отображаемое имя издателя идентификационного пакета, дважды щелкнув Package.appxmanifest
в проекте упаковки, чтобы открыть редактор визуального манифеста, перейти на вкладку "Упаковка" и установить поля Имя пакета и Отображаемое имя издателя на желаемые значения. См. Локализация и визуальные ресурсы для сценариев, в которых здесь может потребоваться локализация и изображения.
Если в вашем проекте есть пользовательский файл манифеста приложения, то для получения информации о синхронизации значений со значениями Package.appxmanifest
см. раздел "Добавление метаданных удостоверения в манифесты классических приложений".
Пакет с расширением "Внешнее расположение" использует приложение для applicationId.
Если у вас нет манифеста пользовательского приложения, Visual Studio создаст соответствующие артефакты во время процесса сборки. Проекты .NET по умолчанию встраивают манифест, который конфликтует с производимыми артефактами манифеста. Чтобы устранить это, щелкните правой кнопкой мыши проект, откройте свойства и на вкладке "Приложение " в разделе манифеста измените манифест внедрения с параметрами по умолчанию , чтобы создать приложение без манифеста.
Настройка проекта упаковки для подписи
Создайте сертификат для подписи, пройдя мастер публикации>создания пакетов приложений, показанный в разделе "Создание пакета приложения" с помощью мастера упаковки.
На первом экране убедитесь, что выбрана установка из внешних источников, а автоматические обновления отключены. На втором экране создайте самозаверяющий сертификат при необходимости, а затем нажмите кнопку "Доверие ", чтобы доверять ему в хранилище сертификатов "Доверенные люди" локального компьютера. На последнем экране установите Создавать пакет приложений на Никогда и нажмите Создать, чтобы завершить настройку подписи.
Сборка и проверка проекта упаковки в режиме выпуска
Чтобы избежать осложнений в зависимости режима отладки, задайте для конфигурации сборки режим выпуска и создайте проект упаковки.
Создание проекта упаковки создает папку PackageWithExternalLocation в выходных данных сборки.
Эта папка содержит MSIX
файл, представляющий пакет удостоверений, а также Install
Remove
скрипты PowerShell для регистрации и отмены регистрации созданного пакета удостоверений локально для тестирования.
Скрипт Install
PowerShell регистрирует созданный пакет удостоверений локально и подключает его к папке-родственнице ExternalLocation
для тестирования. Чтобы протестировать приложение с идентификацией, запустите исполняемый файл приложения из папки ExternalLocation
.
Чтобы связать удостоверение с приложением в рабочей среде, необходимо отправить созданный пакет удостоверений с приложением и зарегистрировать его в установщике.
Регистрация идентификационного пакета в установщике
Последним шагом для связывания удостоверения с приложением является регистрация пакета удостоверений в установщике и связывание его с каталогом установки приложения.
PowerShell
Выполнение powershell.exe с правильными параметрами — самый простой способ регистрации пакета. Рекомендации отличаются для установок на пользователя и установок на весь компьютер.
Per-User (PowerShell)
Чтобы зарегистрировать пакет идентификации во время персональной установки:
powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Add-AppxPackage -Path <PackagePath> -ExternalLocation <ExternalLocation>"
- Задайте
<PackagePath>
абсолютный путь к подписанному пакету удостоверений, создаваемому на предыдущем шаге (с именем файла). - Задайте
<ExternalLocation>
абсолютный путь к каталогу установки приложения (без имен исполняемых файлов).
Чтобы отменить регистрацию пакета идентификаций во время удаления пользователя:
powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Get-AppxPackage <PackageName> | Remove-AppxPackage"
- Задайте
<PackageName>
имя пакета, определенное в манифесте пакета удостоверений (атрибут Name элемента Identity )
Per-Machine (PowerShell)
Чтобы зарегистрировать пакет идентификации во время установки для всего компьютера:
powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "Add-AppxPackage -Stage <PackagePath> -ExternalLocation <ExternalLocation>; Add-AppxProvisionedPackage -Online -PackagePath <PackagePath>"
- Задайте
<PackagePath>
абсолютный путь к подписанному пакету удостоверений, создаваемому на предыдущем шаге (с именем файла). - Задайте
<ExternalLocation>
абсолютный путь к каталогу установки приложения (без имен исполняемых файлов).
Чтобы отменить регистрацию пакета удостоверений во время удаления на уровне компьютера:
powershell.exe -NoLogo -NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -Command "$packages = Get-AppxPackage <PackageName>; foreach ($package in $packages) { Remove-AppxProvisionedPackage -PackageName $package.PackageFullName -Online }; foreach ($package in $packages) { Remove-AppxPackage -Package $package.PackageFullName -AllUsers }
- Задайте
<PackageName>
имя пакета, определенное в манифесте пакета удостоверений (атрибут Name элемента Identity )
API-интерфейсы PackageManager
Если вы предпочитаете вызывать API ОС для регистрации и отмены регистрации пакета удостоверений, API PackageManager предоставляет эквивалентные функциональные возможности PowerShell. Рекомендации отличаются для установок на пользователя и на всю систему.
Ниже приведены фрагменты кода, демонстрирующие API. Готовый к работе код в C# и C++см. в разделе "Примеры приложений".
Per-User (PackageManager)
Приведенный ниже код демонстрирует регистрацию пакета удостоверений с помощью метода AddPackageByUriAsync и отмены регистрации пакета удостоверений с помощью метода RemovePackageAsync .
using Windows.Management.Deployment;
...
// Register the identity package during install
var externalUri = new Uri(externalLocation);
var packageUri = new Uri(packagePath);
var packageManager = new PackageManager();
var options = new AddPackageOptions();
options.ExternalLocationUri = externalUri;
await packageManager.AddPackageByUriAsync(packageUri, options);
...
// Unregister the identity package during uninstall
var packageManager = new PackageManager();
var packages = packageManager.FindPackagesForUserWithPackageTypes("", "<IdentityPackageFamilyName>", PackageType.Main);
foreach (var package in packages)
{
await packageManager.RemovePackageAsync(package.Id.FamilyName);
}
Обратите внимание на следующие важные сведения об этом коде:
- Задайте
externalLocation
абсолютный путь к каталогу установки приложения (без имен исполняемых файлов) - Задайте
packagePath
абсолютный путь к подписанному пакету удостоверений, создаваемому на предыдущем шаге (с именем файла) - Его
<IdentityPackageFamilyName>
можно найти в редакторе визуального манифеста в Visual Studio в разделе Упаковка под Имя семейства пакетов>.
Per-Machine (PackageManager)
Приведенный ниже код демонстрирует регистрацию пакета удостоверений с помощью методов StagePackageByUriAsync и ProvisionPackageForAllUsersAsync и отмены регистрации пакета удостоверений с помощью метода RemovePackageAsync .
// Register the identity package during install
var externalUri = new Uri(externalLocation);
var packageUri = new Uri(packagePath);
var packageManager = new PackageManager();
var options = new StagePackageOptions();
options.ExternalLocationUri = externalUri;
await packageManager.StagePackageByUriAsync(packageUri, options);
await packageManager.ProvisionPackageForAllUsersAsync(packageFamilyName);
...
// Unregister the identity package during uninstall
var packageManager = new PackageManager();
var packages = packageManager.FindPackagesForUserWithPackageTypes("", "<IdentityPackageFamilyName>", PackageType.Main);
foreach (var package in packages)
{
await packageManager.DeprovisionPackageForAllUsersAsync(package.Id.FamilyName);
await packageManager.RemovePackageAsync(package.Id.FamilyName, RemovalOptions.RemoveForAllUsers);
}
Обратите внимание на следующие важные сведения об этом коде:
- Задайте
externalLocation
абсолютный путь к каталогу установки приложения (без имен исполняемых файлов) - Задайте
packagePath
абсолютный путь к подписанному пакету удостоверений, создаваемому на предыдущем шаге (с именем файла) - Его
<IdentityPackageFamilyName>
можно найти в редакторе визуального манифеста в Visual Studio в разделе Упаковка>Имя семейства пакетов.
Примеры приложений
Полнофункциональные приложения на C# и C++, демонстрирующие, как зарегистрировать пакет удостоверений, см. в примерах PackageWithExternalLocation.
Другие необязательные шаги
Локализация и визуальные ресурсы
Некоторые функции, которые понимают идентификатор пакета, могут привести к строкам и изображениям, отображаемым в ОС Windows, из манифеста идентификатора пакета. Рассмотрим пример.
- Приложение, использующее API камеры, микрофона или расположения, будет иметь выделенный элемент управления в параметрах конфиденциальности Windows, а также запрос на согласие с брокером, который пользователи могут использовать для предоставления или запрета доступа к этим конфиденциальным ресурсам.
- Приложение, которое регистрирует цель общего доступа, отобразится в диалоге общего доступа.
Сведения о локализации строк в манифесте пакета удостоверений см. в разделе "Локализация манифеста".
При указании путей к изображениям в атрибутах VisualElements
в манифесте пакета удостоверений, указанные пути должны быть относительными путями в каталоге установки вашего приложения, которые разрешаются к изображениям типа .png, .jpgили .jpeg. Имена атрибутов указывают ожидаемые размеры изображений (150x150 и 40x40).
Windows developer