21

希望这仍然是 StackOverflow 的主题。

我在 Linux 机器上进行所有开发,但代码将由 Linux 和 Windows 机器运行。

我想使用 Linux 来编译代码,为此我有 mingw-32 和 mingw-w64。

但我想将生成的可执行文件打包成一个不错的 MSI 安装文件。是否可以使用 Linux 中的实用程序或在 Wine 下运行来执行此操作?

谢谢!

4

2 回答 2

16

您可以结合使用 Wine、Mono 和 WiX 在 Linux 上创建 .msi 包。

对于 openSUSE,我创建了一个名为 wixwine 的包装程序包,它为您提供了来自 Windows Installer XML (WiX) 工具集的“蜡烛”和“灯光”命令,可以在 Linux 上使用。

你可以在这里找到我的 wixwine 包

于 2012-07-14T05:50:53.050 回答
8

我刚刚发布了 msitools v0.01,这是一组用于检查和创建 Windows Installer 文件的实用程序。它基于 Wine 代码,但移植到 POSIX。

您可以在http://bonzini.fedorapeople.org/找到源代码和二进制包- 不幸的是,您需要从 git 构建 libgsf,因为我发现了一个错误,并且截至目前还没有发布的版本有修复。链接页面包含带有修复程序的 Fedora RPM。

$ 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

有一个配套的实用程序 msibuild 来构建 MSI。这是非常低级的,但您可以一起使用这两个工具对您已经在 Windows 上进行的 MSI 进行小的更改。

更新:现在托管在https://live.gnome.org/msitools,它还有一个支持 WiX XML 子集的工具 (wixl)。需要 libgsf 1.14.25 或更高版本。Fedora 18 及更新版本已将其打包。

于 2012-12-06T17:00:54.463 回答