代码之家  ›  专栏  ›  技术社区  ›  gollumullog

引导程序:运行之前检查是否安装了msi版本

  •  5
  • gollumullog  · 技术社区  · 15 年前

    我正在为以下问题寻找解决方案:

    我有许多程序(我们称之为从程序)都依赖于一个程序(主程序)。我需要为每个奴隶分配一个安装程序。此安装程序需要安装主机。

    我希望能够对这两个部分进行版本转换,所以多个MSI似乎是正确的解决方案,用一个引导程序链接起来。

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

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

    在尝试运行msi之前,是否有任何方法检查当前安装的域的版本?

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

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

    1 回复  |  直到 13 年前
        1
  •  1
  •   Wim Coenen    15 年前

    而不是使用 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 format .这个 bootstrapper generator 这个工具可能也很有用。

    要确定是否需要安装包,可以使用 InstallChecks 设置属性,然后检查 InstallCondition Commands 元素。

    如果你认为这比实际情况要困难的话-我同意,但这是我迄今为止使用的方法。还有一些选择我还没有尝试:

    • 名字不好的 dotNetInstaller 这实际上是一个通用的目的 引导程序生成器。
    • 这个 wix 3.5 burn 尚未释放的引导程序。我还不确定它是否处于可用状态。