NSIS的InstalldirRegKey是否误用App Paths?安装路径异常求助
问题解决方案
1. 让安装程序优先使用InstallDir而非InstallDirRegKey
直接修改安装脚本,移除或注释掉InstallDirRegKey相关指令,安装程序就会默认使用你预先定义的InstallDir值(比如C:\Program Files\My Apps\A)作为安装路径。
如果需要重装时自动识别原安装目录,不要复用App Paths的注册表项,应该单独创建一个专门记录安装目录的注册表项:
- 首次安装时,将安装目录写入
HKEY_LOCAL_MACHINE\SOFTWARE\My Apps\A\InstallDir(默认值设为C:\Program Files\My Apps\A) - 将脚本中的
InstallDirRegKey改为指向这个新项,示例代码:
InstallDirRegKey HKLM "SOFTWARE\My Apps\A" "InstallDir"
这样既能保留重装识别原路径的功能,又不会和App Paths的功能冲突。
2. InstallDirRegKey不应占用App Paths注册表项
完全不应该,原因如下:
- 语义不符:App Paths的设计定位是「让系统/其他应用快速找到可执行文件的路径」,核心是映射exe文件的位置,而非存储应用的根安装目录,名称里的「App Paths」已经明确了它的用途;
- 路径解析风险:App Paths中存储的是exe的完整路径(比如
C:\Program Files\My Apps\A\a.exe),如果用它作为InstallDirRegKey的来源,安装程序可能错误地将文件路径当成目录处理,导致你遇到的嵌套目录(A\A\a.exe)问题; - 稳定性问题:App Paths可能被系统或其他应用修改,会干扰安装程序对原安装目录的识别逻辑。
内容的提问来源于stack exchange,提问作者LarryB
相关产品推荐
相关产品推荐

