【发布时间】:2015-11-30 15:36:08
【问题描述】:
我正在尝试使用 InstallShield 对我们的产品进行重大升级。只要用户没有选择将其安装到自定义位置,一切都可以正常工作。如果他们这样做了,则找不到我创建的用于备份和恢复用户设置(.Net 配置文件条目)的任何代码,因为自定义操作正在默认位置中查找。它对原始安装的位置一无所知。卸载能够从该安装中发现 INSTALLDIR 并将其卸载。 FindRelatedProducts 显示:
FindRelatedProducts: Found application: {E881D894-B624-4B8B-8A02-36E2425E3928}
但是,除了在专有注册表位置之外,我在其他任何地方都找不到该密钥,那里没有任何用处:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield Uninstall Information\{E881D894-B624-4B8B-8A02-36E2425E3928}
E881D... 是我正在升级的安装的 ProductCode。我无法在任何地方找到升级代码,无论是按该顺序还是使用 MS 编码/打包格式。
在我看来,能够找到要升级的软件包的安装位置应该是一项非常基本的功能,因为人们会期望在升级应用程序时,用户可能希望将其放回原处。显然,该信息在某处可用,因为 ARP 和升级安装程序能够成功删除该应用程序。
另外,在重大升级期间,是否有任何方法可以访问原始安装中 SecureCustomProperties 的值?我很确定我知道答案...
【问题讨论】:
标签: windows-installer installshield