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

时间:2009-12-10 23:12:16

标签: wix windows-installer bootstrapper merge-module

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

但是,在这种情况下,您还必须创建自己的引导程序包。一种方法是研究C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\中的现有引导程序包(或Windows SDK中的引导程序包)并阅读documentation of the Bootstrapper Manifest XML formatbootstrapper generator工具也可能会有所帮助。

要确定是否需要安装软件包,可以使用InstallChecks之一设置属性,然后检查Commands元素下InstallCondition中的属性值

如果你认为这比它应该更难 - 我同意,但这是我到目前为止所使用的。还有一些我尚未尝试的替代方案:

  • 名字不好的dotNetInstaller 这实际上是一般目的 bootstrapper generator。
  • 尚未发布的wix 3.5 burn引导程序。我不确定它是否处于可用状态。