Wix 带有RegSearch的旧属性正在影响产品升级(没有此道具的新版本)

Wix 带有RegSearch的旧属性正在影响产品升级(没有此道具的新版本),wix,windows-installer,major-upgrade,Wix,Windows Installer,Major Upgrade,我继承了WiX中创建的MSI项目,现在我正试图解决一些不幸存在的问题 有一个用于查找保存在注册表项中的特定目录的: <Property Id="AUTO_FOUND_DIR" Secure="yes" Admin="yes"> <RegistrySearch Id="regsrch_AUTO_FOUND_DIR" Root="HKCU" Key="$(var.RegPath)"

我继承了WiX中创建的MSI项目,现在我正试图解决一些不幸存在的问题

有一个用于查找保存在注册表项中的特定目录的:

<Property Id="AUTO_FOUND_DIR" Secure="yes" Admin="yes">
      <RegistrySearch Id="regsrch_AUTO_FOUND_DIR"
                      Root="HKCU"
                      Key="$(var.RegPath)"
                      Name="$(var.SpecificKey)"
                      Type="raw"
      />
</Property>
问题是:我不需要这种解决方法(也不需要使用
AUTO\u FOUND\u DIR
属性。我已经删除了该代码,但在升级过程中(主要,
Product
Package
GUIDs设置为
“*”
升级代码
与以前的版本具有相同的值)我可以在MSI的详细日志中看到,这个
AUTO\u FOUND\u DIR
存在,
RegistrySearch
读取具有特定目录的键值,因此
util:RemoveFolderEx
删除该目录和位于其中的所有组件

我的问题是:如何检测升级过程中为什么会使用此旧属性,以及如何将其清除


附加信息:安装范围为
PerMachine
ALLUSERS
设置为1。升级版本的MSI已删除此属性。

如果不仔细查看完整的详细日志以了解情况,请记住升级会卸载较旧的已安装产品。这意味着升级过程中会出现较旧安装产品中的逻辑。因此,您肯定会看到在较旧产品卸载时运行RegistrySearch,设置AUTO_FOUND_DIR,并且会看到卸载过程中运行的RemoveFolder


因此,如果您看到的只是正在卸载的旧产品的卸载活动,则不清楚您是否真的存在问题。该活动嵌入到已安装的产品中。

感谢Phil的回复!是的,我知道卸载是升级的一部分,我读了您的书(谢谢!)在引入此属性的产品版本中,
RemoveExistingProduct
是在
InstallExecute
之后安排的。我已将此更改为在
InstallInitialize
之后安排的。这解决了问题,但有副作用,因为我现在需要重新安排许多CA。我应该更清楚-是在升级过程中,是否可以通过某种方式阻止较旧版本的注册表搜索?
<Feature>
<DirectoryRef Id="ProgramMenuDir">
      <Component Id="cmp_ProgramMenuDir" Guid="{0E8BD13A-GUID-IS-HERE-6E5092ECA9EF}">
        <CreateFolder />
        <RemoveFolder Id='ProgramMenuDir' On='uninstall' />
        <RegistryKey Id='reg_SpecificKeyID' Root='HKCU' Key='$(var.RegPath)' ForceCreateOnInstall="yes">
          <RegistryValue Type='string' Name='$(var.SpecificKey)' Value='[ProgramMenuDir]'/>
        </RegistryKey>
        <!-- other content: shortcut to ProgramMenuFolder and other stuff -->
        <util:RemoveFolderEx Id="rm_dirID" On="install" Property="AUTO_FOUND_DIR"/>
      </Component>
    </DirectoryRef>
</Feature>