<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deployment on kenji.blog</title><link>http://kenji.blog/pt/tags/deployment/</link><description>Recent content in Deployment on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>pt</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 22:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/pt/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Como criar pacotes MSIX para Windows 11 e a armadilha do certificado autoassinado</title><link>http://kenji.blog/pt/p/windows-11-msix-packaging-guide/</link><pubDate>Sat, 12 Sep 2026 22:00:00 +0900</pubDate><guid>http://kenji.blog/pt/p/windows-11-msix-packaging-guide/</guid><description>&lt;img src="http://kenji.blog/p/windows-11-msix-packaging-guide/img/eyecatch.jpg" alt="Featured image of post Como criar pacotes MSIX para Windows 11 e a armadilha do certificado autoassinado" />&lt;p>Na era do Windows 11, o &amp;ldquo;MSIX&amp;rdquo; está se tornando a escolha padrão como formato de distribuição de aplicativos. Os instaladores tradicionais como MSI e EXE tinham muitos problemas, mas o MSIX é esperado como uma tecnologia de empacotamento de próxima geração que os resolve. No entanto, quando os desenvolvedores tentam criar um pacote MSIX e realizar o sideloading em um ambiente de teste ou na organização, eles frequentemente caem na &amp;ldquo;armadilha do certificado autoassinado&amp;rdquo;.&lt;/p>
&lt;p>Neste artigo, explicaremos de forma muito detalhada desde os detalhes técnicos do MSIX, como criar pacotes usando o Visual Studio ou ferramentas de linha de comando, até as causas e soluções para os erros relacionados a certificados autoassinados que muitos desenvolvedores enfrentam. O objetivo é ser um guia essencial para desenvolvedores de aplicativos do Windows, administradores de infraestrutura e responsáveis por empacotamento.&lt;/p>
&lt;h2 id="1-o-que-é-msix-comparação-com-msiexe-tradicionais">1. O que é MSIX? Comparação com MSI/EXE tradicionais
&lt;/h2>&lt;p>O MSIX é o formato de pacote de aplicativos mais recente para Windows fornecido pela Microsoft. Ele integra todos os excelentes recursos e conceitos do MSI (Microsoft Installer), instaladores personalizados baseados em .exe, App-V (Application Virtualization) e AppX (pacote de aplicativos da Universal Windows Platform) introduzidos a partir do Windows 8, e evoluiu para atender aos modernos requisitos de segurança e implantação.&lt;/p>
&lt;h3 id="problemas-dos-instaladores-tradicionais-msiexe">Problemas dos instaladores tradicionais (MSI/EXE)
&lt;/h3>&lt;p>O MSI e o EXE, que têm sido usados como o formato de instalação padrão do Windows por muitos anos, tinham problemas fundamentais como os seguintes.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Fenômeno Win Rot (Degradação do Windows)&lt;/strong>: À medida que os aplicativos são instalados e desinstalados repetidamente, chaves desnecessárias permanecem no registro e DLLs são deixadas em pastas do sistema (como &lt;code>C:\Windows\System32&lt;/code>). Isso faz com que o funcionamento do próprio sistema operacional fique gradualmente mais lento e instável.&lt;/li>
&lt;li>&lt;strong>Inferno de DLL (DLL Hell)&lt;/strong>: Quando vários aplicativos tentam instalar uma DLL com o mesmo nome (mas de versões diferentes) em um diretório de sistema compartilhado, o aplicativo instalado posteriormente pode sobrescrever a DLL existente, fazendo com que o aplicativo instalado anteriormente pare de funcionar corretamente.&lt;/li>
&lt;li>&lt;strong>Instabilidade devido a ações personalizadas&lt;/strong>: Em pacotes MSI, scripts arbitrários ou código chamado &amp;ldquo;ação personalizada&amp;rdquo; (custom action) podem ser executados com privilégios de sistema durante a instalação e desinstalação. Isso trazia o risco de o instalador travar no meio do processo ou causar alterações inesperadas nas configurações do sistema.&lt;/li>
&lt;/ol>
&lt;h3 id="solução-através-da-arquitetura-em-contêineres-do-msix">Solução através da arquitetura em contêineres do MSIX
&lt;/h3>&lt;p>O MSIX resolve esses problemas executando aplicativos em &amp;ldquo;contêineres&amp;rdquo; leves. Essa abordagem de conteinerização oferece benefícios enormes como os seguintes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Desinstalação limpa&lt;/strong>: Aplicativos instalados via MSIX realizam gravações no sistema de arquivos e no registro de forma virtualizada (VFS: Virtual File System, VReg: Virtual Registry). Portanto, na desinstalação, esse contêiner virtualizado é excluído por completo, não deixando lixo (resquícios) no sistema. Previne completamente o Win Rot.&lt;/li>
&lt;li>&lt;strong>Isolamento e Segurança (Isolation)&lt;/strong>: Cada aplicativo é executado dentro de seu próprio ambiente e não destrói diretamente as DLLs ou recursos de outros aplicativos. Isso liberta do inferno de DLL.&lt;/li>
&lt;li>&lt;strong>Otimização da largura de banda de rede&lt;/strong>: O mecanismo de atualização do MSIX é excelente, suportando atualizações diferenciais em nível de bloco (Differential Update). Como ele baixa apenas os poucos blocos alterados nos dados binários, o impacto na rede é minimizado mesmo ao atualizar aplicativos grandes.&lt;/li>
&lt;li>&lt;strong>Estado de instalação garantido&lt;/strong>: O pacote inclui um arquivo de manifesto (&lt;code>AppxManifest.xml&lt;/code>), e as transações de instalação são rigorosamente gerenciadas em nível de sistema operacional. Em caso de falha, ocorre a reversão completa (rollback) para o estado original.&lt;/li>
&lt;/ul>
&lt;h2 id="2-visão-geral-da-criação-de-pacotes-msix-e-cadeia-de-ferramentas-toolchain">2. Visão geral da criação de pacotes MSIX e cadeia de ferramentas (Toolchain)
&lt;/h2>&lt;p>Para criar pacotes MSIX, existem duas abordagens principais. Uma é usar o Ambiente de Desenvolvimento Integrado (IDE) do Visual Studio e a outra é fazer uso total das ferramentas de linha de comando (&lt;code>MakeAppx.exe&lt;/code> e &lt;code>SignTool.exe&lt;/code>) incluídas no Windows SDK.&lt;/p>
&lt;p>O diagrama Mermaid abaixo mostra o processo desde os arquivos de origem até a geração final do pacote MSIX assinado.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Arquivos de Origem (EXE, DLL, Assets, etc.)&amp;#34;] --&amp;gt; B[&amp;#34;AppxManifest.xml (Definição de Manifesto)&amp;#34;]
B --&amp;gt; C[&amp;#34;MakeAppx.exe (Empacotador MSIX)&amp;#34;]
C --&amp;gt; D[&amp;#34;Pacote MSIX Não Assinado (.msix)&amp;#34;]
E[&amp;#34;Certificado Digital (.pfx)&amp;#34;] --&amp;gt; F[&amp;#34;SignTool.exe (Assinador Digital)&amp;#34;]
D --&amp;gt; F
F --&amp;gt; G[&amp;#34;Pacote MSIX Assinado (Pronto para Implantação)&amp;#34;]
style A fill:#f9f9f9,stroke:#333
style B fill:#e6f7ff,stroke:#333
style D fill:#ffcccb,stroke:#333
style G fill:#d4edda,stroke:#333
&lt;/pre>
&lt;p>Como pode ser visto a partir desse processo, simplesmente reunir e empacotar os arquivos (packaging) não é suficiente; a etapa de &amp;ldquo;assinatura digital&amp;rdquo; é sempre necessária. O Windows 11 não permite a instalação de pacotes MSIX não assinados por razões de segurança, em nenhuma circunstância.&lt;/p>
&lt;h2 id="3-abordagem-a-criando-msix-usando-o-visual-studio">3. Abordagem A: Criando MSIX usando o Visual Studio
&lt;/h2>&lt;p>O método mais fácil e comum é usar o &amp;ldquo;Windows Application Packaging Project (WAP)&amp;rdquo; do Visual Studio. Usando esse modelo de projeto, é possível converter facilmente para MSIX aplicativos em WPF, Windows Forms, WinUI 3 ou até mesmo aplicativos legados Win32 em C++.&lt;/p>
&lt;h3 id="guia-passo-a-passo">Guia passo a passo
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Adicionar o projeto WAP&lt;/strong>: Clique com o botão direito do mouse na solução existente do Visual Studio e selecione &amp;ldquo;Adicionar Novo Projeto&amp;rdquo; -&amp;gt; &amp;ldquo;Windows Application Packaging Project&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Selecionar a plataforma de destino&lt;/strong>: Especifique a versão mínima e a versão de destino do Windows 10/11 suportada pelo aplicativo.&lt;/li>
&lt;li>&lt;strong>Referência do aplicativo&lt;/strong>: Clique com o botão direito do mouse no nó &amp;ldquo;Aplicativos&amp;rdquo; do projeto de empacotamento e, em &amp;ldquo;Adicionar Referência&amp;rdquo;, selecione o projeto principal que deseja empacotar (por exemplo, um projeto WPF).&lt;/li>
&lt;li>&lt;strong>Configuração do manifesto&lt;/strong>: Dê um duplo clique no arquivo &lt;code>Package.appxmanifest&lt;/code> para abrir o designer visual. Aqui, configure o nome de exibição, a descrição, a imagem do logotipo do aplicativo e, mais importante, o &amp;ldquo;Nome do Pacote (Identity Name)&amp;rdquo; e o &amp;ldquo;Fornecedor (Publisher)&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Criação do pacote&lt;/strong>: Clique com o botão direito do mouse no projeto e selecione &amp;ldquo;Publicar&amp;rdquo; -&amp;gt; &amp;ldquo;Criar Pacotes de Aplicativos&amp;rdquo;. Ao selecionar &amp;ldquo;Sideloading&amp;rdquo; e escolher a arquitetura (x64, ARM64, etc.), o Visual Studio cuidará automaticamente da compilação, do empacotamento com o &lt;code>MakeAppx&lt;/code> e da geração de um certificado autoassinado junto com a assinatura.&lt;/li>
&lt;/ol>
&lt;p>É um processo muito fluido, mas se você usar o certificado autoassinado (Test Certificate) gerado automaticamente pelo Visual Studio aqui, você cairá na &amp;ldquo;armadilha&amp;rdquo; mencionada mais adiante.&lt;/p>
&lt;h2 id="4-abordagem-b-criando-usando-a-linha-de-comando-makeappxexe">4. Abordagem B: Criando usando a linha de comando (MakeAppx.exe)
&lt;/h2>&lt;p>As ferramentas de linha de comando são necessárias para automação em pipelines CI/CD ou ao reempacotar manualmente arquivos de um instalador existente. Se o Windows SDK estiver instalado no seu ambiente, você pode acessar as seguintes ferramentas através do prompt de comando do desenvolvedor.&lt;/p>
&lt;h3 id="1-preparação-do-arquivo-de-manifesto">1. Preparação do arquivo de manifesto
&lt;/h3>&lt;p>Crie um &lt;code>AppxManifest.xml&lt;/code> com as informações mínimas necessárias no diretório raiz do pacote.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;Package&lt;/span> &lt;span class="na">xmlns=&lt;/span>&lt;span class="s">&amp;#34;http://schemas.microsoft.com/appx/manifest/foundation/windows10&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">xmlns:uap=&lt;/span>&lt;span class="s">&amp;#34;http://schemas.microsoft.com/appx/manifest/uap/windows10&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">xmlns:rescap=&lt;/span>&lt;span class="s">&amp;#34;http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Identity&lt;/span> &lt;span class="na">Name=&lt;/span>&lt;span class="s">&amp;#34;MyCompany.AwesomeApp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Publisher=&lt;/span>&lt;span class="s">&amp;#34;CN=MyCompany Self-Signed, O=MyCompany&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Version=&lt;/span>&lt;span class="s">&amp;#34;1.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">ProcessorArchitecture=&lt;/span>&lt;span class="s">&amp;#34;x64&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Properties&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;DisplayName&amp;gt;&lt;/span>Awesome App&lt;span class="nt">&amp;lt;/DisplayName&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;PublisherDisplayName&amp;gt;&lt;/span>My Company&lt;span class="nt">&amp;lt;/PublisherDisplayName&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Logo&amp;gt;&lt;/span>Assets\StoreLogo.png&lt;span class="nt">&amp;lt;/Logo&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Properties&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Resource&lt;/span> &lt;span class="na">Language=&lt;/span>&lt;span class="s">&amp;#34;en-us&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Resource&lt;/span> &lt;span class="na">Language=&lt;/span>&lt;span class="s">&amp;#34;ja-jp&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Resources&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;TargetDeviceFamily&lt;/span> &lt;span class="na">Name=&lt;/span>&lt;span class="s">&amp;#34;Windows.Desktop&amp;#34;&lt;/span> &lt;span class="na">MinVersion=&lt;/span>&lt;span class="s">&amp;#34;10.0.17763.0&amp;#34;&lt;/span> &lt;span class="na">MaxVersionTested=&lt;/span>&lt;span class="s">&amp;#34;10.0.22000.0&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Capabilities&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;rescap:Capability&lt;/span> &lt;span class="na">Name=&lt;/span>&lt;span class="s">&amp;#34;runFullTrust&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Capabilities&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Applications&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;Application&lt;/span> &lt;span class="na">Id=&lt;/span>&lt;span class="s">&amp;#34;AwesomeApp&amp;#34;&lt;/span> &lt;span class="na">Executable=&lt;/span>&lt;span class="s">&amp;#34;AwesomeApp.exe&amp;#34;&lt;/span> &lt;span class="na">EntryPoint=&lt;/span>&lt;span class="s">&amp;#34;Windows.FullTrustApplication&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;uap:VisualElements&lt;/span> &lt;span class="na">DisplayName=&lt;/span>&lt;span class="s">&amp;#34;Awesome App&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Description=&lt;/span>&lt;span class="s">&amp;#34;The best app ever.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">BackgroundColor=&lt;/span>&lt;span class="s">&amp;#34;transparent&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Square150x150Logo=&lt;/span>&lt;span class="s">&amp;#34;Assets\Square150x150Logo.png&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Square44x44Logo=&lt;/span>&lt;span class="s">&amp;#34;Assets\Square44x44Logo.png&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/uap:VisualElements&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Application&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/Applications&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/Package&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O importante aqui é que o valor de &lt;code>&amp;lt;Identity Publisher=&amp;quot;...&amp;quot; /&amp;gt;&lt;/code> deve corresponder exatamente ao Subject do certificado que será usado posteriormente para a assinatura.&lt;/p>
&lt;h3 id="2-empacotamento-com-o-makeappx">2. Empacotamento com o MakeAppx
&lt;/h3>&lt;p>Execute o seguinte comando no prompt de comando para consolidar o diretório em um arquivo MSIX.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cmd" data-lang="cmd">&lt;span class="line">&lt;span class="cl">MakeAppx.exe pack /d &lt;span class="s2">&amp;#34;C:\Path\To\AppFolder&amp;#34;&lt;/span> /p &lt;span class="s2">&amp;#34;C:\Path\To\Output\AwesomeApp_1.0.0.0_x64.msix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Isso concluirá a criação do arquivo MSIX não assinado, mas, nesse estado, ele não pode ser instalado no Windows.&lt;/p>
&lt;h2 id="5-assinatura-digital-e-contexto-matemático-da-criptografia">5. Assinatura digital e contexto matemático da criptografia
&lt;/h2>&lt;p>Para entender profundamente por que os pacotes MSIX precisam de assinatura, é necessário compreender o mecanismo criptográfico por trás da assinatura digital. A assinatura digital garante que o pacote &amp;ldquo;foi certamente criado pelo fornecedor especificado (autenticidade)&amp;rdquo; e &amp;ldquo;não foi adulterado por terceiros desde a sua criação até agora (integridade)&amp;rdquo;.&lt;/p>
&lt;p>A assinatura do MSIX geralmente usa uma combinação da criptografia RSA e SHA-256 (Secure Hash Algorithm 256-bit).&lt;/p>
&lt;h3 id="aplicação-da-função-hash">Aplicação da função hash
&lt;/h3>&lt;p>Primeiro, considere que todos os binários (conteúdo) do pacote MSIX sejam a mensagem $M$. A ferramenta de assinatura (SignTool.exe) aplica a função de hash criptográfico SHA-256 a esta mensagem $M$ para calcular um valor de hash $H(M)$ de comprimento fixo (256 bits).&lt;/p>
&lt;h3 id="geração-da-assinatura-fornecedor">Geração da assinatura (Fornecedor)
&lt;/h3>&lt;p>Em seguida, o fornecedor usa a sua própria &amp;ldquo;chave privada (Private Key)&amp;rdquo; $d$ para criptografar o valor do hash e gerar a assinatura digital $\sigma$. No contexto do algoritmo RSA, isso é expresso como uma exponenciação modular, da seguinte forma:&lt;/p>
$$ \sigma \equiv (H(M))^d \pmod n $$&lt;p>Aqui, $n$ é o módulo RSA (o produto de dois grandes números primos). Um certificado (no formato X.509) contendo esta assinatura $\sigma$ e a &amp;ldquo;chave pública (Public Key)&amp;rdquo; $e$ do fornecedor é incorporado como parte do pacote MSIX (&lt;code>AppxSignature.p7x&lt;/code>).&lt;/p>
&lt;h3 id="verificação-da-assinatura-sistema-operacional-windows">Verificação da assinatura (Sistema Operacional Windows)
&lt;/h3>&lt;p>Quando o usuário tenta instalar o MSIX, o sistema operacional Windows extrai a chave pública $e$ do certificado dentro do pacote e realiza o seguinte cálculo para restaurar o valor do hash $H'(M)$:&lt;/p>
$$ H'(M) \equiv \sigma^e \pmod n $$&lt;p>Simultaneamente, o sistema operacional recalcula o valor de hash $H(M)$ de todo o pacote MSIX baixado $M$ por conta própria.
Por fim, ele verifica se o valor do hash restaurado é igual ao valor do hash recalculado ($H(M) = H'(M)$). Se essa equação for verdadeira, está matematicamente provado que &amp;ldquo;o arquivo não foi adulterado nem em 1 bit após a assinatura&amp;rdquo;.&lt;/p>
&lt;h2 id="6-a-maior-barreira-a-armadilha-do-certificado-autoassinado">6. A maior barreira: &amp;ldquo;A armadilha do certificado autoassinado&amp;rdquo;
&lt;/h2>&lt;p>Mesmo que a prova matemática acima seja perfeita, o Windows 11 não permite a instalação apenas com isso. Isso ocorre porque é necessário verificar a &amp;ldquo;Cadeia de Confiança (Chain of Trust)&amp;rdquo;: &amp;ldquo;O proprietário da chave pública (certificado) é realmente a organização/pessoa segura que afirma ser?&amp;rdquo;&lt;/p>
&lt;p>Se o certificado for emitido por uma Autoridade de Certificação Raiz (Root CA) pública, previamente confiável pelo sistema operacional, como VeriSign ou DigiCert, ele pode ser instalado sem problemas (os aplicativos distribuídos via Microsoft Store também são igualmente confiáveis pelo certificado raiz da Microsoft).&lt;/p>
&lt;p>No entanto, em ferramentas exclusivas internas ou em desenvolvimento, onde o custo de compra de um certificado público não se justifica, o desenvolvedor emite o certificado por conta própria. Isso é o &amp;ldquo;certificado autoassinado (Self-Signed Certificate)&amp;rdquo;.&lt;/p>
&lt;p>O diagrama de sequência abaixo mostra o comportamento do sistema operacional ao tentar instalar um pacote MSIX assinado com um certificado autoassinado.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
autonumber
participant U as &amp;#34;Usuário (Windows 11)&amp;#34;
participant P as &amp;#34;Instalador de Aplicativo MSIX&amp;#34;
participant C as &amp;#34;Repositório de Certificados do Windows&amp;#34;
U-&amp;gt;&amp;gt;P: &amp;#34;Duplo clique no arquivo .msix&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Lê AppxSignature.p7x&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Extrai Assinatura e Certificado&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Verifica Matemática (Hashes coincidem?)&amp;#34;
P-&amp;gt;&amp;gt;C: &amp;#34;Verifica Confiança do Certificado do Fornecedor&amp;#34;
alt &amp;#34;O Certificado está no Repositório de CAs Raiz Confiáveis&amp;#34;
C--&amp;gt;&amp;gt;P: &amp;#34;Confiança Verificada com Sucesso&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Solicita Instalação (O botão Instalar está ATIVO)&amp;#34;
U-&amp;gt;&amp;gt;P: &amp;#34;Clica em Instalar&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Instalação Bem-sucedida&amp;#34;
else &amp;#34;O Certificado NÃO é Confiável (A Armadilha)&amp;#34;
C--&amp;gt;&amp;gt;P: &amp;#34;Falha na Verificação de Confiança (0x800B0109)&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Exibe Erro: Cadeia de certificados processada, mas terminou num certificado raiz que não é confiável&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;O botão Instalar está DESATIVADO&amp;#34;
end
&lt;/pre>
&lt;p>Isso é exatamente a &amp;ldquo;armadilha&amp;rdquo;. Mesmo que o próprio desenvolvedor o tenha criado e assinado corretamente, o estado padrão do Windows 11 não conhece (não confia) nesse certificado autoassinado, de modo que a instalação é bloqueada com o código de erro &lt;code>0x800B0109&lt;/code>. O botão &amp;ldquo;Instalar&amp;rdquo; do instalador fica acinzentado e não pode ser pressionado.&lt;/p>
&lt;p>Muitos desenvolvedores se deparam com esse erro e caem no labirinto de reescrever o arquivo de manifesto várias vezes pensando &amp;ldquo;O MSIX está cheio de bugs&amp;rdquo; ou &amp;ldquo;Minhas configurações devem estar incorretas&amp;rdquo;, mas o problema não está na estrutura do pacote, e sim na presença ou ausência do registro no Repositório de Certificados (Certificate Store) do sistema operacional.&lt;/p>
&lt;h2 id="7-solução-criação-e-implantação-de-um-certificado-autoassinado-usando-powershell">7. Solução: Criação e implantação de um certificado autoassinado usando PowerShell
&lt;/h2>&lt;p>Para resolver esse problema, é necessário executar confiavelmente as duas etapas a seguir.&lt;/p>
&lt;ol>
&lt;li>Criar um certificado autoassinado válido e exportar o arquivo PFX contendo a chave privada.&lt;/li>
&lt;li>Instalar a parte da chave pública do certificado criado (arquivo CER) no repositório &lt;strong>&amp;ldquo;Autoridades de Certificação Raiz Confiáveis&amp;rdquo; (Trusted Root Certification Authorities) de todos os PCs de destino&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>Isso pode ser feito de forma confiável e automática usando o PowerShell.&lt;/p>
&lt;h3 id="etapa-1-criação-e-exportação-do-certificado-autoassinado">Etapa 1: Criação e exportação do certificado autoassinado
&lt;/h3>&lt;p>Primeiro, inicie o PowerShell com privilégios de administrador e execute o script a seguir para criar o certificado. Aqui, iremos gerar um certificado especializado para assinatura de código (Code Signing).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 1. Definição de parâmetros&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$SubjectName&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;CN=MyCompany Self-Signed, O=MyCompany&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$CertStoreLocation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;Cert:\CurrentUser\My&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 2. Geração do certificado autoassinado (Uso para Code Signing: 1.3.6.1.5.5.7.3.3)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$Cert&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-SelfSignedCertificate&lt;/span> &lt;span class="n">-Type&lt;/span> &lt;span class="n">Custom&lt;/span> &lt;span class="p">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">-Subject&lt;/span> &lt;span class="nv">$SubjectName&lt;/span> &lt;span class="p">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">-KeyUsage&lt;/span> &lt;span class="n">DigitalSignature&lt;/span> &lt;span class="p">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">-FriendlyName&lt;/span> &lt;span class="s2">&amp;#34;MyCompany MSIX Signing Cert&amp;#34;&lt;/span> &lt;span class="p">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">-CertStoreLocation&lt;/span> &lt;span class="nv">$CertStoreLocation&lt;/span> &lt;span class="p">`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">-TextExtension&lt;/span> &lt;span class="vm">@&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;2.5.29.37={text}1.3.6.1.5.5.7.3.3&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;2.5.29.19={text}&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;Certificado gerado com sucesso. Thumbprint: &lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="nv">$Cert&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Thumbprint&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 3. Criação de senha para exportação do PFX (com chave privada)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$Password&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">ConvertTo-SecureString&lt;/span> &lt;span class="n">-String&lt;/span> &lt;span class="s2">&amp;#34;YourSecurePassword123!&amp;#34;&lt;/span> &lt;span class="n">-Force&lt;/span> &lt;span class="n">-AsPlainText&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 4. Exportação do arquivo PFX (Para assinatura com SignTool)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$PfxPath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Output\MyCompanyCert.pfx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Export-PfxCertificate&lt;/span> &lt;span class="n">-Cert&lt;/span> &lt;span class="nv">$Cert&lt;/span> &lt;span class="n">-FilePath&lt;/span> &lt;span class="nv">$PfxPath&lt;/span> &lt;span class="n">-Password&lt;/span> &lt;span class="nv">$Password&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># 5. Exportação do arquivo CER (Apenas chave pública, para instalação em PCs clientes)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$CerPath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Output\MyCompanyCert.cer&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Export-Certificate&lt;/span> &lt;span class="n">-Cert&lt;/span> &lt;span class="nv">$Cert&lt;/span> &lt;span class="n">-FilePath&lt;/span> &lt;span class="nv">$CerPath&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Usaremos o arquivo &lt;code>$PfxPath&lt;/code> criado aqui para assinar o pacote MSIX.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cmd" data-lang="cmd">&lt;span class="line">&lt;span class="cl">SignTool.exe sign /fd SHA256 /a /f &lt;span class="s2">&amp;#34;C:\Path\To\Output\MyCompanyCert.pfx&amp;#34;&lt;/span> /p &lt;span class="s2">&amp;#34;YourSecurePassword123!&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Output\AwesomeApp_1.0.0.0_x64.msix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="etapa-2-instalação-do-certificado-no-pc-cliente-desarmando-a-armadilha">Etapa 2: Instalação do certificado no PC cliente (Desarmando a armadilha)
&lt;/h3>&lt;p>Se você levar o MSIX assinado para outro PC (ou ambiente virtual) e simplesmente der um duplo clique, ele não será instalado, conforme mencionado antes. Previamente (ou simultaneamente), você deve instalar o arquivo &lt;code>$CerPath&lt;/code> exportado anteriormente nas &amp;ldquo;Autoridades de Certificação Raiz Confiáveis&amp;rdquo; do &amp;ldquo;Computador local&amp;rdquo;.&lt;/p>
&lt;p>Para fazer isso, abra o PowerShell com &lt;strong>privilégios de administrador&lt;/strong> no PC de destino e execute o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Caminho para o arquivo CER&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$CerPath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Output\MyCompanyCert.cer&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Importar para as &amp;#34;Autoridades de Certificação Raiz Confiáveis&amp;#34; da máquina local&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Import-Certificate&lt;/span> &lt;span class="n">-FilePath&lt;/span> &lt;span class="nv">$CerPath&lt;/span> &lt;span class="n">-CertStoreLocation&lt;/span> &lt;span class="s2">&amp;#34;Cert:\LocalMachine\Root&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;O certificado foi instalado nas Autoridades de Certificação Raiz Confiáveis.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>[!CAUTION]
A adição ao repositório de autoridades de certificação raiz do &amp;ldquo;Computador local (&lt;code>LocalMachine&lt;/code>)&amp;rdquo; exige privilégios de administrador. Tenha cuidado, pois colocar no repositório individual do usuário (&lt;code>CurrentUser&lt;/code>) pode não ser reconhecido devido ao contexto de permissões do App Installer.&lt;/p>
&lt;/blockquote>
&lt;p>Logo após a execução bem-sucedida desse script, tente dar um duplo clique novamente no arquivo MSIX que apresentava erro. Como um passe de mágica, a mensagem de erro desaparecerá e um botão de &amp;ldquo;Instalar&amp;rdquo; ativo e azul brilhante deve ser exibido. Com isso, superamos completamente a &amp;ldquo;armadilha do certificado autoassinado&amp;rdquo;.&lt;/p>
&lt;h2 id="8-operação-e-melhores-práticas-em-ambiente-corporativo">8. Operação e melhores práticas em ambiente corporativo
&lt;/h2>&lt;p>Embora as etapas acima sejam suficientes para testes locais do desenvolvedor, quando se implementa um aplicativo de sideloading em dezenas ou centenas de PCs na empresa, fazer com que cada usuário execute o script de instalação do certificado é inviável e traz riscos de segurança.&lt;/p>
&lt;p>As melhores práticas em um ambiente corporativo são as seguintes:&lt;/p>
&lt;h3 id="1-utilização-de-políticas-de-grupo-do-active-directory-gpo">1. Utilização de Políticas de Grupo do Active Directory (GPO)
&lt;/h3>&lt;p>Se a sua empresa usa Active Directory, você pode usar as &amp;ldquo;Políticas de Chave Pública&amp;rdquo; da GPO para distribuir automaticamente certificados autoassinados (arquivos CER) para as &amp;ldquo;Autoridades de Certificação Raiz Confiáveis&amp;rdquo; de todos os PCs no domínio. Dessa forma, os funcionários podem instalar os aplicativos com um simples duplo clique no arquivo MSIX de uma pasta compartilhada, sem sequer precisarem se preocupar com os certificados.&lt;/p>
&lt;h3 id="2-implantação-através-do-microsoft-intune-mdm">2. Implantação através do Microsoft Intune (MDM)
&lt;/h3>&lt;p>Em ambientes modernos, o gerenciamento de dispositivos é feito usando o Microsoft Intune. Com o Intune, você pode usar o recurso de &amp;ldquo;Perfil de configuração&amp;rdquo; (Configuration Profile) para enviar o certificado confiável (.cer) aos endpoints via push. Em seguida, o próprio pacote MSIX pode ser implantado como uma instalação silenciosa, como um aplicativo LOB (Line of Business).&lt;/p>
&lt;h3 id="3-atualizações-automáticas-com-o-arquivo-app-installer-appinstaller">3. Atualizações automáticas com o arquivo App Installer (.appinstaller)
&lt;/h3>&lt;p>O MSIX possui um poderoso recurso integrado para automatizar atualizações de aplicativos. Ao criar um arquivo &lt;code>.appinstaller&lt;/code> baseado em XML e colocá-lo em um servidor web ou pasta compartilhada SMB, o aplicativo verificará automaticamente, em segundo plano durante a inicialização, a existência de novas versões do MSIX e aplicará a atualização automaticamente.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;AppInstaller&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Uri=&lt;/span>&lt;span class="s">&amp;#34;https://internal.mycompany.com/apps/AwesomeApp.appinstaller&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Version=&lt;/span>&lt;span class="s">&amp;#34;1.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">xmlns=&lt;/span>&lt;span class="s">&amp;#34;http://schemas.microsoft.com/appx/appinstaller/2018&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;MainPackage&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Name=&lt;/span>&lt;span class="s">&amp;#34;MyCompany.AwesomeApp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Publisher=&lt;/span>&lt;span class="s">&amp;#34;CN=MyCompany Self-Signed, O=MyCompany&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Version=&lt;/span>&lt;span class="s">&amp;#34;1.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">ProcessorArchitecture=&lt;/span>&lt;span class="s">&amp;#34;x64&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">Uri=&lt;/span>&lt;span class="s">&amp;#34;https://internal.mycompany.com/apps/AwesomeApp_1.0.0.0_x64.msix&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;UpdateSettings&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;OnLaunch&lt;/span> &lt;span class="na">HoursBetweenUpdateChecks=&lt;/span>&lt;span class="s">&amp;#34;0&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/UpdateSettings&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/AppInstaller&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao distribuir e instalar este arquivo para os usuários, a partir desse momento, as atualizações de todos os usuários acontecerão automaticamente bastando substituir o arquivo MSIX no servidor e atualizar o número da versão no &lt;code>.appinstaller&lt;/code>.&lt;/p>
&lt;h2 id="9-solução-de-problemas-erros-comuns-relacionados-a-certificados">9. Solução de Problemas: Erros comuns relacionados a certificados
&lt;/h2>&lt;p>Por fim, aqui está um resumo de outros erros comuns que podem ocorrer em relação a certificados e assinaturas, juntamente com suas soluções.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>0x800B0101&lt;/strong>: O certificado usado para a assinatura expirou. Emita um novo certificado ou certifique-se de usar um servidor de carimbo de data/hora (por exemplo, &lt;code>http://timestamp.digicert.com&lt;/code>) no momento da assinatura para comprovar que o arquivo foi assinado durante o período de validade do certificado (se você adicionar o carimbo de data/hora, a assinatura será considerada válida mesmo após o vencimento do próprio certificado).&lt;/li>
&lt;li>&lt;strong>0x80080204&lt;/strong>: O valor de &lt;code>Publisher&lt;/code> descrito no &lt;code>AppxManifest.xml&lt;/code> não corresponde exatamente ao valor de &lt;code>Subject&lt;/code> no certificado. Verifique rigorosamente a exatidão exata da string, incluindo a presença ou ausência de espaços após as vírgulas.&lt;/li>
&lt;li>&lt;strong>Verificando o Visualizador de Eventos (Event Viewer)&lt;/strong>: Para encontrar a causa mais detalhada de um erro, é extremamente importante abrir o Visualizador de Eventos do Windows e verificar os logs em &amp;ldquo;Logs de Aplicativos e Serviços&amp;rdquo; -&amp;gt; &amp;ldquo;Microsoft&amp;rdquo; -&amp;gt; &amp;ldquo;Windows&amp;rdquo; -&amp;gt; &amp;ldquo;AppxPackagingOM&amp;rdquo; ou &amp;ldquo;AppXDeployment-Server&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h2 id="10-conclusão">10. Conclusão
&lt;/h2>&lt;p>O empacotamento MSIX para o Windows 11 é uma tecnologia poderosa que melhora dramaticamente a gestão do ciclo de vida dos aplicativos. Liberta os utilizadores do Win Rot e do Inferno de DLLs, proporcionando um ambiente limpo e seguro.&lt;/p>
&lt;p>Por outro lado, como o modelo de segurança se tornou mais rigoroso, é essencial um profundo entendimento de assinaturas digitais e da &amp;ldquo;cadeia de confiança&amp;rdquo; dos certificados. A &amp;ldquo;armadilha do certificado autoassinado&amp;rdquo; é um obstáculo enfrentado por quase todos os desenvolvedores ao entrar em contato com as tecnologias do MSIX pela primeira vez. Compreendendo os mecanismos de geração, exportação e importação de certificados para o repositório adequado explicados neste artigo, e usando scripts ou GPO para automação, você conseguirá realizar uma implantação tranquila, maximizando todo o potencial do MSIX.&lt;/p>
&lt;p>Use esse conhecimento e crie o ambiente de distribuição limpo de aplicativos Windows da próxima geração.&lt;/p></description></item></channel></rss>