<?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/es/tags/deployment/</link><description>Recent content in Deployment on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 22:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Cómo crear paquetes MSIX para Windows 11 y la trampa de los certificados autofirmados</title><link>http://kenji.blog/es/p/windows-11-msix-packaging-guide/</link><pubDate>Sat, 12 Sep 2026 22:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 Cómo crear paquetes MSIX para Windows 11 y la trampa de los certificados autofirmados" />&lt;p>En la era de Windows 11, &amp;ldquo;MSIX&amp;rdquo; se está convirtiendo en la opción estándar como formato de distribución de aplicaciones. Los instaladores tradicionales como MSI o EXE tenían muchos problemas, pero se espera que MSIX sea la tecnología de empaquetado de próxima generación que los resuelva. Sin embargo, cuando los desarrolladores intentan crear un paquete MSIX y realizar &amp;ldquo;sideloading&amp;rdquo; (carga lateral) en su organización o entorno de prueba, a menudo caen en la &amp;ldquo;trampa de los certificados autofirmados&amp;rdquo;.&lt;/p>
&lt;p>En este artículo, explicaremos con gran detalle desde los aspectos técnicos de MSIX, cómo crear paquetes utilizando Visual Studio o herramientas de línea de comandos, hasta las causas y soluciones de los errores relacionados con los certificados autofirmados a los que se enfrentan muchos desarrolladores. Nuestro objetivo es que esta sea una guía de lectura obligatoria para los desarrolladores de aplicaciones de Windows, administradores de infraestructura y encargados de empaquetado.&lt;/p>
&lt;h2 id="1-qué-es-msix-comparación-con-los-tradicionales-msiexe">1. ¿Qué es MSIX? Comparación con los tradicionales MSI/EXE
&lt;/h2>&lt;p>MSIX es el formato de paquete de aplicaciones más reciente para Windows proporcionado por Microsoft. Integra todas las excelentes características y conceptos del tradicional MSI (Microsoft Installer), instaladores personalizados basados en .exe, App-V (Application Virtualization) y AppX (paquete de aplicaciones Universal Windows Platform) introducido desde Windows 8, y los ha evolucionado para satisfacer los requisitos modernos de seguridad y despliegue.&lt;/p>
&lt;h3 id="problemas-con-los-instaladores-tradicionales-msiexe">Problemas con los instaladores tradicionales (MSI/EXE)
&lt;/h3>&lt;p>MSI y EXE, que se han utilizado como formatos de instalación estándar de Windows durante muchos años, tenían los siguientes problemas fundamentales.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Fenómeno de Win Rot (Degradación de Windows)&lt;/strong>: El problema en el que, a medida que se instalan y desinstalan aplicaciones repetidamente, quedan claves innecesarias en el registro y DLLs abandonadas en las carpetas del sistema (como &lt;code>C:\Windows\System32&lt;/code>). Esto provoca que el rendimiento del propio sistema operativo se vuelva gradualmente más lento e inestable.&lt;/li>
&lt;li>&lt;strong>Infierno de las DLL (DLL Hell)&lt;/strong>: El problema que ocurre cuando varias aplicaciones intentan instalar una DLL con el mismo nombre (pero con versiones diferentes) en un directorio del sistema compartido. La aplicación instalada posteriormente sobrescribe la DLL existente, lo que hace que la aplicación instalada previamente deje de funcionar correctamente.&lt;/li>
&lt;li>&lt;strong>Inestabilidad debido a acciones personalizadas&lt;/strong>: En los paquetes MSI, cualquier script o código llamado &amp;ldquo;acción personalizada&amp;rdquo; puede ejecutarse con privilegios del sistema durante la instalación o desinstalación. Esto conllevaba el riesgo de que el instalador fallara en medio del proceso o provocara cambios inesperados en la configuración del sistema.&lt;/li>
&lt;/ol>
&lt;h3 id="solución-mediante-la-arquitectura-en-contenedores-de-msix">Solución mediante la arquitectura en contenedores de MSIX
&lt;/h3>&lt;p>MSIX resuelve estos problemas haciendo que la aplicación se ejecute dentro de un &amp;ldquo;contenedor&amp;rdquo; ligero. Este enfoque en contenedores tiene las siguientes ventajas enormes.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Desinstalación limpia&lt;/strong>: Las aplicaciones instaladas con MSIX escriben en el sistema de archivos y el registro de forma virtualizada (VFS: Virtual File System, VReg: Virtual Registry). Por lo tanto, al desinstalar, todo este contenedor virtualizado se elimina, sin dejar basura (restos) en el sistema. Evita completamente el Win Rot.&lt;/li>
&lt;li>&lt;strong>Aislamiento y seguridad (Isolation)&lt;/strong>: Cada aplicación se ejecuta en su propio entorno y no destruye directamente las DLL o los recursos de otras aplicaciones. Esto te libera del Infierno de las DLL.&lt;/li>
&lt;li>&lt;strong>Optimización del ancho de banda de red&lt;/strong>: El mecanismo de actualización de MSIX es excelente y soporta actualizaciones diferenciales a nivel de bloque (Differential Update). Dado que solo descarga los pocos bloques de datos binarios que han cambiado, minimiza la carga en la red incluso al actualizar aplicaciones de gran tamaño.&lt;/li>
&lt;li>&lt;strong>Estado de instalación confiable&lt;/strong>: El paquete incluye un archivo de manifiesto (&lt;code>AppxManifest.xml&lt;/code>), y las transacciones de instalación se gestionan estrictamente a nivel del sistema operativo. Si falla, se revierte completamente al estado original.&lt;/li>
&lt;/ul>
&lt;h2 id="2-visión-general-de-la-creación-de-paquetes-msix-y-la-cadena-de-herramientas">2. Visión general de la creación de paquetes MSIX y la cadena de herramientas
&lt;/h2>&lt;p>Para crear un paquete MSIX, existen principalmente dos enfoques. Uno es usar el entorno de desarrollo integrado (IDE) de Visual Studio, y el otro es aprovechar al máximo las herramientas de línea de comandos incluidas en el Windows SDK (como &lt;code>MakeAppx.exe&lt;/code> y &lt;code>SignTool.exe&lt;/code>).&lt;/p>
&lt;p>El siguiente diagrama Mermaid muestra el proceso desde los archivos fuente hasta la generación final del paquete MSIX firmado.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Archivos fuente (EXE, DLL, Assets, etc.)&amp;#34;] --&amp;gt; B[&amp;#34;AppxManifest.xml (Definición del manifiesto)&amp;#34;]
B --&amp;gt; C[&amp;#34;MakeAppx.exe (Empaquetador MSIX)&amp;#34;]
C --&amp;gt; D[&amp;#34;Paquete MSIX sin firmar (.msix)&amp;#34;]
E[&amp;#34;Certificado digital (.pfx)&amp;#34;] --&amp;gt; F[&amp;#34;SignTool.exe (Firmador digital)&amp;#34;]
D --&amp;gt; F
F --&amp;gt; G[&amp;#34;Paquete MSIX firmado (Listo para el despliegue)&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 se puede ver en este proceso, no basta con simplemente reunir y comprimir los archivos (empaquetado); el paso de la &amp;ldquo;firma digital&amp;rdquo; es absolutamente necesario. Windows 11 no permite de ninguna manera la instalación de paquetes MSIX sin firmar por razones de seguridad.&lt;/p>
&lt;h2 id="3-enfoque-a-creación-de-msix-utilizando-visual-studio">3. Enfoque A: Creación de MSIX utilizando Visual Studio
&lt;/h2>&lt;p>El método más fácil y común es usar el &amp;ldquo;Proyecto de empaquetado de aplicaciones de Windows&amp;rdquo; (Windows Application Packaging Project - WAP) de Visual Studio. Usando esta plantilla de proyecto, puedes convertir fácilmente a MSIX aplicaciones WPF, Windows Forms, WinUI 3 e incluso aplicaciones Win32 heredadas de C++.&lt;/p>
&lt;h3 id="guía-paso-a-paso">Guía paso a paso
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Agregar proyecto WAP&lt;/strong>: Haz clic derecho en una solución de Visual Studio existente y selecciona &amp;ldquo;Proyecto de empaquetado de aplicaciones de Windows&amp;rdquo; desde &amp;ldquo;Agregar nuevo proyecto&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Selección de la plataforma de destino&lt;/strong>: Especifica la versión mínima y la versión de destino de Windows 10/11 que admite tu aplicación.&lt;/li>
&lt;li>&lt;strong>Referencia de la aplicación&lt;/strong>: Haz clic derecho en el nodo &amp;ldquo;Aplicaciones&amp;rdquo; del proyecto de empaquetado y, en &amp;ldquo;Agregar referencia&amp;rdquo;, selecciona el proyecto principal que deseas empaquetar (por ejemplo, el proyecto WPF).&lt;/li>
&lt;li>&lt;strong>Configuración del manifiesto&lt;/strong>: Haz doble clic en el archivo &lt;code>Package.appxmanifest&lt;/code> para abrir el diseñador visual. Aquí se configura el nombre de visualización de la aplicación, la descripción, la imagen del logotipo y, lo que es más importante, el &amp;ldquo;Nombre del paquete (Identity Name)&amp;rdquo; y el &amp;ldquo;Editor (Publisher)&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Creación del paquete&lt;/strong>: Haz clic derecho en el proyecto y selecciona &amp;ldquo;Publicar&amp;rdquo; -&amp;gt; &amp;ldquo;Crear paquetes de aplicaciones&amp;rdquo;. Al seleccionar &amp;ldquo;Para instalación de prueba (Sideloading)&amp;rdquo; y elegir la arquitectura (x64, ARM64, etc.), Visual Studio se encarga automáticamente de compilar, empaquetar con &lt;code>MakeAppx&lt;/code>, y generar y firmar con un certificado autofirmado.&lt;/li>
&lt;/ol>
&lt;p>Aunque es muy fluido, si utilizas el certificado autofirmado (Test Certificate) generado automáticamente por Visual Studio aquí, caerás en la &amp;ldquo;trampa&amp;rdquo; que se describe más adelante.&lt;/p>
&lt;h2 id="4-enfoque-b-creación-utilizando-la-línea-de-comandos-makeappxexe">4. Enfoque B: Creación utilizando la línea de comandos (MakeAppx.exe)
&lt;/h2>&lt;p>Las herramientas de línea de comandos son necesarias para la automatización en canalizaciones CI/CD o cuando se reempaquetan manualmente un conjunto de archivos desde un instalador existente. Si el Windows SDK está instalado, puedes acceder a las siguientes herramientas desde el Símbolo del sistema para desarrolladores.&lt;/p>
&lt;h3 id="1-preparación-del-archivo-de-manifiesto">1. Preparación del archivo de manifiesto
&lt;/h3>&lt;p>En el directorio raíz del paquete, crea un &lt;code>AppxManifest.xml&lt;/code> con la información mínima necesaria.&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>Lo importante aquí es que el valor de &lt;code>&amp;lt;Identity Publisher=&amp;quot;...&amp;quot; /&amp;gt;&lt;/code> debe coincidir exactamente con el Subject del certificado que se utilizará posteriormente para la firma.&lt;/p>
&lt;h3 id="2-empaquetado-con-makeappx">2. Empaquetado con MakeAppx
&lt;/h3>&lt;p>Ejecuta el siguiente comando en el símbolo del sistema para comprimir el directorio en un archivo 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>Con esto se completa el archivo MSIX sin firmar, pero en este estado no se puede instalar en Windows.&lt;/p>
&lt;h2 id="5-firma-digital-y-fundamentos-matemáticos-de-la-criptografía">5. Firma digital y fundamentos matemáticos de la criptografía
&lt;/h2>&lt;p>Para entender profundamente por qué un paquete MSIX necesita estar firmado, es necesario comprender el mecanismo criptográfico detrás de las firmas digitales. La firma digital garantiza que el paquete &amp;ldquo;fue creado indudablemente por el editor especificado (autenticidad)&amp;rdquo; y que &amp;ldquo;no ha sido alterado por terceros desde su creación hasta el presente (integridad)&amp;rdquo;.&lt;/p>
&lt;p>La firma de MSIX suele utilizar una combinación de cifrado RSA y SHA-256 (Secure Hash Algorithm de 256 bits).&lt;/p>
&lt;h3 id="aplicación-de-la-función-hash">Aplicación de la función hash
&lt;/h3>&lt;p>Primero, consideremos todo el contenido binario del paquete MSIX como el mensaje $M$. La herramienta de firma (SignTool.exe) aplica la función hash criptográfica SHA-256 a este mensaje $M$ y calcula un valor hash de longitud fija (256 bits) $H(M)$.&lt;/p>
&lt;h3 id="generación-de-la-firma-editor">Generación de la firma (Editor)
&lt;/h3>&lt;p>A continuación, el editor utiliza su &amp;ldquo;Clave Privada (Private Key)&amp;rdquo; $d$ para cifrar el valor hash y generar una firma digital $\sigma$. En el contexto del algoritmo RSA, esto se expresa como una exponenciación modular de la siguiente manera:&lt;/p>
$$ \sigma \equiv (H(M))^d \pmod n $$&lt;p>Donde $n$ es el módulo RSA (el producto de dos grandes números primos). Un certificado (formato X.509) que contiene esta firma $\sigma$ y la &amp;ldquo;Clave Pública (Public Key)&amp;rdquo; $e$ del editor se incrusta como parte del paquete MSIX (&lt;code>AppxSignature.p7x&lt;/code>).&lt;/p>
&lt;h3 id="verificación-de-la-firma-windows-os">Verificación de la firma (Windows OS)
&lt;/h3>&lt;p>Cuando el usuario intenta instalar el MSIX, el sistema operativo Windows extrae la clave pública $e$ del certificado dentro del paquete y realiza el siguiente cálculo para restaurar el valor hash $H'(M)$.&lt;/p>
$$ H'(M) \equiv \sigma^e \pmod n $$&lt;p>Al mismo tiempo, el sistema operativo recalcula por sí mismo el valor hash $H(M)$ de todo el paquete MSIX descargado $M$.
Finalmente, verifica si el valor hash restaurado y el valor hash recalculado son iguales ($H(M) = H'(M)$). Si esta ecuación se cumple, se demuestra matemáticamente que &amp;ldquo;el archivo no ha sido alterado ni un solo bit después de ser firmado&amp;rdquo;.&lt;/p>
&lt;h2 id="6-la-mayor-barrera-la-trampa-de-los-certificados-autofirmados">6. La mayor barrera: &amp;ldquo;La trampa de los certificados autofirmados&amp;rdquo;
&lt;/h2>&lt;p>Incluso si la prueba matemática anterior es perfecta, Windows 11 no permitirá la instalación solo por eso. Esto se debe a que debe verificar la &amp;ldquo;Cadena de Confianza (Chain of Trust)&amp;rdquo;, que responde a la pregunta: &amp;ldquo;¿Es el propietario de esta clave pública (certificado) realmente la persona u organización segura que dice ser?&amp;rdquo;.&lt;/p>
&lt;p>Si el certificado ha sido emitido por una Autoridad de Certificación Raíz (Root CA) pública de confianza por el sistema operativo de antemano, como VeriSign o DigiCert, se puede instalar sin problemas (las aplicaciones distribuidas a través de Microsoft Store también confían en el certificado raíz de Microsoft de la misma manera).&lt;/p>
&lt;p>Sin embargo, cuando no se puede asumir el costo de comprar un certificado público, como durante el desarrollo o para herramientas exclusivas de la empresa, los desarrolladores emiten el certificado por sí mismos. Esto es un &amp;ldquo;Certificado Autofirmado (Self-Signed Certificate)&amp;rdquo;.&lt;/p>
&lt;p>El siguiente diagrama de secuencia muestra el comportamiento del sistema operativo al intentar instalar un paquete MSIX firmado con un certificado autofirmado.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
autonumber
participant U as &amp;#34;Usuario (Windows 11)&amp;#34;
participant P as &amp;#34;Instalador de App MSIX&amp;#34;
participant C as &amp;#34;Almacén de Certificados de Windows&amp;#34;
U-&amp;gt;&amp;gt;P: &amp;#34;Doble clic en el archivo .msix&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Lee AppxSignature.p7x&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Extrae Firma y Certificado&amp;#34;
P-&amp;gt;&amp;gt;P: &amp;#34;Verifica Matemática (¿Coinciden los Hashes?)&amp;#34;
P-&amp;gt;&amp;gt;C: &amp;#34;Comprueba Confianza del Certificado del Editor&amp;#34;
alt &amp;#34;El certificado está en el Almacén de CA Raíz de Confianza&amp;#34;
C--&amp;gt;&amp;gt;P: &amp;#34;Confianza Verificada con Éxito&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Solicita Instalación (El botón Instalar está ACTIVO)&amp;#34;
U-&amp;gt;&amp;gt;P: &amp;#34;Hace clic en Instalar&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Instalación Exitosa&amp;#34;
else &amp;#34;El certificado NO es de Confianza (La Trampa)&amp;#34;
C--&amp;gt;&amp;gt;P: &amp;#34;Verificación de Confianza Fallida (0x800B0109)&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;Muestra Error: Se procesó la cadena de certificados, pero terminó en un certificado raíz que no es de confianza&amp;#34;
P-&amp;gt;&amp;gt;U: &amp;#34;El botón Instalar está DESHABILITADO&amp;#34;
end
&lt;/pre>
&lt;p>Esta es exactamente la &amp;ldquo;trampa&amp;rdquo;. A pesar de que el desarrollador lo creó y lo firmó correctamente, por defecto Windows 11 no conoce (no confía en) ese certificado autofirmado, por lo que la instalación se bloquea con el código de error &lt;code>0x800B0109&lt;/code>. El botón &amp;ldquo;Instalar&amp;rdquo; del instalador aparece en gris y no se puede presionar.&lt;/p>
&lt;p>Muchos desarrolladores se enfrentan a este error y caen en el laberinto de reescribir repetidamente el archivo de manifiesto pensando que &amp;ldquo;MSIX está lleno de errores&amp;rdquo; o &amp;ldquo;la configuración debe estar mal&amp;rdquo;, pero el problema no es la estructura del paquete, sino si está registrado o no en el almacén de certificados (Certificate Store) del sistema operativo.&lt;/p>
&lt;h2 id="7-solución-creación-y-despliegue-de-certificados-autofirmados-mediante-powershell">7. Solución: Creación y despliegue de certificados autofirmados mediante PowerShell
&lt;/h2>&lt;p>Para resolver este problema, es necesario ejecutar de manera segura los siguientes dos pasos:&lt;/p>
&lt;ol>
&lt;li>Crear un certificado autofirmado válido y exportar un archivo PFX que contenga la clave privada.&lt;/li>
&lt;li>Instalar la parte de la clave pública (archivo CER) del certificado creado en el almacén de &lt;strong>&amp;ldquo;Entidades de certificación raíz de confianza&amp;rdquo; (Trusted Root Certification Authorities) de todas las PC de destino&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>Estos procesos se pueden realizar de forma fiable y automática mediante PowerShell.&lt;/p>
&lt;h3 id="paso-1-creación-y-exportación-de-un-certificado-autofirmado">Paso 1: Creación y exportación de un certificado autofirmado
&lt;/h3>&lt;p>Primero, inicia PowerShell con privilegios de administrador y ejecuta el siguiente script para crear el certificado. Aquí generaremos un certificado especializado para uso de firma 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. Definición 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. Generación del certificado autofirmado (Para firma de código: 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;Se ha generado el certificado. 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. Creación de la contraseña para la exportación del PFX (incluyendo clave 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. Exportación del archivo PFX (Para firmar con 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. Exportación del CER (solo clave pública, para instalar en la PC cliente)&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>Usa el archivo &lt;code>$PfxPath&lt;/code> creado aquí para firmar el paquete 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="paso-2-instalación-del-certificado-en-la-pc-cliente-desactivación-de-la-trampa">Paso 2: Instalación del certificado en la PC cliente (Desactivación de la trampa)
&lt;/h3>&lt;p>Si llevas el MSIX firmado a otra PC (o entorno virtual) y haces doble clic en él tal cual, no podrás instalarlo como se mencionó anteriormente. Antes de eso (o al mismo tiempo), es necesario instalar el archivo &lt;code>$CerPath&lt;/code> que exportamos anteriormente en las &amp;ldquo;Entidades de certificación raíz de confianza&amp;rdquo; del &amp;ldquo;Equipo local&amp;rdquo;.&lt;/p>
&lt;p>Para hacer esto, abre PowerShell &lt;strong>con privilegios de administrador&lt;/strong> en la PC de destino y ejecuta el siguiente 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"># Ruta del archivo 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 en &amp;#34;Entidades de certificación raíz de confianza&amp;#34; de la 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;El certificado se ha instalado en las Entidades de certificación raíz de confianza.&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]
Agregar al almacén de autoridades de certificación raíz del &amp;ldquo;Equipo local (&lt;code>LocalMachine&lt;/code>)&amp;rdquo; requiere estrictamente privilegios de administrador. Ten en cuenta que si lo colocas en el almacén personal del usuario (&lt;code>CurrentUser&lt;/code>), puede que no sea reconocido debido al contexto de permisos de App Installer.&lt;/p>
&lt;/blockquote>
&lt;p>Inmediatamente después de que este script se ejecute correctamente, intenta hacer doble clic de nuevo en el archivo MSIX que daba error anteriormente. Como por arte de magia, el mensaje de error desaparecerá y debería mostrarse un botón &amp;ldquo;Instalar&amp;rdquo; activo de color azul brillante. Con esto, habrás superado completamente la &amp;ldquo;trampa de los certificados autofirmados&amp;rdquo;.&lt;/p>
&lt;h2 id="8-operación-y-mejores-prácticas-en-entornos-empresariales">8. Operación y mejores prácticas en entornos empresariales
&lt;/h2>&lt;p>Aunque los pasos anteriores son suficientes para las pruebas locales de un desarrollador, cuando se implementa una aplicación mediante sideloading en decenas o cientos de PC de la empresa, no es práctico hacer que cada usuario ejecute el script de instalación del certificado, y esto también conlleva riesgos de seguridad.&lt;/p>
&lt;p>Las mejores prácticas en un entorno empresarial son las siguientes:&lt;/p>
&lt;h3 id="1-aprovechamiento-de-la-política-de-grupo-gpo-de-active-directory">1. Aprovechamiento de la Política de Grupo (GPO) de Active Directory
&lt;/h3>&lt;p>Si se ha implementado Active Directory en la empresa, puedes usar las &amp;ldquo;Políticas de clave pública&amp;rdquo; de GPO para distribuir automáticamente el certificado autofirmado (archivo CER) a las &amp;ldquo;Entidades de certificación raíz de confianza&amp;rdquo; de todas las PC unidas al dominio. De esta manera, los empleados pueden instalar la aplicación simplemente haciendo doble clic en el archivo MSIX en una carpeta compartida, sin tener que ser conscientes del certificado en absoluto.&lt;/p>
&lt;h3 id="2-despliegue-mediante-microsoft-intune-mdm">2. Despliegue mediante Microsoft Intune (MDM)
&lt;/h3>&lt;p>En entornos modernos, la gestión de dispositivos se realiza mediante Microsoft Intune. En Intune, puedes usar la función &amp;ldquo;Perfil de configuración&amp;rdquo; para enviar certificados de confianza (.cer) a los puntos de conexión. Posteriormente, el propio paquete MSIX se puede desplegar mediante una instalación silenciosa como una aplicación LOB (Line of Business).&lt;/p>
&lt;h3 id="3-actualización-automática-mediante-el-archivo-app-installer-appinstaller">3. Actualización automática mediante el archivo App Installer (.appinstaller)
&lt;/h3>&lt;p>MSIX viene con una potente función para automatizar la actualización de aplicaciones. Al crear un archivo &lt;code>.appinstaller&lt;/code> basado en XML y colocarlo en un servidor web o carpeta compartida SMB, al iniciar la aplicación, verificará en segundo plano si hay una nueva versión del MSIX y puede aplicar automáticamente la actualización.&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>Al distribuir e instalar este archivo a los usuarios, a partir de entonces simplemente reemplazando el archivo MSIX en el servidor y actualizando el número de versión de &lt;code>.appinstaller&lt;/code>, la aplicación de todos los usuarios se actualizará automáticamente.&lt;/p>
&lt;h2 id="9-solución-de-problemas-errores-comunes-relacionados-con-los-certificados">9. Solución de problemas: Errores comunes relacionados con los certificados
&lt;/h2>&lt;p>Finalmente, resumiremos otros errores comunes que pueden ocurrir relacionados con los certificados y firmas, y sus soluciones.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>0x800B0101&lt;/strong>: El certificado utilizado para la firma ha caducado. Vuelve a emitir un nuevo certificado o utiliza un servidor de sellado de tiempo al firmar (por ejemplo: &lt;code>http://timestamp.digicert.com&lt;/code>) para poder demostrar que se firmó dentro del período de validez del certificado (si agregas un sello de tiempo, la firma se considerará válida incluso si el certificado en sí ha caducado).&lt;/li>
&lt;li>&lt;strong>0x80080204&lt;/strong>: El valor de &lt;code>Publisher&lt;/code> escrito en &lt;code>AppxManifest.xml&lt;/code> y el valor del &lt;code>Subject&lt;/code> del certificado no coinciden exactamente. Verifica rigurosamente que coincidan exactamente como cadenas, incluida la presencia o ausencia de espacios después de las comas.&lt;/li>
&lt;li>&lt;strong>Revisión del Visor de eventos&lt;/strong>: Para encontrar una causa más detallada del error, es muy importante abrir el Visor de eventos de Windows y verificar los registros en &amp;ldquo;Registros de aplicaciones y servicios&amp;rdquo; -&amp;gt; &amp;ldquo;Microsoft&amp;rdquo; -&amp;gt; &amp;ldquo;Windows&amp;rdquo; -&amp;gt; &amp;ldquo;AppxPackagingOM&amp;rdquo; o &amp;ldquo;AppXDeployment-Server&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h2 id="10-conclusión">10. Conclusión
&lt;/h2>&lt;p>El empaquetado MSIX para Windows 11 es una poderosa tecnología que mejora drásticamente la gestión del ciclo de vida de las aplicaciones. Libera del Win Rot y del Infierno de las DLL, y proporciona a los usuarios un entorno limpio y seguro.&lt;/p>
&lt;p>Por otro lado, dado que el modelo de seguridad es más estricto, es esencial una comprensión profunda de las firmas digitales y la &amp;ldquo;cadena de confianza&amp;rdquo; de los certificados. La &amp;ldquo;trampa de los certificados autofirmados&amp;rdquo; es un rito de iniciación al que casi todos los desarrolladores que tocan la tecnología MSIX por primera vez se enfrentan invariablemente. Al comprender los mecanismos de generación, exportación y la importación adecuada de certificados en los almacenes explicados en este artículo, y al automatizarlos utilizando scripts y GPO, podrás lograr un despliegue fluido que maximice el potencial de MSIX.&lt;/p>
&lt;p>Por favor, aprovecha este conocimiento y construye un entorno limpio de distribución de aplicaciones de Windows de próxima generación.&lt;/p></description></item></channel></rss>