2012-04-20 22 views
19

Esperando que esto siga en el tema de StackOverflow.Compilar MSI en Wine

que estoy haciendo todo mi desarrollo en una máquina Linux, pero el código se ejecutará por ambas máquinas Linux y Windows.

Me gustaría usar Linux para compilar el código, y tengo mingw-32 y mingw-w64 para eso.

Pero me gustaría para empaquetar los archivos ejecutables resultantes en un buen archivo de instalación MSI. ¿Es posible hacer esto usando utilidades en Linux o corriendo bajo Wine?

Gracias!

+1

y usted no como NSIS? –

+0

@ IgnacioVazquez-Abrams, no me disgusta ... de hecho, nunca había oído hablar de eso. Siéntase libre de sugerirlo como una posible respuesta. – Richard

+15

No me gusta NSIS porque no aporta ninguna de las capacidades avanzadas de Windows Installer. Es un lenguaje arcaico, heredado e imperativo de scripting en comparación con un servicio declarativo transaccional de Windows que brinda soporte consistente para actualizaciones, parches, resilencia, desinstalación, registro, uso de línea de comandos, etc. La diferencia es de noche y de día. –

Respuesta

15

Se puede utilizar una combinación de vino, Mono y WiX para crear paquetes .msi en Linux.

Para openSUSE, he creado un paquete envoltorio llamado wixwine que le da los comandos 'vela' y 'luz' del conjunto de herramientas Windows Installer XML (WiX) listo para usar en Linux.

Usted puede encontrar mi paquete wixwine here

+1

Para el registro, no he logrado obtener ninguna versión posterior que wix 3.5 funciona en vino, al parecer porque requieren versiones .net no bien compatibles. Pero 3.5 funciona bien. –

6

acabo v0.01 liberado de msitools, una colección de utilidades para inspeccionar y crear archivos de Windows Installer. Se basa en el código de Wine, pero se transfiere a POSIX.

Puede encontrar los paquetes fuente y binarios en http://bonzini.fedorapeople.org/ - desafortunadamente necesitará compilar libgsf desde git, porque encontré un error y ninguna versión lanzada tiene la solución a partir de ahora. La página enlazada tiene RPM Fedora con la solución.

$ msiinfo streams ~/download/Firefox-16.0.2-it.msi 
Binary.New 
Binary.Up 
Binary.info 
Binary.dlgbmp 
Binary.CustomBin 
Binary.bannrbmp 
Binary.completi 
Binary.custicon 
Binary.exclamic 
Binary.insticon 
Binary.removico 
Binary.repairic 
_MAKEMSI_Cabs.MM01.cab 
Binary.BannerGraphic.BMP 
Icon.firefox.16.0.2.0.ico.exe 
DigitalSignature 
SummaryInformation 
$ msiinfo extract ~/download/Firefox-16.0.2-it.msi _MAKEMSI_Cabs.MM01.cab > firefox.cab 
$ cabextract -l firefox.cab 
Viewing cabinet: firefox.cab 
File size | Date  Time  | Name 
-----------+---------------------+------------- 
    917984 | 24.10.2012 12:50:38 | firefox.exe 
    18912 | 24.10.2012 12:50:38 | AccessibleMarshal.dll 

Hay una utilidad complementaria msibuild para compilar MSI. Es de muy bajo nivel, pero puede usar las dos herramientas juntas para hacer pequeños cambios a una MSI que ya hizo en Windows.

actualización: ahora alojado en https://live.gnome.org/msitools, también tiene una herramienta (wixl) que admite un subconjunto de WiX XML. Requiere libgsf 1.14.25 o más nuevo. Fedora 18 y más nuevos lo tienen empaquetado.

Cuestiones relacionadas