NSIS を使用してプログラム インストーラーを実行していますが、/D オプションが機能していないようです (または内部でオーバーライドされた方がよいでしょう)。コマンドライン経由でトリガーします:
installer.exe /S /D=C:\Users\Public\installDir
NSIS コードは次のとおりです。
InstallDir "C:\Users\Public\${VERSIONSTR}"
Function xxxx
${If} $MultiUser.InstallMode == "AllUsers"
StrCpy $INSTDIR "C:\Users\Public\Dir1"
${EndIf}
IfSilent 0 +20
StrCpy $INSTDIR "C:\Userdata\Dir2"
FunctionEnd
使用するインストール フォルダは「C:\Users\Public\Dir2」です。IfSilent ブロックにコメントしても、インストール フォルダーは「C:\Users\Public\Dir1」になりますが、コマンド ライン経由で渡されることはありません。スクリプトの何が問題になっていますか?