WiX--检查以前的安装

时间:2009-04-01 18:39:28

标签: windows wix windows-installer

我有一个遗留应用程序直接安装到用户的c:驱动器,在目录中(如c:\ MyApp)。讨厌的东西。问题是,用户可以指定在第二个驱动器上进行第二次安装(例如e:\ MyApp),并且他们可以在任一目录中同时安装两个不同版本的应用程序。他们还可以决定在目录树的其他位置安装应用程序,但这些是最常见的两个位置。

我没有写这个计划。就我而言,它让小耶稣哭了。

我必须编写一个安装程序来为此方案添加模块,并且用户需要能够选择要在其上安装模块的安装。我以为我会在WiX中尝试这个。

我该怎么做?

我打算像

那样进行目录搜索
<Property Id="MyAppInstallationSearch">
  <DirectorySearch Id="MyAppDirectory" Path="C:\MyApp">
  </DirectorySearch>
</Property>

然后:

<Directory Id="TARGETDIR" Name="MyAppInstallationSearch">
    <Directory Id="INSTALLLOCATION" Name="AdditionalTools">
    </Directory>
</Directory>

拥有安装位置。

那我该如何:

  1. 让搜索成为相对的,而不是绝对的? (文档规定可以这样做,我只是不知道如何)。

  2. 如果用户有多个位置,请选择要使用的安装位置?

2 个答案:

答案 0 :(得分:1)

  1. 这将是相对含义,AdditionalTools将位于MyAppInstallationSearch找到的文件夹下。
  2. 这将涉及创建UI,这在Wix中并不容易,有些产品可以创建Wix输出或WixEdit。您需要在所有可能的位置搜索目录并显示用户单选按钮(每个按钮绑定到搜索结果)以选择安装新产品的位置。

答案 1 :(得分:0)

我必须实现相同的功能,并使用外部UI处理程序来完全自定义安装过程。我还会显示一个向导页面,用户可以在其中选择要升级的版本。但要注意,这不是你可以在一两天内完成的事情。

我不知道您使用的是哪种编程语言,但如果您想使用.NET,则可以使用Wix3附带的开发工具基础。这些库可以在Wix安装的SDK文件夹中找到(您主要需要Microsoft.Deployment.WindowsInstaller.dll),文档位于doc目录的DTF.chm中。您还需要一个引导程序来安装.NET框架。

您还可以等到Wix 3.5,其中包括Burn,一个可以轻松自定义的boostrapper和外部UI处理程序。

HTH