gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:00:37 25 4
gpt4 key购买 nike

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

MsiGetProductInfo(PRODUCT_GUID, INSTALLPROPERTY_INSTALLLOCATION, savedInstallDir, bufferSize);
但是如果我将 PRODUCT_GUID 更改为先前安装的产品代码的硬编码值,那么我会在savedInstallDir 中得到一个空字符串:
MsiGetProductInfo("{my-previous-product-code}", INSTALLPROPERTY_INSTALLLOCATION, savedInstallDir, 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 .

在注册表中:查找值 "InstallLocation" 根据位置:
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\PACKEDGUIDHERE\InstallProperties
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{REGULARGUIDHERE}

  • 指南:
  • Packed GUID converter .
  • About packed GUIDs .
  • 关于windows-installer - 如何在重大升级期间在 InstallScript 中找到应用程序的先前安装位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66496308/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com