NSIS和PATH环境变量



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

此时,如果我打开命令提示符并输入cmake,它实际上是可以识别的。

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

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

但是它告诉我cmake没有被识别。这怎么可能呢?我只是在c:/windows/system32/cmd.exe中打开一个命令提示符,然后输入cmake,它被识别出来了,所以为什么这个代码不起作用?

好像路径的env变量没有被更新。当然,如果我重新启动它工作正常,但我想避免它。

谢谢你的帮助。

默认情况下,环境变量继承自它们的父进程。exe是唯一一个监听环境变化的应用程序,因此,如果你从开始菜单中启动一个新进程,它将在更新后的环境中运行。

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

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

当处理长路径字符串时,你真的应该使用EnvVar插件。

最新更新