2013-03-12 124 views
2

我试图获得安装的位置,以便我可以执行升级,我使用的是WiX安装程序,但我无法使用WiX自己的升级机制,因为它会将配置文件和不会执行自定义操作UI中发生的检查。从GUID到完整路径

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

在这种情况下,我可以如何从已知但动态的GUID获得文件在引导程序中的安装位置,然后在.msi运行并核实所有内容。

N.B.我不能假定配置文件在安装之间保持不变,或者我可以更快地获取文件,而不是卸载可以杀死它。

回答

3

您对升级机制有相当多的控制权,您应该可以在升级过程中按照自己的意愿进行操作。特别是,我会让新的MSI读取配置设置,然后将它们写回到配置文件(新的MSI将在删除旧的配置文件之前运行)。这将使你的安装idempotent(理想)。

要回答你的问题,有很多方法可以做你想做的。下面是我怎么可能会去了解它:

  1. 写ARPINSTALLLOCATION - 这old blog entry of mine has details

  2. 如果你知道你的旧MSI的ProductCode,跳到第3步。如果你不这样做,现在的ProductCode,然后使用MSI的UpgradeCode(你知道,如果你在所有做的升级)和请使用::MsiEnumRelatedProducts()查找以前安装的MSI的ProductCode

  3. 如果您知道您的MSI的ProductCode,请致电::MsiGetProductInfo()并索取INSTALLPROPERTY_INSTALLLOCATION财产。

+0

同意。我认为他真正需要的是记忆属性模式。 – 2013-03-12 22:42:25