微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在重大升级期间在 InstallScript 中找到应用程序的先前安装位置?

如何解决如何在重大升级期间在 InstallScript 中找到应用程序的先前安装位置?

我正在更新用 InstallShield 编写的安装程序,以执行应用程序的重大升级,并通过自定义操作调用 InstallScript 函数来备份和恢复应用程序目录中的某些文件。我让脚本使用硬编码的先前安装目录,但需要找到安装应用程序的实际位置。

我可以使用以下方法获取当前安装的位置:

MsiGetProductInfo(PRODUCT_GUID,INSTALLPROPERTY_INSTALLLOCATION,savedInstallDir,bufferSize);

但是如果我将 PRODUCT_GUID 更改为之前安装的产品代码的硬编码值,那么我会在 savedInstallDir 中得到一个空字符串:

MsiGetProductInfo("{my-prevIoUs-product-code}",bufferSize);

解决方法

您确定已为已安装的旧版本保留了安装位置吗?当您从 VBScript 中尝试时,您是否有任何收获(当然是使用您自己的产品 G​​UID 进行更新):

Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductInfo("{9B061D60-4E2C-4987-BFFD-423E3D477660}","InstallLocation")

我检查了所有已安装的软件包,只有大约十几个(在几百个软件包中)保留了这条路径。 Script to check all installed packages


在注册表中:在 location:

下查找值 "InstallLocation"
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\PACKEDGUIDHERE\InstallProperties

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{REGULARGUIDHERE}

指南:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。