使用 Wix 工具集安装应用程序的多个实例

Cos*_*aro 4 wix multiple-instances

我只需要安装我的应用程序的多个实例,将它们保存在不同的文件夹中,桌面上没有快捷方式。换句话说,当应用程序已经安装在文件夹中时,如果我再次双击 .msi 文件,安装程序不应该问我是否要修复或删除我的应用程序,而只是应该允许安装它在一个新文件夹中。我怎么解决这个问题?

Yan*_*nko 5

我以前曾经使用过这种安装,我同意@Nikolay - 它是一个例外,而不是基于 Windows Installer 的安装的规则。组件规则通常很难遵循,多实例方面增加了一些复杂性。所以,在走这条路之前,请三思。

复杂,还是有可能的。多年前,我发表了关于如何开始使用 WiX 3.6创作多个实例安装的文章。请注意,此版本的 WiX 显着简化了它。这不是一个简短的阅读,所以这里是一个快速摘要:

  • 您将无法实现“通过双击 MSI 文件安装每个新实例”的行为。您必须有一个引导程序 - 将正确的命令行参数传递给msiexec.exe.
  • 不要试图支持无限数量的实例 - 尝试坚持使用相当大的数量。你想象有人在一台机器上安装你的应用程序 10 次吗?50?100?做出明智的选择 - 这将是您的<Instance/>元素数量。
  • 虽然你只需要用MultiInstance属性来装饰非文件数据组件,但我认为如果你将它添加到所有组件中,它不会中断。
  • 虽然我在那篇文章中解释了对多个实例的修补,但如果我别无选择,我只会在生产中使用它。


Nik*_*lay 3

你所要求的在 Windows 中是不正常的。通常,每个程序(产品)仅安装一次。即每个安装包都有它的ID(称为“ProductID”)。如果该 ID 已在安装时在系统中注册,则系统将不允许您安装具有相同 ProductID 的第二个产品,而是开始更改/删除。

你可以做什么:

  • 不要使用 Windows Installer(和 WIX),例如使用 ZIP、某些自解压存档或某些其他不会在系统中注册已安装产品的程序。
  • 如果您出于某种原因需要 MSI 和 Windows Installer,请在安装前使用命令行更改产品 ID。尝试谷歌搜索“使用转换多次安装相同的 MSI”。因此,您可以在安装之前对相同的 MSI 进行转换,以便它对于系统来说看起来是不同的。
  • 如果这对您来说足够好,请按用户安装(即不要安装到程序文件,而是安装到用户文件夹)
  • 也许还有其他选择...