如何解决NSIS 和 PATH 环境变量
在我的安装程序中,我嵌入了 cmake 和其他安装程序。 在安装过程中,用户通过我的安装程序安装 cmake 并将 cmake 添加到路径中。
此时如果我打开命令提示符并输入cmake,它实际上已被识别。
但在安装程序中我运行以下命令:
ReadEnvStr $1 %COMSPEC%
ExecWait '"$1" /c cmake XXX'
但它告诉我无法识别 cmake。这怎么可能?我之前只是在 c:/windows/system32/cmd.exe 中打开一个命令提示符并键入 cmake 并被识别,所以为什么这段代码不起作用?
这就像路径 env 变量没有以某种方式更新。当然,如果我重新启动它可以正常工作,但我想避免它。
感谢您的帮助。
解决方法
环境变量默认继承自其父进程。 Explorer.exe 是唯一侦听环境变化的应用程序,因此如果您从开始菜单启动一个新进程,它将在更新后的环境中运行。
您可以更新安装程序进程环境,它将被传递给 ExecWait 子进程:
System::Call 'kernel32::SetEnvironmentVariable(t "foo",t "bar")'
在处理长路径字符串时,您确实应该使用 EnvVar plug-in。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。