3

デフォルトの $INSTDIR 変数がインストーラーに渡された /D パラメーターを介して変更されたことを確認するためのフラグまたはその他のオプションが NSIS にありますか?

私はそれをやろうとしました:

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

何かアドバイス?

4

1 に答える 1

1

.onInitが実行される前に、$InstDirはによって設定されInstallDir、によって定義された値がInstallDirRegKey存在する場合は、をオーバーライドしますInstallDir。最後に、ユーザーが/ Dを使用した場合、$InstDirそのパラメーターに設定されます。どのように設定されたかを実際に知る必要がないため、これはほとんどのインストーラーにとって問題ありません$InstDir

を使用RequestExecutionLevel highestしていて、インストーラーが昇格ステータスに応じて1人のユーザーまたはすべてのユーザーのインストールをサポートしている場合、これは問題ありません。これを回避する唯一の方法は、使用しないことです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を探すこともできます...

于 2013-01-11T07:14:45.243 に答える