【问题标题】:Build MSI in Wine在 Wine 中构建 MSI
【发布时间】:2012-05-01 16:47:56
【问题描述】:

希望这仍然是 StackOverflow 的主题。

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

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

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

谢谢!

【问题讨论】:

  • @IgnacioVazquez-Abrams,我并不讨厌它......事实上,我从未听说过它。随意提出它作为可能的答案。
  • 我不喜欢 NSIS,因为它没有带来 Windows Installer 的任何高级功能。与为升级、修补、弹性、卸载、日志记录、命令行使用等提供一致支持的声明性、事务性、核心 Windows 服务相比,它是一种神秘的、遗留的、命令式的脚本语言。区别是白天和黑夜。
  • NSIS 无法创建 MSI 安装程序,如下所述:stackoverflow.com/a/1863053/3196753。也就是说,你可以apt-get 它,你可以brew install 它,你可以在 Windows 上运行它,使它成为一个非常好的可编写脚本、支持 CI、跨平台的解决方案,如果你对“神秘,遗留的命令式脚本语言。”随之而来。 :) 这是一个使用 NSIS 和 cmake 的示例应用程序。 github.com/LMMS/lmms/blob/master/cmake/nsis/CMakeLists.txt
  • @IgnacioVazquez-Abrams:这是我获得额外特权后第一次访问这里。我看到您确实提供了一个基于 NSIS 的答案,并且被完全拒绝了。我很抱歉发生了这样的事情:我觉得这是一个有效的回应,特别是考虑到我们在 cmets 的讨论。我希望 Arafangion 已经阅读了上述 cmets 并尊重我的立场。
  • @QZSupport 是的,NSIS 也可以构建安装程序,但是 MSI 框架更健壮,尤其是在处理卸载以前版本和失败时返回代码方面

标签: linux windows-installer wine


【解决方案1】:

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

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

你可以找到我的wixwine包here

【讨论】:

  • 作为记录,我没有设法得到任何比 wix 3.5 更高的版本在 wine 下工作,显然是因为它们需要没有得到很好支持的 .net 版本。但是 3.5 工作得很好。
【解决方案2】:

我刚刚发布了 msitools v0.01,一个用于检查和创建的实用程序集合 Windows 安装程序文件。它基于 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 及更新版本已打包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2018-05-08
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多