Bootstrapper:在运行之前检查是否安装了msi版本

gol*_*log 5 windows-installer wix bootstrapper merge-module

我正在尝试为以下问题找到解决方案:

我有许多程序(让我们称之为奴隶)都依赖于一个程序(主程序).我需要为每个奴隶分发一个安装程序.此安装程序需要安装主服务器.

我希望能够对这两个部分进行版本控制,因此多个msi似乎是正确的解决方案,与引导程序链接.

我的问题是如果从属安装程序安装了已安装的主服务器的相同版本,.msi将以修复/删除模式运行.

从用户的角度来看,这是不可接受的,只会引起混淆.

在尝试运行msi之前,有没有办法检查当前安装的fiels的版本?

我目前正在使用WIX的setupbld.exe作为引导程序.

任何其他解决方案非常感谢(我也尝试合并模块没有成功,因为版本控制是无用的)

Wim*_*nen 1

您可以使用 msbuild 的generatebootstrapper task,而不是使用setupbld.exe(我真的不知道,因为我找不到任何文档)。wix 文档已经介绍了如何使用此任务来生成安装 .NET 框架的引导程序。请参阅如何:使用引导程序安装 .NET Framework。这利用了预定义的引导程序包。

但是,在这种情况下,您还必须编写自己的引导程序包。实现此目的的一种方法是研究现有的引导程序包(或Windows SDKC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\中的引导程序包)并阅读引导程序清单 XML 格式的文档。引导程序生成器工具也可能会有所帮助。

要确定是否需要安装该软件包,可以使用其中一个InstallChecks设置一个属性,然后检查CommandsInstallCondition元素下的 a 中的属性值。

如果你认为这比应有的更难——我同意,但这是我迄今为止所使用的。有一些我还没有尝试过的替代方案:

  • 命名不佳的dotNetInstaller 实际上是一个通用引导程序生成器。
  • wix 3.5 刻录引导程序尚未发布。我不确定它是否处于可用状态。