Identidade persistente do MSIX
Esse recurso permite a capacidade de assinar pacotes com um novo certificado enquanto ainda mantém a experiência de atualização do aplicativo. Em outras palavras, isso permite que o pacote mantenha sua identidade de pacote antiga na plataforma sem ter a necessidade de assinar com o certificado antigo (original). A partir do Windows Insider Preview Build 22000, um artefato precisará ser criado para mostrar a relação entre o certificado antigo e o novo certificado que está sendo usado para assinatura. Abaixo está uma explicação passo a passo de como persistir com a identidade do pacote para manter a experiência de atualização.
Requisitos
- Obtenha o MakeAppx.exe por meio do SDK do Windows. Esse recurso está atualmente disponível no Windows SDK Preview 22000
- Obtenha SignTool.exe por meio do SDK do Windows. Esse recurso está atualmente disponível no Windows SDK Preview 22000
- O certificado antigo (CN=Old) que foi usado para assinar o pacote original
- O novo certificado (CN=New) que será usado para assinar o pacote
Passo a passo
Esta é uma instrução passo a passo sobre como assinar seu pacote com o novo certificado, mantendo a identidade do pacote.
Criar o artefato
- Escreva o artefato XML detalhando os editores antigos e novos. Nomeie-o como quiser, artefato.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Publisher xmlns="http://schemas.microsoft.com/appx/publisherbridging/2021" Old="CN=Old" New="CN=New" />
- Escreva um arquivo de definição de catálogo (CDF) para criar o catálogo que será usado para assinar o artefato. Nomeie-o como quiser, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256
[CatalogFiles]
<HASH>artifact.xml=artifact.xml
- Execute makecat.exe neste CDF. Ele criará o arquivo especificado nele
makecat.exe artifact.cdf
- Assinar o catálogo usando o certificado antigo
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat
Neste ponto, você só precisa manter os arquivos XML e CAT depois disso. Você pode criar vários artefatos, no entanto, a plataforma atualmente suporta até 5.
Observação
Recomendamos que você carimbe o carimbo de data/hora do arquivo de catálogo. Se o catálogo não tiver carimbo de data/hora, o artefato se tornará inútil no momento em que o certificado antigo expirar.
Criar o pacote
- Crie um arquivo de ponte do editor para informar ao makeappx.exe quais artefatos usar. Esse arquivo é como o arquivo de mapeamento. Nomeie-o como quiser, artefatos.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"
Cada linha deve conter um par de caminhos de arquivo XML e CAT. Os artefatos devem ser ordenados à medida que são aplicados. Se você tiver dois artefatos, um para o Publisher1-Publisher2 e outro para o Publisher2-Publisher3, liste primeiro o do Publisher1-Publisher2>>>
- Chame makeappx.exe com sinalizador /pb para apontar para o arquivo de ponte do editor:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
- Assinar seu pacote usando o novo certificado
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix
Agora você tem um pacote que tem o(s) artefato(s) armazenado(s) dentro dele e foi assinado com o novo certificado. Você pode implantar o pacote como qualquer outro pacote MSIX.
Considerações
Recomendamos que o catálogo tenha carimbo de data/hora. Para fazer isso, você precisaria adicionar esses argumentos na chamada para signtool antes do caminho para o catálogo: /td SHA256 /tr
Você ainda precisará instalar o certificado antigo (recomendado com carimbo de data/hora) na máquina para que a plataforma instale o pacote que foi assinado pelo novo certificado.
Para aproveitar esse recurso, você precisará fazer isso antes que o certificado antigo expire.
Esse recurso funciona para pacotes MSIX e pacotes MSIX