2

我正在尝试获取安装位置以便执行升级,我正在使用 WiX 安装程序,但我无法使用 WiX 自己的升级机制,因为它会破坏配置文件并且不会执行自定义中发生的检查动作的用户界面。

我有一个调用 .msi 的引导程序,我可以轻松地在该 .msi 中获取和设置参数。

在这种情况下 - 在 .msi 运行并核对所有内容之前,我如何从已知但动态的 GUID 到引导程序中其安装的文件位置。

注意我不能假设配置文件在安装之间会保持不变,或者我可以比卸载更快地获取文件可以杀死它。

4

1 回答 1

3

你对升级机制有相当多的控制,你应该能够在升级期间做你想做的事。特别是,我会让新的 MSI 读取配置设置,然后将它们写回配置文件(您的新 MSI 肯定会在旧配置文件被删除之前运行)。这将使您的安装具有幂等性(理想状态)。

要回答您的问题,有多种方法可以做您想做的事。以下是我可能会如何去做:

  1. 写 ARPINSTALLLOCATION -我的这个旧博客条目有详细信息

  2. 如果您知道ProductCode旧 MSI 的 ,请跳至步骤 3。如果您现在不知道ProductCode,则使用UpgradeCodeMSI (如果您正在升级,您会知道)并使用::MsiEnumRelatedProducts()查找ProductCode您之前安装的 MSI 的。

  3. 如果您知道ProductCode您的 MSI,则调用::MsiGetProductInfo()并询问该INSTALLPROPERTY_INSTALLLOCATION属性。

于 2013-03-12T20:43:48.953 回答