我得到了这个脚本(作者:Red Wine),它显示了一个下拉列表,其中包含用户可以选择安装文件的可用驱动程序。我需要获取用户选择的选项并将其写在 .txt 文件中。我怎样才能做到这一点?(例如:如果用户选择了 C:\,就在“C:\”那里)
!define SIZE "100" ;add here total uncompressed data size in Mb of your application
!define APPNAME "My Application"
Name '${APPNAME}'
OutFile 'test.exe'
LicenseData '${NSISDIR}\License.txt'
LicenseBkColor 0xFFFFFF
ShowInstDetails show
AllowRootDirInstall true
!include WinMessages.nsh
!include FileFunc.nsh
!insertmacro GetDrives
!insertmacro DriveSpace
Page License
Page Custom CustomCreate CustomLeave
Page InstFiles
Section "boo"
SetOutPath '$INSTDIR'
SectionEnd
Function CustomCreate
WriteIniStr '$PLUGINSDIR\custom.ini' 'Settings' 'NumFields' '6'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Left' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Top' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Right' '-6'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Bottom' '17'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Text' \
'Select Installation drive:'
StrCpy $R2 0
StrCpy $R0 ''
${GetDrives} "HDD" GetDrivesCallBack
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Type' 'DropList'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Left' '30'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Top' '26'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Right' '-31'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Bottom' '100'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Flags' 'Notify'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'State' '$R1'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'ListItems' '$R0'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Left' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Top' '109'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Right' '59'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Bottom' '119'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Text' \
'Space required:'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Left' '60'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Top' '109'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Right' '-5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Bottom' '119'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 4' 'Text' \
'${SIZE} Mb'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Left' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Top' '120'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Right' '59'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Bottom' '130'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Text' \
'Space available:'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Left' '60'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Top' '120'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Right' '-5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Bottom' '130'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Text' \
'$R3 Mb'
push $0
InstallOptions::Dialog '$PLUGINSDIR\custom.ini'
pop $0
pop $0
FunctionEnd
Function CustomLeave
ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Settings' 'State'
StrCmp $0 '2' 0 next
ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 2' 'State'
StrCpy $0 $0 3
${DriveSpace} "$0" "/D=F /S=M" $R3
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 6' 'Text' \
'$R3 Mb'
ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 6' 'HWND'
SendMessage $0 ${WM_SETTEXT} 0 'STR:$R3 Mb'
Abort
next:
ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 2' 'State'
StrCpy '$INSTDIR' '$0'
FunctionEnd
Function GetDrivesCallBack
${DriveSpace} "$9" "/D=F /S=M" $R4
IntCmp $R4 '${SIZE}' end end def
def:
StrCmp $R2 '0' 0 next
StrCpy $R3 '$R4'
StrCpy $R1 '$9${APPNAME}'
IntOp $R2 $R2 + 1
next:
StrCpy $R0 '$R0$9${APPNAME}|'
end:
Push $0
FunctionEnd
Function .onInit
InitPluginsDir
GetTempFileName $0
Rename $0 '$PLUGINSDIR\custom.ini'
FunctionEnd