मैं एनएसआईएस का उपयोग कर एक इंस्टॉलर बना रहा हूं। यह इंस्टॉलर वास्तव में एक ही इंस्टॉलर में दो अलग-अलग निर्देशिकाओं में दो प्रोग्राम स्थापित करता है। मैं इसे आधुनिक यूजर इंटरफेस (एमयूआई) पृष्ठों का उपयोग करके कर रहा हूं और एमयूआई_PAGE_DIRECTORY को दो बार अलग-अलग प्रारंभिक पैरामीटर्स निर्दिष्ट करता हूं, और लाइव मैक्रो में निर्देशिका को कैप्चर करता हूं। मैं क्या सोच रहा हूं, क्या मैं किसी फ़ंक्शन में InstallDir को कॉल कर सकता हूं, या किसी फ़ंक्शन में ऑटो निर्देशिका पॉप्युलेट मान सेट कर सकता हूं? या ब्राउज बटन से वापस लौटने के बाद संभवत: फ़ंक्शन को कॉल भी किया गया है?किसी फ़ंक्शन में InstallDir का सेट मान सेट करें, या किसी भी तरह ऑटो पॉप्युलेट मान सेट करें?
कारण यह है कि मैं ऐसा करना चाहता हूं, जब उपयोगकर्ता निर्देशिका के चयन के बाद दो निर्देशिका पृष्ठों में से किसी एक ब्राउज़ बटन पर क्लिक करता है, तो इंस्टॉलडियर में निर्दिष्ट अंतिम निर्देशिका का नाम जोड़ा जाएगा।
उदाहरण के लिए: कार्यक्रम 1 के लिए INSTALLDIR मूल्य: सी: कार्यक्रम 2 के लिए \ ग्राहक INSTALLDIR मूल्य: c: \ प्रोग्राम फ़ाइलें \ सर्वर
उपयोगकर्ता क्लिक कार्यक्रम 1 पर ब्राउज़ करें और चुनता c: \ अस्थायी जिसके परिणामस्वरूप \ जो कुछ भी है, जिसके परिणामस्वरूप पथ सी है:: \ जो कुछ भी \ सर्वर
संदर्भ के लिए यहाँ क्या मुझे लगता है कि है कोड snipits हैं
उपयोगकर्ता क्लिक कार्यक्रम 2 पर ब्राउज़ करें और चुनता ग \ अस्थायी \ ग्राहक: पथ सी है काम करता है, लेकिन ऑटो संलग्न ब्राउज़ बटन व्यवहार से निपटता नहीं है:
!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
नोट: मैं निर्देशिका पृष्ठों में से एक के लिए ब्राउज़ बटन काम कर सकते हैं, लेकिन तब जब मैं दूसरे पृष्ठ पर कर रहा हूँ, ऑटो वास्तविक ऑटो पॉप्युलेट गलत तरीके से भरता है
पाठ इनपुट को अक्षम करने से शांत IMHO नहीं है – Anders