我坚持在升级时保留旧版本msi的注册表 . 因为旧版本msi不向管理员授予读取权限,所以我无法使用RegistrySearch来完成我的工作 .

相反,在wix脚本Product.wxs中,我在Component元素中使用NeverOverWrite =“yes”和Permanent =“yes”来保持所有注册表的卸载 .

让我感到困惑的是,当新版本msi升级旧版本时,注册管理机构会丢失 . 请注意,新版本msi由新的Product.wxs生成,它在组件元素中设置NeverOverWrite =“yes”和Permanent =“yes” .

我想原因是在升级时,“msiexec”将调用旧版本msi来卸载应用程序,在此期间删除注册表 . 对Product.wxs的修改在下一次重新升级当前版本之前不会生效 . 我不确认我的猜测,因为我找不到任何关于谷歌的参考来支持这个想法 . 任何人都可以向我澄清这个问题吗?