NSIS 和 PATH 环境变量

NSIS and PATH env variables

在我的安装程序中,我嵌入了 cmake 和其他安装程序。 在安装过程中,用户通过我的安装程序安装 cmake,并将 cmake 添加到路径中。

此时如果我打开命令提示符并键入cmake,它实际上被识别了。

但在安装程序中我运行执行以下命令:

ReadEnvStr  %COMSPEC%
ExecWait '"" /c cmake XXX'

但是它告诉我无法识别cmake。这怎么可能?我之前只是在 c:/windows/system32/cmd.exe 中打开一个命令提示符并输入 cmake,它被识别了,所以为什么这段代码不起作用?

好像路径环境变量没有以某种方式更新。当然,如果我重新启动它可以正常工作,但我想避免它。

感谢您的帮助。

环境变量默认继承自父进程。 Explorer.exe 是唯一监听环境变化的应用程序,因此如果您从开始菜单启动新进程,它将 运行 使用更新的环境。

您可以更新安装程序进程环境,它将传递给 ExecWait 子进程:

System::Call 'kernel32::SetEnvironmentVariable(t "foo", t "bar")'

在处理长路径字符串时,您确实应该使用 EnvVar plug-in.