Ich versuche, ein Testinstallationsprogramm (EXE) auszuführen, das von NSIS generiert wird, während Befehlszeilenargumente bereitgestellt werden. Ich verwende GetParameters und GetOptions.NSIS GetOptions wirft einen Fehler, obwohl die Option vorhanden ist
Mein Code:
FileOpen $0 "$InstDir\output.txt" w
${GetParameters} $R1
${GetOptions} $R1 "-pss" $R2
IfErrors 0 +3
FileWrite $0 "Success"
Goto done
FileWrite $0 "Fail"
done:
FileClose $0
und der Befehl verwendet, wenn diese ausgeführt wird:
installer.exe -pss
Ich erhalte Fail
in der Textdatei, aber die Option ist in der Befehlszeile String. Was mache ich falsch?
Ich habe versucht mit /pss
anstelle von -pss
und das gibt mir immer noch einen Fehler. Ich habe auch lief den gleichen Code mit ein paar Änderungen:
FileOpen $0 "$InstDir\output.txt" w
${GetParameters} $R1
${GetOptions} $R1 "-pss=" $R2 ;;revision
IfErrors 0 +3
FileWrite $0 "Success = $R2" ;;revision
Goto done
FileWrite $0 "Fail = $R2" ;;revision
done:
FileClose $0
mit dem Befehl installer.exe -pss=true
verwendet und die true
wird in die Datei geschrieben, was bedeutet, $R1
einen Wert empfangend, aber ich bin immer noch ein Fehler.
Das große Ding hier ist, dass ich keinen tatsächlichen Wert benötige, aber muss nur sehen, ob die Option -pss verfügbar ist.
Kann mir jemand sagen, was ich falsch mache oder wo mein Missverständnis ist?
Das hat geklappt! Toller Mann, danke. Ich wusste von LogicLib, aber ich dachte, ich würde IfError zum Üben verwenden. Aber ich denke, es gibt nicht viel Sinn, wenn es viel bessere Möglichkeiten gibt, es zu tun. –
Mein Missverständnis war, dass wenn "IfError" keinen Fehler zeigte, das erste Argument gemacht wurde. Nochmals vielen Dank, Mann! –