Ich verwende nsis für ein Installationsprogramm einer Webapplikation. Auf einer Seite des Assistenten möchte ich, dass der Benutzer eines von drei Kontrollkästchen auswählt: Jedes von ihnen muss zwei Variablen auf unterschiedliche Weise setzen.Mit nsis können Sie Optionen aus den Kontrollkästchen abrufen
Hier ist der Code, den ich zu laufen bin versucht +!
definieren DATA_ONE data_one.zip definieren DATA_TWO data_two.zip definieren DATA_THREE data_three.zip
Funktion myfunc ... $ {NSD_GetState} $ 1 $ radioOne $ {NSD_GetState} $ RadioTwo $ 2 $ { } $ NSD_GetState RadioThree $ 3
; The two variables i want to set
Var /GLOBAL CUSTOMER_DATA ; this should be a File (?)
Var /GLOBAL LENGTH_POS ; this is a string
StrCpy $CUSTOMER_DATA ${DATA_ONE} ; default value
StrCpy $LENGTH_POS ""
${If} $1 == ${BST_CHECKED}
StrCpy $CUSTOMER_DATA ${DATA_ONE}
StrCpy $LENGTH_POS "3"
${endif}
${If} $2 == ${BST_CHECKED}
StrCpy $CUSTOMER_DATA ${DATA_TWO}
StrCpy $LENGTH_POS ""
${endif}
${If} $3 == ${BST_CHECKED}
StrCpy $CUSTOMER_DATA ${DATA_THREE}
StrCpy $LENGTH_POS ""
${endif}
; here the line i've got the error
File ${BUILD_DIR}/$CUSTOMER_DATA
...
FunctionEnd
Wenn ich versuche, es zu laufen, was ich habe:
File: "./$CUSTOMER_DATA" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
/oname=outfile one_file_only)
Ich nehme an dem Fehler ist, weil die Datei i Konstruktion bin nicht bei der Kompilierung definiert ist aber nur zur Laufzeit. Ist es richtig ? Sollte ich Makro verwenden? Was ist der elegantere Weg, um dieses Problem zu lösen?