2009-12-10 59 views
5

我试图找到以下问题的解决方案之前安装:引导程序:检查MSI版本正在运行

我有无数的程序(让我们称之为从站),所有依赖于一个单一的程序(主) 。我需要为每个从设备分配一个安装程序。该安装程序需要安装主设备。

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

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

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

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

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

不胜感激(我自己也尝试没有成功合并模块,因为版本是没用)

回答

1

而不是使用setupbld.exe(其中我真的不知道,因为我无法找到任何文件,任何其他解决方案)你可以使用msbuild的generatebootstrapper task。 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 这实际上是一个通用的 引导程序生成器。
  • wix 3.5 burn尚未发布的bootstrapper。我不确定它是否处于可用状态。
+1

我结束了使用dotNetInstaller,并发现虽然不完美,它比使用微软增强器(无法让他们工作,我需要)更好。 到目前为止,我已经试图用dotNetInstaller做的每件事都起作用了。虽然有时需要一点指导。 – gollumullog 2010-01-21 16:07:28