我正在尝试为以下问题找到解决方案:
我有许多程序(让我们称之为奴隶),这些程序都依赖于一个程序(主程序) . 我需要为每个奴隶分发一个安装程序 . 此安装程序需要安装主服务器 .
我希望能够对两个部分进行版本控制,因此多个msi似乎是正确的解决方案,与引导程序链接在一起 .
我的问题是如果从属安装程序安装了已安装的主服务器的相同版本,.msi将以修复/删除模式运行 .
从用户的角度来看,这是不可接受的,只会引起混淆 .
在尝试运行msi之前,有没有办法检查当前安装的fiels的版本?
我目前正在使用WIX的setupbld.exe作为引导程序 .
任何其他解决方案非常感谢(我也尝试合并模块没有成功,因为版本控制是无用的)
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引导程序 . 我不确定它是否处于可用状态 .