在 NSIS 的编译期间读取环境变量
READ THE ENVIRONMENT VARIABLE DURING THE COMPILE TIME IN NSIS
大家好,当我使用 NSIS 代码时,我需要在编译期间获取环境变量值,我发现这段代码写在某个地方但是我不明白 'Foo' 是什么意思。 &我们如何在编译时执行以下代码,在我的编译器中我没有使用以下代码获取环境变量值,任何人都可以举一个简短的例子来说明我们可以在哪里执行它以及它是如何工作的?
编辑:根据您的要求,我插入了从该论坛引用的代码 link“
; NSIS 2+
!定义美元 $
!if "$%foo%" == "${DOLLAR}%foo%"
!echo "%foo% 未设置"
!endif
; NSIS 3+
!if "$%foo%" == "${U+24}%foo%"
!echo "%foo% 未设置"
!endif
此代码尝试检查是否设置了环境变量(在执行编译器的计算机上)。如果没有设置编译器只是 returns 原始字符串(就像批处理文件一样)。您找到的代码对 $ 进行了转义,以检查是否返回了原始字符串。
Foo 只是一个占位符名称,表示 %Foo%
变量。例如,如果您想检查 %windir%,请使用 !if "$%windir%" == "${U+24}%windir%"
.
如果您只想要值,只需使用 $%windir%
:
ReadEnvStr [=10=] WINDIR
MessageBox MB_OK "%windir% was $%windir% when this installer was compiled. On this machine it is [=10=]"
大家好,当我使用 NSIS 代码时,我需要在编译期间获取环境变量值,我发现这段代码写在某个地方但是我不明白 'Foo' 是什么意思。 &我们如何在编译时执行以下代码,在我的编译器中我没有使用以下代码获取环境变量值,任何人都可以举一个简短的例子来说明我们可以在哪里执行它以及它是如何工作的?
编辑:根据您的要求,我插入了从该论坛引用的代码 link“
; NSIS 2+
!定义美元 $
!if "$%foo%" == "${DOLLAR}%foo%"
!echo "%foo% 未设置" !endif
; NSIS 3+
!if "$%foo%" == "${U+24}%foo%"
!echo "%foo% 未设置" !endif
此代码尝试检查是否设置了环境变量(在执行编译器的计算机上)。如果没有设置编译器只是 returns 原始字符串(就像批处理文件一样)。您找到的代码对 $ 进行了转义,以检查是否返回了原始字符串。
Foo 只是一个占位符名称,表示 %Foo%
变量。例如,如果您想检查 %windir%,请使用 !if "$%windir%" == "${U+24}%windir%"
.
如果您只想要值,只需使用 $%windir%
:
ReadEnvStr [=10=] WINDIR
MessageBox MB_OK "%windir% was $%windir% when this installer was compiled. On this machine it is [=10=]"