wix工具集中的组件“ RemoveRegistryKey”的条件似乎不起作用?

问题描述

我使用以下条件来删除注册表项,该注册表项在原始安装程序中未添加。但是似乎条件总是错误的。我尝试使用<Codition>1</Condition>,并且组件工作正常。 我对该组件的条件是:仅卸载(不修复,不修改,不更新,不升级...)

<Component Id="RegistryCleanupHKLM" Guid="*" Directory="TARGETDIR">
        <RemoveRegistryKey Action="removeOnUninstall" Root="HKLM" Key="Software\WOW6432Node\Company\Module\TestDelete"/>
        <Condition>(REMOVE="ALL" AND (NOT UPGRADINGPRODUCTCODE))</Condition>

有人理想帮助我吗? (对不起我的英语。希望每个人都能理解我的意思。)

解决方法

您需要将条件添加到新的 Feature 元素中,而不是在 Component 元素中。

<Feature Id="FEATURE_ID_CLEAN_REGISTRY" Title="CleanRegistry" Level="1">
    <Condition Level="0">
        <![CDATA[UPGRADINGPRODUCTCODE]]>
    </Condition>
    <ComponentRef Id ="RegistryCleanupHKLM"/>
</Feature>