旧版本的安装程序是使用以下命令创建的InstallScope =“每台机器”。
新版本的目的是InstallScope =“每个用户”;它还需要使用与旧版本创建的相同的注册表项。
问题是,升级过程中这些注册表项下存储的任何值最终都会被旧版本存储的初始值覆盖。即使在安装之前手动删除这些键也会使它们在安装过程后重新出现(带有错误的值)。
我尝试创建自定义操作并专门删除这些键,但结果是相同的。
如何确保旧版本不会干扰新版本的安装过程,从而允许删除旧的注册表项并重新创建它们?
我发现有效的方法:
执行一个REPAIR安装新版本后立即会产生正确的结果!
在安装新版本之前手动卸载旧版本不会删除密钥,但允许使用正确的值覆盖它们。
您应该定义您正在执行哪种升级,如果它是主要升级,那么它在您的主要升级元素中的排序位置,尽管......
主要问题可能是 Windows Installer 不支持跨上下文主要升级,因此如果您正在进行主要升级,您最终将安装这两个产品。这不是升级,很可能只是碰撞。因此,假设您只想在这一切结束时安装其中一个,则需要卸载旧的每台计算机安装,然后安装每用户。至于为什么卸载每台计算机产品不会删除注册表项,有很多可能的原因,例如它们是由应用程序而不是 MSI 创建的,或者组件被标记为永久的,或者组件有另一个客户端系统上的产品 - 卸载日志可能会显示发生了什么情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)