plantillas - wix iniciar sesion
¿Interfaz de usuario de WiX Burn bootstrapper personalizada? (5)
Además de los otros recursos que se enumeran aquí, un buen ejemplo básico de una aplicación de arranque personalizada para Burn es la aplicación personalizada de WiX Managed Bootstrapper .
Descubrí que este es un buen lugar para comenzar antes de profundizar en otros ejemplos más completos como el proyecto WixBA en las fuentes de WiX.
Estoy creando un paquete de instalación con WiX 3.6 principalmente para poder aprovechar las funciones de arranque de Burn . Hasta ahora tengo varios paquetes de MSI agrupados que se instalarán con la aplicación de arranque WixStandardBootstrapperApplication.RtfLicense
( WixStandardBootstrapperApplication.RtfLicense
).
He leído que Burn permite que la aplicación predeterminada de bootstrapper sea reemplazada especificando un UX.dll
personalizado, pero aún no he podido encontrar ningún recurso que describa cómo se construye ux.dll
personalizado (es decir, cómo se integra con el motor Burn, qué tecnologías uso, qué interfaces debo implementar, etc.).
Mi objetivo es crear un bootstrapper de marca que pueda recopilar información arbitraria de un usuario y pasar esa información a los diversos archivos MSI, archivos EXE, etc.
Entonces realmente tengo dos preguntas:
- ¿En qué medida se puede personalizar la aplicación predeterminada de arranque?
- ¿Hay algún recurso disponible que describa cómo construir un
UX.dll
personalizado?
La clave para saber es que hay un BootstrapperCore.dll en los binarios de WiX que define una clase BootstrapperApplication que maneja la integración con el motor Burn. Necesitaba crear mi propia clase derivada y anular el método ''Ejecutar'' para iniciar mi IU personalizada.
También fue útil utilizar el proyecto WixBA que define la interfaz de usuario para WiX bootstrapper como referencia para usar la clase BootstrapperApplication (src / Setup / WixBA / WixBA.csproj).
El marcado que utilicé para hacer referencia a mi archivo DLL personalizado de arranque es:
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="$(var.InstallSourceResources)Bootstrapper/FusionInstallUX.dll"/>
<Payload Id="FusionInstallUX.config"
SourceFile="$(var.InstallSourceResources)Bootstrapper/FusionInstallUX.BootstrapperCore.config"
Name="BootstrapperCore.config" Compressed="yes"/>
</BootstrapperApplicationRef>
El archivo de configuración consiste en:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup
name="wix.bootstrapper"
type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
<section
name="host"
type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
<wix.bootstrapper>
<host assemblyName="FusionInstallUX">
<supportedFramework version="v4/Full" />
<supportedFramework version="v4/Client" />
</host>
</wix.bootstrapper>
</configuration>
También seguí otros ejemplos y anexé
[assembly: BootstrapperApplication(typeof([name of class deriving from BootstrapperApplication]))]
al archivo AssemblyInfo.cs
.
Y, por último, pregunta de desbordamiento de pila. Especifique INSTALLLOCATION de paquetes en WiX dentro de la rutina de arranque administrada de Burn. Describe cómo configurar y usar las variables de grabación para ayudar a conducir la instalación.
¡Armados con esta información, ahora estoy preparado para causar estragos en el mundo con mi propia aplicación Bootstrapper personalizada!
No responde con precisión a esta pregunta, pero si desea personalizar la apariencia de ManagedBootstrapperApplicationHost, this es lo que debe hacer.
Para ser breve, necesita declarar sus variables de esta manera (lo puse antes de BootstrapperApplicationRef)
<WixVariable Id="PreqbaThemeXml" Value="tt.thm" />
<WixVariable Id="PreqbaThemeWxl" Value="tt.wxl" />
asumiendo que tt.thm es su archivo de tema, y tt.wxl es su archivo de traducción. Tenga en cuenta que esos archivos, así como todos los archivos a los que hacen referencia deben incluirse en BootstrapperApplicationRef como Payoload , como
<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="cat.png"/>
Como ejemplo de diseño, puede usar mbapreq.thm , que se encuentra en las fuentes de WiX.
Para complementar la respuesta de @Bill Campbell, escribí una serie de publicaciones de blog sobre cómo escribir un WiX Bootstrapper personalizado en .NET que profundiza sobre las piezas involucradas, al menos para una solución de código administrado.
Un detalle que me faltaba al configurar esto fue que tenía que incluir una referencia a WixBalExtension.dll
. Esto se debe a que ManagedBootstrapperApplicationHost
se define en esa DLL y se usa en el paquete de esta manera:
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
<Payload Name="BootstrapperCore.config"
SourceFile="MyBA.BootstrapperCore.config" />
<Payload SourceFile="MyBA.dll"/>
</BootstrapperApplicationRef>