Постоянный идентификатор MSIX

Эта функция позволяет подписывать пакеты новым сертификатом, сохраняя возможности обновления приложения. Другими словами, это позволяет пакету сохранять свое старое удостоверение пакета на платформе без необходимости подписывать старый (исходный) сертификат. Начиная с сборки предварительной оценки Windows 22000, необходимо создать артефакт, чтобы отобразить связь между старым сертификатом и новым сертификатом, используемым для подписи. Ниже приведено пошаговое описание того, как сохранить удостоверение пакета для поддержания взаимодействия с обновлением.

Requirements

  • Получите MakeAppx.exe через пакет SDK для Windows. Эта функция в настоящее время доступна в пакете SDK для Windows Preview 22000
  • Получите SignTool.exe через пакет SDK для Windows. Эта функция в настоящее время доступна в пакете SDK для Windows Preview 22000
  • Старый сертификат (CN=Old), который использовался для подписи исходного пакета
  • Новый сертификат (CN=New), который будет использоваться для подписи пакета

Пошаговое руководство

Это пошаговые инструкции по подписи пакета с помощью нового сертификата при сохранении удостоверения пакета.

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

  1. Напишите XML-артефакт, подробно содержащий старые и новые издатели. Присвойте ему имя, artifact.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Publisher xmlns="http://schemas.microsoft.com/appx/publisherbridging/2021" Old="CN=Old" New="CN=New" />
  1. Напишите файл определения каталога (CDF), чтобы создать каталог, который будет использоваться для подписи артефакта. Присвойте ему имя, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Запустите makecat.exe в этом CDF. Он создаст файл, указанный в нем
makecat.exe artifact.cdf
  1. Подписыв каталог с помощью старого сертификата
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

На этом этапе необходимо хранить только XML-файлы и CAT после этого. Вы можете создать несколько артефактов, однако платформа в настоящее время поддерживает до 5.

Примечание.

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

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

  1. Создайте файл с мостом издателя, чтобы сообщить makeappx.exe, какие артефакты следует использовать. Этот файл похож на файл сопоставления. Присвойте ему имя, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Каждая строка должна содержать пару путей к XML-файлам и CAT. Артефакты должны быть упорядочены по мере их применения. Если у вас есть два артефакта для выхода Publisher1-Publisher2> и другого для Publisher2-Publisher3, необходимо сначала указать один для Publisher1-Publisher2>>.

  1. Вызовите makeappx.exe с флагом /pb , чтобы указать файл бриджинга издателя:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Подписыв пакет с помощью нового сертификата
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

Теперь у вас есть пакет с артефактами, хранящимися внутри него, и подписан новым сертификатом. Вы можете развернуть пакет, как и любой другой пакет MSIX.

Рекомендации

  • Рекомендуется, чтобы каталог был меткой времени. Чтобы сделать это, необходимо добавить эти аргументы в вызов для входа перед путем к каталогу: /td SHA256 /tr

  • Вам по-прежнему потребуется установить старый сертификат (рекомендуется с меткой времени) на компьютере для установки пакета, подписанного новым сертификатом.

  • Чтобы использовать эту функцию, необходимо сделать это до истечения срока действия старого сертификата.

  • Эта функция работает как для пакетов MSIX, так и для пакетов MSIX