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

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

Требования

  • получите MakeAppx.exe через Windows SDK. в настоящее время эта функция доступна в предварительной версии Windows SDK 22000
  • получите SignTool.exe через Windows SDK. в настоящее время эта функция доступна в предварительной версии Windows SDK 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), чтобы создать каталог, который будет использоваться для подписывания артефакта. Назовите его как угодно, артефакт. 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 с флагом /ПБ , чтобы указать файл моста издателя:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Подписывание пакета с помощью нового сертификата
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

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

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

  • Рекомендуется, чтобы каталог был должен иметь метку времени. Для этого необходимо добавить эти аргументы в вызов SignTool перед путем к каталогу:/ТД SHA256/TR

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

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

  • Эта функция работает как с пакетами MSIX, так и с пакетами MSIX