2009-10-02 19 views
8

Tengo un MSI basado en WiX que instala un puñado de controladores de dispositivos y, por lo tanto, tengo una versión x64 y una x86. El paquete también tiene una dependencia de .NET 3.5, así que estoy generando un programa de arranque para hacer esto y luego iniciar el MSI. Mi pregunta es si alguien conoce una forma de crear un programa de arranque que detecte la plataforma en la que se ejecuta y ejecute el MSI apropiado. Busqué en Google esa solución y hasta ahora no he encontrado nada. ¡Gracias!Ejecutar MSI x86 o x64 desde MSBuild bootstrapper

+0

Bueno, una vez leí que las MSI son específicas de la plataforma por diseño – zvolkov

+0

Correcto, por lo que hay dos MSI separadas. Sin embargo, digamos que estoy distribuyendo esto en un CD y tengo un autorun.inf que inicia mi bootstrapper de "setup.exe". Actualmente solo puedo señalarlo a un .msi para ser lanzado por el programa de arranque una vez que ha terminado de establecerse prereqs – MattB

Respuesta

1

Si está instalando .Net antes de iniciar su msi, también puede incluir un exe escrito en C# que detecta su plataforma y luego le devuelve la respuesta a su programa de arranque.

Utilicé un archivo ejecutable que detectó la plataforma, creé una clave de registro que estaba verificando para decidir qué lanzar.

C# example

0

dotNetInstaller es probablemente lo que es necesario utilizar: se pueden crear diferentes configuraciones de "configuración" que sólo se activa si se cumple la combinación correcta de sistema operativo, plataforma y lenguaje. También puede incrustar cualquier MSI, requisitos previos, etc. en el archivo ejecutable de instalación para que los usuarios solo tengan un solo archivo para descargar/ejecutar.

3

Desafortunadamente, Windows Installer requiere un paquete MSI separado para x86 y x64.

Con WiX v3.6 + Burn proporciona la funcionalidad para "agrupar" los dos paquetes en una sola instalación (impulsada por el ejecutable Burn). Se podía hacerlo con un archivo .wxs que haría algo un poco como:

<Bundle ...> 
    <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.RtfLicense' /> 

    <Chain> 
    <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' /> 
    <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' /> 
    </Chain> 
</Bundle> 

eso es sólo empezando a arañar la superficie de todo lo que la quemadura puede hacer, pero muestra cómo sujetar los dos paquetes de arquitectura en una sola instalación experiencia.

Cuestiones relacionadas