在Wine中构建MSI

21
希望这个问题仍适用于 StackOverflow。
我在 Linux 机器上进行所有的开发工作,但该代码将由 Linux 和 Windows 机器运行。
我想使用 Linux 编译代码,并为此安装了 mingw-32 和 mingw-w64。
但我想将生成的可执行文件打包成一个漂亮的 MSI 安装文件。是否可以使用 Linux 工具或在 Wine 下运行实现?
谢谢!

18
我不喜欢 NSIS,因为它没有 Windows Installer 的任何高级功能。相比之下,NSIS是一种古老、遗留的命令式脚本语言,而Windows Installer则是一种声明式、事务性的核心Windows服务,提供了升级、补丁、韧性、卸载、日志记录、命令行使用等方面的一致支持。两者有天壤之别。 - Christopher Painter
感谢@QZSupport。尽管ChristopherPainter的评论排名很高,但我很愿意支持一篇回答,介绍如何使用NSIS以及它的优缺点。 - Richard
1
都好的,我已经超过了350k rep,不会因此感到沮丧。 ;) - Ignacio Vazquez-Abrams
@Richard,许多开源产品使用mingw进行交叉编译,然后将NSIS链接到构建过程中。这个话题涉及到它(假设您的构建系统是cmake),但有点过时了。mingw可以在Windows或*nix上运行,因此关于需要Visual Studio的接受答案并不一定正确。https://dev59.com/6Wcs5IYBdhLWcg3wGQDF。对此的适当回答应该包含一个使用mingw构建的C++ hello world,使用NSIS打包并生成安装程序。这1.不会是MSI,2.不会使用Wine。:\ - tresf
1
@QZSupport true,NSIS也可以构建安装程序,但MSI框架更加健壮,特别是在处理卸载之前的版本和失败返回代码方面。 - madduci
显示剩余5条评论
2个回答

16

你可以在Linux上使用Wine、Mono和WiX的组合来创建.msi安装包。

对于openSUSE,我创建了一个名为"wixwine"的包装器包,它提供了Windows Installer XML (WiX) 工具集中的“candle”和“light”命令,可直接在Linux上使用。

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


1
值得一提的是,我没能在wine下成功运行任何wix 3.5之后的版本,显然是因为它们需要不太支持的.net版本。但是Wix 3.5却完全正常工作。 - Vincent Fourmond

8
我刚刚发布了msitools v0.01,这是一组工具,用于检查和创建Windows Installer文件。它基于Wine代码,但已移植到POSIX系统。你可以在http://bonzini.fedorapeople.org/找到源代码和二进制包。不幸的是,你需要从git构建libgsf,因为我发现一个错误,并且目前尚未发布修复程序版本。链接页面有带有修复程序的Fedora RPMs。
$ 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可用于构建MSIs。它非常低级,但您可以使用这两个工具一起对已在Windows上创建的MSI进行小的更改。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接