安装完成后如何找到安装文件夹?

时间:2011-11-30 17:04:08

标签: windows-installer inno-setup

我正在尝试编写扩展安装程序,但必须找到必备应用程序的INSTALLDIR。先决条件应用程序随MSI一起安装。扩展安装程序正在使用Inno Setup。

有关我可以从何处获取此信息的任何提示?

我查看了Windows卸载注册表,但InstallLocation值为空。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{MY-PRODUCTID-GUID-HERE}]
"Comments"=""
"Contact"=""
"DisplayVersion"="1.0.0"
"HelpLink"=""
"HelpTelephone"=""
"InstallDate"="20111021"
"InstallLocation"=""
"InstallSource"="D:\\Documents\\Downloads\\"
"URLUpdateInfo"=""
"VersionMajor"=dword:00000001
"VersionMinor"=dword:00000000
"WindowsInstaller"=dword:00000001
"Version"=dword:01000000
"Language"=dword:00000409
"DisplayName"="MyApp (64-bit)"

4 个答案:

答案 0 :(得分:2)

解决此问题的简单方法是尝试导航到先决条件的默认安装目录。如果找不到,请提示用户输入安装目录的路径。

我使用NSIS。所以,就这些而言,它是这样的:

    Function .onInit

  Pop $R1 ; "c:\\Program Files\ etc...."

  # Check if it is installed
  StrCmp $R1
    MessageBox MB_OK|MB_ICONSTOP $(NotInstalled)
    Abort

  # It is installed so set INSTDIR
  StrCpy $INSTDIR "$R1"

FunctionEnd

答案 1 :(得分:2)

MSI不会将程序包限制为只有一个安装目录,因此无法查询一个目录。如果要提供这样的可扩展性,请选择一个目录并将其写入注册表以供其他人查询。

答案 2 :(得分:0)

如果它不在那个位置,你可以要求主包的作者看看他们是否将路径存储在任何地方。如果没有,DevinBM的建议是唯一可行的方法。

答案 3 :(得分:0)

安装应用程序不需要将InstallLocation写入Uninstall注册表项,但是推荐。但是在开发安装包时你必须自己照顾它。

程序可以将此值写入注册表中自己的密钥,例如:HKLM\Software\MyApp

如果先决条件是你的,那么修改安装程序,使其将扩展名应安装到的目录写入注册表,suggested by Bob