gpt4 book ai didi

parameters - 我怎么知道/D 参数是否传递到基于 NSIS 的安装程序中

转载 作者:行者123 更新时间:2023-12-03 09:44:08 24 4
gpt4 key购买 nike

NSIS 中是否有任何标志或其他选项可以看到默认的 $INSTDIR 变量已通过传递给安装程序的/D 参数更改?

我试着这样做:

1. setup.exe /D=C:\Temp
2. ${GetParameters} $R0
3. And see that $R0 is empty

有什么建议吗?

最佳答案

在执行.onInit之前,$InstDir是由InstallDir设置的,那么如果InstallDirRegKey定义的值> 存在它将覆盖 InstallDir。最后,如果用户使用/D,$InstDir 将设置为该参数。这对大多数安装程序来说都可以,因为您真的不需要知道 $InstDir 是如何设置的。

如果您使用的是 RequestExecutionLevel highest,并且您的安装程序支持根据提升状态为单个用户或所有用户安装,那么这是不行的。解决此问题的唯一方法是不使用 InstallDir*

; DO NOT USE: InstallDir
; DO NOT USE: InstallDirRegKey

!include LogicLib.nsh

Function .onInit
${If} $InstDir != ""
; /D was used
${Else}
; Set some default
StrCpy $InstDir "$ProgramFiles\foo\bar"
${EndIf}
FunctionEnd

或者,您可以使用 System::Call kernel32::GetCommandLine()t.r0 并在末尾解析 $0 寻找/D...

关于parameters - 我怎么知道/D 参数是否传递到基于 NSIS 的安装程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272992/

24 4 0