2012-04-20 12 views
19

Sperando che questo sia ancora in discussione per StackOverflow.Costruisci MSI nel vino

Sto facendo tutto il mio sviluppo su una macchina Linux, ma il codice verrà eseguito da entrambe le macchine Linux e Windows.

Mi piacerebbe usare Linux per compilare il codice, e ho Mingw-32 e Mingw-W64 per questo.

Ma mi piacerebbe impacchettare i file eseguibili risultanti in un bel file di installazione MSI. È possibile farlo utilizzando le utility in Linux o eseguendo in Wine?

Grazie!

+1

no NSIS? –

+0

@ IgnacioVazquez-Abrams, non mi piace ... anzi, non ne ho mai sentito parlare. Sentiti libero di suggerirlo come una possibile risposta. – Richard

+15

Non mi piace NSIS perché non offre alcuna delle funzionalità avanzate di Windows Installer. È un linguaggio di scripting arcano, legacy e imperativo rispetto a un servizio windows dichiarativo, transazionale e core che fornisce un supporto coerente per l'aggiornamento, l'applicazione di patch, la resilienza, la disinstallazione, la registrazione, l'utilizzo della riga di comando e così via. La differenza è quella che passa tra notte e giorno. –

risposta

15

È possibile utilizzare una combinazione di Wine, Mono e WiX per creare pacchetti .msi su Linux.

Per openSUSE, ho creato un pacchetto wrapper chiamato wixwine che fornisce i comandi "candle" e "light" dagli strumenti XML di Windows Installer (WiX) pronti per l'uso su Linux.

È possibile trovare il mio pacchetto wixwine here

+1

Per la cronaca, non sono riuscito a ottenere alcuna versione successiva di wix 3.5 lavorando sotto il vino, apparentemente perché richiedono versioni .net non ben supportate. Ma 3.5 funziona bene. –

6

Ho appena v0.01 rilasciata di msitools, una raccolta di utility per ispezionare e creare file di Windows Installer. È basato sul codice Wine, ma è stato trasferito su POSIX.

È possibile trovare i pacchetti sorgente e binari a http://bonzini.fedorapeople.org/ - sfortunatamente sarà necessario creare libgsf da git, perché ho trovato un bug e nessuna versione rilasciata ha la correzione fin d'ora. La pagina collegata ha Fedora RPM con la correzione.

$ 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 

C'è un programma di utilità di accompagnamento msibuild per creare MSI. È molto basso, ma puoi usare i due strumenti insieme per apportare piccole modifiche a un MSI che hai già realizzato su Windows.

aggiornamento: ora ospitato allo https://live.gnome.org/msitools, ha anche uno strumento (wixl) che supporta un sottoinsieme di XML WiX. Richiede libgsf 1.14.25 o più recente. Fedora 18 e più recente sono imballati.