【问题标题】:Use WiX or Inno Setup to bundle the installation of several MSI files使用 WiX 或 Inno Setup 捆绑安装多个 MSI 文件
【发布时间】:2013-03-31 19:11:47
【问题描述】:

我使用 cx-freeze 为 Python 应用程序创建 MSI 安装程序。我们称它为应用程序“A”。这取决于另一个应用程序“B”。我希望“A”的安装程序包含并运行“B”的 MSI 安装程序。如何使用 Inno Setup 或 WiX 工具集创建引导/链接安装程序?

【问题讨论】:

  • Inno Setup 是从哪里来的?
  • @TLama 我看到了答案,但这似乎与询问使用 cx-freeze 和创建 MSI 包(包括另一个 MSI 包)的问题无关。 Inno 给出的答案没有提到 cx-freeze,没有创建 MSI 包,只是提取/运行另外两个 MSI 包。要么问题是错误的,要么他们的 OP 缺少大量上下文。
  • @Deanna,我确定你做到了,但如果 OP 将问题改述为 “如何使用 InnoSetup 制作捆绑安装程序”,那么它可能是很好(当然,如果没有重复的话)。
  • @TLama 我从 Rob Mensching 的回答中了解到,我应该制作一个引导程序或链安装程序,而不是尝试强制为单个应用程序设计的工具安装多个应用程序。 Inno Setup 和 WiX 是合适的工具。我正在努力学习使用这些工具来实现我的目标的最佳方式。我编辑了问题以提及 Inno Setup 和 WiX。

标签: wix windows-installer inno-setup distutils cx-freeze


【解决方案1】:

这是一个基本的 Inno 安装脚本,它将两个 MSI 安装捆绑到一个安装程序中。由于安装程序仅用于安装 MSI 文件,因此不需要应用程序目录。要避免创建应用程序目录,请使用“CreateAppDir=no”。 (感谢 TLama!)

[Setup]
AppName=My Bundle Installer
AppVersion=0.1
DefaultDirName={pf}\MyCo\MyBundle
DefaultGroupName=My Bundle Group
Uninstallable=no
CreateAppDir=no

[Files]
Source: "A.msi"; DestDir: "{tmp}"
Source: "B.msi"; DestDir: "{tmp}"

[Run]
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\A.msi"""
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\B.msi"""

【讨论】:

  • 如果这给您带来麻烦,请在您的脚本中将CreateAppDir 指令设置为no,这样就不会创建目录,也不会显示目录选择页面。 [+1]
  • 为了整洁,将; Flags: deleteafterinstall 附加到[Files] 条目怎么样?此外,对 [Run] 条目的一个很好的补充可能是 ; Flags: hidewizard,因此当 MSI 运行时,Inno Setup 窗口不会出现在后台。
【解决方案2】:

您需要使用引导程序/链接器。例如,WiX toolset 提供了一个称为Bundle 的概念,可以将多个包组合到一个安装中。

【讨论】:

  • WIX 工具集看起来不错,但我找不到将多个 MSI 文件捆绑到单个安装程序中的方法。对于这个项目来说,弄清楚整个 WIX 架构有点过分。
  • 我在这里回答了一个类似的问题,使用 MSI 和捆绑包的 WiX 代码:stackoverflow.com/questions/27521546/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多