wix - software - no puedo instalar itunes en windows 7 64 bits
Incluyendo el instalador Windows Bonjour de Apple en nuestro msi (4)
Me han pedido que integre el instalador Bonjour de Apple en nuestro propio instalador msi, para que Bonjour se instale automáticamente junto con nuestro software. ¿Alguien hizo esto antes? No parece ser trivial, ya que un instalador msi no puede incluir y lanzar otro. ¿Supongo que necesitaría algún tipo de archivo por lotes para ejecutar los dos instaladores de forma secuencial?
Necesitas un bootstrapper; hay varios disponibles gratuitamente, incluido uno desarrollado en WiX llamado Burn.
Esto requerirá un poco más de trabajo y es propenso a problemas con la actualización, pero puede tomar Bonjour MSI y descompilarlo usando oscuridad. Convierta el MSI descompilado en un módulo Merge que se pueda incluir con su instalador, y tendrá una única instalación. He hecho esto con algunas instalaciones de controladores en el pasado, y generalmente no es tan complicado.
Wix Burn es relativamente estable ahora. Estoy usando Wix 3.8.
Si puede redistribuir el Instalador Bonjour, puede encadenar el instalador en Wix Burn. Incluso puede poner una condición para especificar Bonjour como prerequesite para su instalador. Si no está presente, se implementará Bonjour, de lo contrario se puede omitir.
Puedes consultar este enlace para entender Burn.
Deberá usar un programa de arranque para encadenar la instalación de Bonjour con su instalador. Si está utilizando WiX 3.6 o posterior, usar Burn para crear un paquete de paquete es una buena opción.
Encontré el instalador de Bonjour al descargar Bonjour SDK y abrirlo en 7-zip, aunque estoy seguro de que la instalación del SDK también proporcionaría acceso a él.
La forma en que normalmente me gusta hacer esto es agregar un nuevo archivo fuente a su proyecto de instalación para cada paquete de dependencia para mantener esa lógica separada de la configuración de la aplicación principal.
El paquete Bonjour se puede enumerar como una carga útil remota para recuperar sobre la marcha o compilarlo en su configuración. En este caso, parece más probable que se construya en (Compressed = "yes"). Si necesita agregar dependencias adicionales relacionadas con bonjour o parámetros para pasarlas, puede definirlas aquí también.
<Fragment>
<!-- if a web link actually exists, I didn''t find it... -->
<?define BonjourWebLink = "http://path/to/Bonjour.msi"?>
<PackageGroup Id="BonjourWeb">
<MsiPackage Id="BonjourWeb"
Compressed="no"
DownloadUrl="$(var.BonjourWebLink)">
</MsiPackage>
</PackageGroup>
<PackageGroup Id="Bonjour">
<MsiPackage Id="Bonjour"
Compressed="yes"
SourceFile="path/to/Bonjour.msi"/>
</PackageGroup>
</Fragment>
En su paquete principal solo necesita agregar una referencia al grupo de paquetes correcto.
<Chain>
<PackageGroupRef Id="Bonjour"/>
<MsiPackage SourceFile="path/to/YourProduct.msi"/>
</Chain>
Como Bonjour usa MSI en lugar de un ejecutable, no necesita hacer nada para detectar si está presente o no; Burn se encargará de eso por ti. En realidad, dado que WiX recolecta la mayor parte de la información que su paquete necesita de la MSI, esto podría ser excesivo, y usted podría simplemente poner el elemento MsiPackage en su cadena directamente.
No te olvides de revisar cuidadosamente los términos de Apple para hacer esto.