如何查找以前安装的位置

时间:2016-11-28 19:43:57

标签: wix

我正在使用Wix Burn升级我们的程序,但有一些先决条件。该程序需要安装在先前安装的相同位置。如何找到安装位置?我正在考虑从注册表Uninstall文件夹中找到它,但是,有时它甚至不存在。即使它在那里,我如何从Burn获得它?

1 个答案:

答案 0 :(得分:0)

您可以使用AppSearch查找先前安装所安装的组件。然后,您可以使用ComponentSearch的结果动态设置安装目录。所有这些都是在msi中完成的,烧录不涉及该过程。您唯一要做的就是更改版本号并确保上一个捆绑包的UpgradeCode与当前捆绑包的UpgradeCode匹配。请记住,与msi软件包不同,刻录软件包版本号的最后一部分非常重要。您还需要更改msi的版本号。

为了使这项工作,前一个包必须安装一个GUID为您所知的组件,并且该组件需要驻留在您要升级的文件夹中。

<!-- ComponentSearch -->
<Fragment>
    <Property Id="PREVIOUS_INSTALL_FOLDER">
        <ComponentSearch Id="MyComponentSearch" Guid="KNOWN_GUID_OF_PREVIOUSLY_INSTALLED_COMPONENT" />
    </Property>
</Fragment>

<!-- Increment Product Version, Reference Component Search, Set Target Location -->
<Product 
    ...
    Version="INCREMENTED_VERSION_NUMBER"
    UpgradeCode="HAS_TO_MATCH_PREVIOUSLY_INSTALLED_UC">
        <SetProperty 
        Id="DYNAMIC_PROGRAM_LOCATION" 
        Value="[PREVIOUS_INSTALL_FOLDER]" 
        After="AppSearch" Sequence="ui" Action="SetDynamicProgramLocation">
            <![CDATA[PREVIOUS_INSTALL_FOLDER]]>
        </SetProperty>
</Product>

<!-- Folder Layout -->
<Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="DYNAMIC_PROGRAM_LOCATION" />
        </Directory>
    </Directory>
</Fragment>