You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Inno Setup外部查询其安装的程序对应的路径?

Inno Setup 安装路径查询方案

1. 常规带卸载信息的安装包查询

绝大多数默认配置打包的Inno Setup程序,安装路径会写入系统注册表的卸载节点,你可以优先从这里读取:

  • 注册表路径分两类,对应不同安装权限:
    • 所有用户安装(管理员权限):
      • 64位程序:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1
      • 32位程序在64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1
    • 单用户安装(普通权限):
      • 64位程序:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1
      • 32位程序在64位系统:HKEY_CURRENT_USER\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1

上述路径下的InstallLocation键值即为实际安装路径,Python读取示例(使用标准库winreg):

import winreg

def get_innosetup_install_path(app_id: str, is_all_user: bool = False, is_32bit: bool = False) -> str | None:
    root = winreg.HKEY_LOCAL_MACHINE if is_all_user else winreg.HKEY_CURRENT_USER
    sub_path = "SOFTWARE"
    if is_32bit:
        sub_path += r"\WOW6432Node"
    sub_path += fr"\Microsoft\Windows\CurrentVersion\Uninstall\{app_id}_is1"
    try:
        key = winreg.OpenKey(root, sub_path)
        install_path, _ = winreg.QueryValueEx(key, "InstallLocation")
        winreg.CloseKey(key)
        return install_path.strip()
    except FileNotFoundError:
        return None

2. 不带卸载程序的安装包查询

如果安装包打包时设置了Uninstallable=no或者CreateUninstallRegKey=no,Inno Setup不会生成卸载注册表项,此时需要分两种情况处理:

  • 若开发者需要支持后续升级,一般会主动在安装脚本中将{app}(安装路径变量)写入自定义注册表路径,你可以根据AppId关联的程序信息,查询对应开发者预设的自定义注册表项读取路径。
  • 若开发者未做额外路径存储配置,可通过特征文件匹配的方式定位:优先遍历%ProgramFiles%、%ProgramFiles(x86)%、%AppData%、%LocalAppData%等常见安装目录,匹配你已知的程序唯一主执行文件名或者特征文件,取文件所在目录即为安装路径。

内容的提问来源于stack exchange,提问作者mngeek206

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:54:01