Sto creando un programma di installazione che utilizza NSIS. Questo programma di installazione installa in realtà due programmi in due diverse directory nello stesso programma di installazione. Lo sto facendo usando le pagine dell'interfaccia utente moderna (MUI) e semplicemente chiamando MUI_PAGE_DIRECTORY due volte specificando diversi parametri di partenza e catturando la directory nella macro LEAVE. Quello che mi chiedo è, posso in qualche modo chiamare InstallDir in una funzione, o impostare il valore di popolamento della directory automatica in una funzione? O forse anche chiamare una funzione dopo che è stato restituito il pulsante di navigazione?Impostare il valore di InstallDir in una funzione o impostare il valore del popolamento automatico in qualche modo?
Il motivo per cui voglio farlo è quando l'utente fa clic sul pulsante Sfoglia in una delle due pagine di directory, dopo aver selezionato una directory, verrà aggiunto il nome della directory finnal specificata in InstallDir.
Per esempio: valore InstallDir per il programma 1: c: \ client valore InstallDir per il programma 2: c: \ program files \ server
clic degli utenti di navigare sul programma 1 e sceglie c: \ temp la risultante percorso è c: \ temp \ client
clic degli utenti di navigare sul programma 2 e sceglie c: \ qualunque sia il percorso risultante è c: \ qualunque server di
\ Per riferimento qui sono il codice snipits di quello che ho che funziona, ma non si occupa del comportamento del pulsante di ricerca dell'appendice automatico:
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ClientDirectoryLeave
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE ServerDirectoryLeave
!insertmacro MUI_PAGE_DIRECTORY
; Setup the page display for the client install page
Function ShowPageClient
!insertmacro MUI_HEADER_TEXT "Client" "Client"
!insertmacro MUI_INNERDIALOG_TEXT 1006 "Client"
; setup intal directory
Push $0
StrCpy $0 $PROGRAMFILES 2 #
; CLIENT_FOLDER_NAME is defined as a folder, but this would basicaly
; result in C:\Client as the first 2 characters of $PROGRAMFILES
; is the hard drive with program files installed on it
StrCpy $INSTDIR "$0\${CLIENT_FOLDER_NAME}"
Pop $0
; set the inital value of the directory text box
!insertmacro MUI_INNERDIALOG_TEXT 1019 $INSTDIR
; find and disable the directory selection box
; We do not want users to type in this box
FindWindow $R0 "#32770" "" $HWNDPARENT
GetDlgItem $R1 $R0 1019 ;Text Box
EnableWindow $R1 0
FunctionEnd
; Setup the page display for the server install location page
Function ShowPageServer
!insertmacro MUI_HEADER_TEXT "Server" "Server"
!insertmacro MUI_INNERDIALOG_TEXT 1006 "Server"
; setup intal directory
; SERVER_FOLDER_NAME is defined as a folder, but this would basicaly
; result in C:\Program Files\Server
StrCpy $INSTDIR "$PROGRAMFILES\${SERVER_FOLDER_NAME}"
; set the inital value of the directory text box
!insertmacro MUI_INNERDIALOG_TEXT 1019 $INSTDIR
; find and disable the directory selection box
; We do not want users to type in this box
FindWindow $R0 "#32770" "" $HWNDPARENT
GetDlgItem $R1 $R0 1019 ;Text Box
EnableWindow $R1 0
FunctionEnd
Nota: posso fare il lavoro pulsante Sfoglia per una delle pagine di directory, ma poi quando sono nella seconda pagina, l'auto popolare auto attuale popola in modo non corretto
La disattivazione del metodo di scrittura non è IMHO fresco – Anders