我试图获得安装的位置,以便我可以执行升级,我使用的是WiX安装程序,但我无法使用WiX自己的升级机制,因为它会将配置文件和不会执行自定义操作UI中发生的检查。从GUID到完整路径
我有一个调用.msi的引导程序,我可以很容易地在该.msi中获取和设置参数。
在这种情况下,我可以如何从已知但动态的GUID获得文件在引导程序中的安装位置,然后在.msi运行并核实所有内容。
N.B.我不能假定配置文件在安装之间保持不变,或者我可以更快地获取文件,而不是卸载可以杀死它。
我试图获得安装的位置,以便我可以执行升级,我使用的是WiX安装程序,但我无法使用WiX自己的升级机制,因为它会将配置文件和不会执行自定义操作UI中发生的检查。从GUID到完整路径
我有一个调用.msi的引导程序,我可以很容易地在该.msi中获取和设置参数。
在这种情况下,我可以如何从已知但动态的GUID获得文件在引导程序中的安装位置,然后在.msi运行并核实所有内容。
N.B.我不能假定配置文件在安装之间保持不变,或者我可以更快地获取文件,而不是卸载可以杀死它。
您对升级机制有相当多的控制权,您应该可以在升级过程中按照自己的意愿进行操作。特别是,我会让新的MSI读取配置设置,然后将它们写回到配置文件(新的MSI将在删除旧的配置文件之前运行)。这将使你的安装idempotent(理想)。
要回答你的问题,有很多方法可以做你想做的。下面是我怎么可能会去了解它:
写ARPINSTALLLOCATION - 这old blog entry of mine has details。
如果你知道你的旧MSI的ProductCode
,跳到第3步。如果你不这样做,现在的ProductCode
,然后使用MSI的UpgradeCode
(你知道,如果你在所有做的升级)和请使用::MsiEnumRelatedProducts()查找以前安装的MSI的ProductCode
。
如果您知道您的MSI的ProductCode
,请致电::MsiGetProductInfo()并索取INSTALLPROPERTY_INSTALLLOCATION
财产。
同意。我认为他真正需要的是记忆属性模式。 – 2013-03-12 22:42:25