我创建了一个带有条件disABLEMSIUPGRADE的组件,当我使用我们的ExternalUI安装MSI时,它已经设置好了.但是,MSI不会删除UnInstall上的条目.我认为问题是由条件引起的,但我无法修复它.
<Component Id="compMSI" Guid="5f18af6a-b839-4b4d-9d4f-79cf7826f749"> <Condition>disABLEMSIUPGRADE</Condition> <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(var.PGuid)" Action="createAndRemoveOnUninstall"> <RegistryValue Name="displayName" Type="string" Value="$(var.ProductTitle)" /> <!-- ... --> </RegistryKey> </Component>
我甚至将RemoveRegistryKey元素放在其他组件中以确保键被删除,但这也没有完成工作……
我还尝试在Key中存储和读取disABLEMSIUPGRADE属性.
//编辑:我进行了一些实验,发现CONDITION元素不是原因.我看起来如果我安装了另一个版本的安装程序,则注册表项不会被删除.可能导致什么?
Windows Installer引用按组件/ @Guid计算组件.如果跨MSI文件共享了组件(即具有相同@Guid的组件),则只有在卸载两个MSI时才会删除组件的内容.
我强烈建议您阅读有关组件规则的内容.他们控制所有这些:http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。