首页 文章

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

提问于
浏览
5

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

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

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

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

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

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

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

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

1 回答

  • 1

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

    但是,在这种情况下,您还必须 author your own bootstrapper packages . 一种方法是研究 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ 中的现有引导程序包(或Windows SDK中的引导程序包)并读取documentation of the Bootstrapper Manifest XML format . bootstrapper generator工具也可能有用 .

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

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

    • 名称不好的dotNetInstaller实际上是一个通用的bootstrapper生成器 .

    • 尚未发布的wix 3.5 burn引导程序 . 我不确定它是否处于可用状态 .

相关问题