2012-04-20 24 views
19

In der Hoffnung, das ist immer noch ein Thema für StackOverflow.Build MSI in Wein

Ich mache meine ganze Entwicklung auf einem Linux-Rechner, aber der Code wird sowohl von Linux- als auch von Windows-Rechnern ausgeführt.

Ich würde gerne Linux verwenden, um den Code zu kompilieren, und ich habe mingw-32 und mingw-w64 dafür.

Aber ich möchte die resultierenden ausführbaren Dateien in eine nette MSI-Installationsdatei verpacken. Ist es möglich, dies unter Verwendung von Dienstprogrammen unter Linux oder unter Wine zu tun?

Danke!

+1

Sie nicht wie NSIS? –

+0

@ IgnacioVazquez-Abrams, ich mag es nicht ... in der Tat, ich hatte noch nie davon gehört. Fühlen Sie sich frei, es als mögliche Antwort vorzuschlagen. – Richard

+15

Ich mag NSIS nicht, weil es keine der erweiterten Fähigkeiten von Windows Installer bringt. Im Vergleich zu einem deklarativen, transaktionalen Windows-Kerndienst, der konsistente Unterstützung für Upgrade, Patching, Resiliency, Deinstallation, Protokollierung, Befehlszeilennutzung usw. bietet, ist es eine arkane, veraltete Skriptsprache. Der Unterschied ist Nacht und Tag. –

Antwort

15

Sie können eine Kombination aus Wine, Mono und WiX verwenden, um MSI-Pakete unter Linux zu erstellen.

Für openSUSE habe ich ein Wrapper-Paket namens wixwine erstellt, das Ihnen die Befehle 'candle' und 'light' aus dem Windows Installer XML (WiX) Toolset unter Linux zur Verfügung stellt.

Sie können mein wixwine Paket here

+1

Für den Datensatz habe ich es nicht geschafft, irgendeine Version später zu bekommen als Wix 3.5 unter Wein arbeiten, anscheinend weil sie nicht gut unterstützte .net-Versionen benötigen. Aber 3.5 funktioniert gut. –

6

ich gerade veröffentlicht v0.01 von msitools, eine Sammlung von Werkzeugen zu inspizieren und erstellen Windows Installer-Dateien. Es basiert auf dem Wine-Code, wird jedoch nach POSIX portiert.

Sie können die Quell-und Binär-Pakete bei http://bonzini.fedorapeople.org/ finden - leider müssen Sie libgsf von git bauen, weil ich einen Fehler gefunden habe und keine veröffentlichte Version hat das Update ab sofort. Die verlinkte Seite enthält Fedora-RPMs mit dem Fix.

$ 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 

Es ist ein Begleiter Dienstprogramm msibuild MSIs zu bauen. Es ist sehr low-level, aber Sie können die beiden Tools zusammen verwenden, um kleine Änderungen an einem MSI vorzunehmen, das Sie bereits unter Windows erstellt haben.

Update: jetzt gehostet um https://live.gnome.org/msitools, hat es auch ein Werkzeug (Wixl), das eine Teilmenge des WiX XML unterstützt. Benötigt libgsf 1.14.25 oder neuer. Fedora 18 und neuer haben es verpackt.