?? filezilla.nsi
字號:
GetDlgItem $R3 $IO_HWND 1206 ; Package directory input field
GetDlgItem $R4 $IO_HWND 1207 ; Package directory browse button
EnableWindow $R2 $R0
StrCmp $R0 0 +4
EnableWindow $R3 $R1
EnableWindow $R4 $R1
goto +3
EnableWindow $R3 0
EnableWindow $R4 0
Abort ; Return to the page
validate_dldialog:
; Nothing to validate
FunctionEnd
Function Settings
StrCpy $R1 ""
SectionGetFlags ${SecFrenchDocumentation} $R0
Intop $R0 $R0 & "0x1"
StrCmp $R0 0 +2
StrCpy $R1 "x"
SectionGetFlags ${SecSourceCode} $R0
Intop $R0 $R0 & "0x1"
StrCmp $R0 0 +2
StrCpy $R1 "x"
StrCpy $R0 ""
StrCmp $R1 "" "" skipsetinstallbutton
strCpy $R0 $(^InstallBtn)
skipsetinstallbutton:
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" settings NextButtonText $R0
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 1" text $(QuestionRunInSecureMode)
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 2" text $(UseSecureMode)
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 3" text $(DontUseSecureMode)
ReadRegStr $R0 HKCU Software\FileZilla "Run in Secure mode"
StrCmp $R0 "1" preselectsecure
ReadRegStr $R0 HKLM Software\FileZilla "Run in Secure mode"
StrCmp $R0 "1" preselectsecure
goto preselectsecure_end
preselectsecure:
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 2" state 1
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 3" state 0
preselectsecure_end:
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 4" text $(StorageQuestion)
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 5" text $(UseXML)
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 6" text $(UseRegistry)
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 7" text $(ForceUseRegistry)
ReadRegStr $R0 HKCU Software\FileZilla "Use Registry"
StrCmp $R0 "2" preselectstorage_force
StrCmp $R0 "1" preselectstorage
ReadRegStr $R0 HKLM Software\FileZilla "Use Registry"
StrCmp $R0 "2" preselectstorage_force
StrCmp $R0 "1" preselectstorage
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 7" flags "DISABLED"
goto preselectstorage_end
preselectstorage_force:
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 7" state 1
preselectstorage:
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 6" state 1
!insertmacro MUI_INSTALLOPTIONS_WRITE "settings.ini" "Field 5" state 0
preselectstorage_end:
!insertmacro MUI_HEADER_TEXT $(PageSettingsTitle) $(PageSettingsSubTitle)
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "settings.ini"
Pop $IO_HWND
!insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd
Function SettingsEnd
; At this point the user has either pressed Next or one of our custom buttons
; We find out which by reading from the INI file
!insertmacro MUI_INSTALLOPTIONS_READ $R0 "settings.ini" "Settings" "State"
StrCmp $R0 0 validate_settingsdialog ; Next button?
StrCmp $R0 5 onchange_settingsdialog
StrCmp $R0 6 onchange_settingsdialog
Abort ; Return to the page
onchange_settingsdialog:
; Make the Force registry field depend on use registry radiobuttun
!insertmacro MUI_INSTALLOPTIONS_READ $R0 "settings.ini" "Field 5" "State"
GetDlgItem $R1 $IO_HWND 1206 ; Force registry checkbox
StrCmp $R0 0 "" +3
EnableWindow $R1 1
goto +2
EnableWindow $R1 0
Abort ; Return to the page
validate_settingsdialog:
; Nothing to validate
FunctionEnd
!macro checklang RefLang LangToFind goto
push "${Reflang}"
push "${LangToFind}"
call StrStr
Pop $R1
StrCmp $1 "" "" ${goto}
!macroend
Function WriteLanguage
Push $R0
Push $R1
;Checks current language set in the registry, if none is set (or one not included in the installer) set it to the current one
StrCpy $R0 ""
;First check/set the value under HKCU
ReadRegStr $R0 HKCU Software\FileZilla Language
StrCmp $R0 "" HKCU_SetLanguage
!insertmacro checklang "$R0" "Bulgarian" HKCU_SetLanguage
!insertmacro checklang "$R0" "Catalan" HKCU_SetLanguage
!insertmacro checklang "$R0" "Czech" HKCU_SetLanguage
!insertmacro checklang "$R0" "English" HKCU_SetLanguage
!insertmacro checklang "$R0" "Deutsch" HKCU_SetLanguage
!insertmacro checklang "$R0" "Fran鏰is" HKCU_SetLanguage
!insertmacro checklang "$R0" "Italiano" HKCU_SetLanguage
!insertmacro checklang "$R0" "Hungarian" HKCU_SetLanguage
!insertmacro checklang "$R0" "Japanese" HKCU_SetLanguage
!insertmacro checklang "$R0" "Korean" HKCU_SetLanguage
!insertmacro checklang "$R0" "Norwegian" HKCU_SetLanguage
!insertmacro checklang "$R0" "Polski" HKCU_SetLanguage
!insertmacro checklang "$R0" "Russian" HKCU_SetLanguage
!insertmacro checklang "$R0" "Simplified Chinese" HKCU_SetLanguage
!insertmacro checklang "$R0" "Traditional Chinese" HKCU_SetLanguage
!Insertmacro checklang "$R0" "Slovak" HKCU_SetLanguage
goto HKLM_CheckLanguage
HKCU_SetLanguage:
WriteRegStr HKCU Software\FileZilla Language $(FZLanguageName)
HKLM_CheckLanguage:
StrCpy $R0 ""
;Now check/set the value under HKLM
ReadRegStr $R0 HKLM Software\FileZilla Language
StrCmp $R0 "" HKLM_SetLanguage
!insertmacro checklang "$R0" "Bulgarian" HKLM_SetLanguage
!insertmacro checklang "$R0" "Catalan" HKLM_SetLanguage
!insertmacro checklang "$R0" "Czech" HKLM_SetLanguage
!insertmacro checklang "$R0" "English" HKLM_SetLanguage
!insertmacro checklang "$R0" "Deutsch" HKLM_SetLanguage
!insertmacro checklang "$R0" "Fran鏰is" HKLM_SetLanguage
!insertmacro checklang "$R0" "Italiano" HKLM_SetLanguage
!insertmacro checklang "$R0" "Hungarian" HKLM_SetLanguage
!insertmacro checklang "$R0" "Japanese" HKLM_SetLanguage
!insertmacro checklang "$R0" "Korean" HKLM_SetLanguage
!insertmacro checklang "$R0" "Norwegian" HKLM_SetLanguage
!insertmacro checklang "$R0" "Polski" HKLM_SetLanguage
!insertmacro checklang "$R0" "Russian" HKLM_SetLanguage
!insertmacro checklang "$R0" "Simplified Chinese" HKLM_SetLanguage
!insertmacro checklang "$R0" "Traditional Chinese" HKLM_SetLanguage
!Insertmacro checklang "$R0" "Slovak" HKLM_SetLanguage
goto SetLanguageDone
HKLM_SetLanguage:
WriteRegStr HKLM Software\FileZilla Language $(FZLanguageName)
SetLanguageDone:
Pop $R1
Pop $R0
FunctionEnd
; GetParameters
; input, none
; output, top of stack (replaces, with e.g. whatever)
; modifies no other variables.
Function GetParameters
Push $R0
Push $R1
Push $R2
Push $R3
StrCpy $R2 1
StrLen $R3 $CMDLINE
;Check for quote or space
StrCpy $R0 $CMDLINE $R2
StrCmp $R0 '"' 0 +3
StrCpy $R1 '"'
Goto loop
StrCpy $R1 " "
loop:
IntOp $R2 $R2 + 1
StrCpy $R0 $CMDLINE 1 $R2
StrCmp $R0 $R1 get
StrCmp $R2 $R3 get
Goto loop
get:
IntOp $R2 $R2 + 1
StrCpy $R0 $CMDLINE 1 $R2
StrCmp $R0 " " get
StrCpy $R0 $CMDLINE "" $R2
Pop $R3
Pop $R2
Pop $R1
Exch $R0
FunctionEnd
; StrStr
; input, top of stack = string to search for
; top of stack-1 = string to search in
; output, top of stack (replaces with the portion of the string remaining)
; modifies no other variables.
;
; Usage:
; Push "this is a long ass string"
; Push "ass"
; Call StrStr
; Pop $R0
; ($R0 at this point is "ass string")
Function StrStr
Exch $R1 ; st=haystack,old$R1, $R1=needle
Exch ; st=old$R1,haystack
Exch $R2 ; st=old$R1,old$R2, $R2=haystack
Push $R3
Push $R4
Push $R5
StrLen $R3 $R1
StrCpy $R4 0
; $R1=needle
; $R2=haystack
; $R3=len(needle)
; $R4=cnt
; $R5=tmp
loop:
StrCpy $R5 $R2 $R3 $R4
StrCmp $R5 $R1 done
StrCmp $R5 "" done
IntOp $R4 $R4 + 1
Goto loop
done:
StrCpy $R1 $R2 "" $R4
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Exch $R1
FunctionEnd
!include "download.nsh"
;--------------------------------
;Descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecFileZilla} $(SecFileZillaDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecDocumentation} $(SecDocumentationDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecEnglishDocumentation} $(SecEnglishDocumentationDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecFrenchDocumentation} $(SecFrenchDocumentationDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecLangFiles} $(SecLangFilesDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecSourceCode} $(SecSourceCodeDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} $(SecStartMenuDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopIcon} $(SecDesktopIconDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecDebug} $(SecDebugDesc)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
;Uninstaller section
!macro deleteLanguageFiles LANGNAME SHORTNAME
Delete "$INSTDIR\source\LanguageDLLs\${LANGNAME}\FzRes${SHORTNAME}.vcproj"
Delete "$INSTDIR\source\LanguageDLLs\${LANGNAME}\FzRes${SHORTNAME}.rc"
Delete "$INSTDIR\source\LanguageDLLs\${LANGNAME}\res\toolbar.bmp"
Delete "$INSTDIR\source\LanguageDLLs\${LANGNAME}\fz_${LANGNAME}.nsh"
RMDir "$INSTDIR\source\LanguageDLLs\${LANGNAME}\res"
RMDir "$INSTDIR\source\LanguageDLLs\${LANGNAME}"
!macroend
Section "Uninstall"
;Add your stuff here
; remove registry keys
MessageBox MB_ICONQUESTION|MB_YESNO $(un.QuestionDeleteRegistry) IDNO NoRegDelete
DeleteRegKey HKCU "Software\FileZilla"
DeleteRegKey HKLM "Software\FileZilla"
NoRegDelete:
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\FileZilla"
; remove files
Delete $INSTDIR\FileZilla.exe
Delete $INSTDIR\FileZilla.chm
Delete $INSTDIR\FileZillaFrench.chm
Delete $INSTDIR\dbghelp.dll
Delete $INSTDIR\FzGSS.dll
Delete $INSTDIR\FzResBu.dll
Delete $INSTDIR\FzResBr.dll
Delete $INSTDIR\FzResCa.dll
Delete $INSTDIR\FzResCh.dll
Delete $INSTDIR\FzResChs.dll
Delete $INSTDIR\FzResCze.dll
Delete $INSTDIR\FzResDe.dll
Delete $INSTDIR\FzResEs.dll
Delete $INSTDIR\FzResFr.dll
Delete $INSTDIR\FzResHu.dll
Delete $INSTDIR\FzResIt.dll
Delete $INSTDIR\FzResJp.dll
Delete $INSTDIR\FzResKr.dll
Delete $INSTDIR\FzResNor.dll
Delete $INSTDIR\FzResPo.dll
Delete $INSTDIR\FzResRu.dll
Delete $INSTDIR\FzResSk.dll
Delete $INSTDIR\libeay32.dll
Delete $INSTDIR\FzSFtp.exe"
Delete $INSTDIR\ssleay32.dll
Delete $INSTDIR\GPL.html
Delete $INSTDIR\puttylicense.html
Delete $INSTDIR\legal.htm
Delete $INSTDIR\readme.htm
; Remove source code
Delete $INSTDIR\build.bat
Delete $INSTDIR\source\*.cpp"
Delete $INSTDIR\source\*.h"
Delete $INSTDIR\source\FileZilla.sln"
Delete $INSTDIR\source\FileZilla.vcproj"
Delete $INSTDIR\source\FileZilla.rc"
; source\res
Delete $INSTDIR\source\res\*.ico
Delete $INSTDIR\source\res\*.bmp
Delete $INSTDIR\source\res\FileZilla.rc2
Delete $INSTDIR\source\res\manifest.xml
; source\misc
Delete $INSTDIR\source\misc\*.cpp
Delete $INSTDIR\source\misc\*.h
Delete $INSTDIR\source\misc\*.hpp
; source\gss
Delete $INSTDIR\source\gss\*.h
; source\documentation
Delete $INSTDIR\source\documentation\*.htm"
Delete $INSTDIR\source\documentation\*.css"
Delete $INSTDIR\source\documentation\*.hhc"
Delete $INSTDIR\source\documentation\*.hhp"
Delete $INSTDIR\source\documentation\*.hhk"
Delete $INSTDIR\source\documentation\*.png"
; source\documentation\french
Delete $INSTDIR\source\documentation\french\*.htm"
Delete $INSTDIR\source\documentation\french\*.css"
Delete $INSTDIR\source\documentation\french\*.hhc"
Delete $INSTDIR\source\documentation\french\*.hhp"
Delete $INSTDIR\source\documentation\french\*.hhk"
Delete $INSTDIR\source\documentation\french\*.png"
; source\install
Delete $INSTDIR\source\install\autobuild
Delete $INSTDIR\source\install\uninstall.ico
Delete $INSTDIR\source\install\FileZilla.nsi
Delete $INSTDIR\source\install\license.txt
Delete $INSTDIR\source\install\download.nsh
Delete $INSTDIR\source\install\download.ini
Delete $INSTDIR\source\install\settings.ini
; source\openssl
Delete $INSTDIR\source\openssl\*.h
; source\LanguageDLLs
Delete $INSTDIR\source\LanguageDLLs\fixmingw.sh
Delete $INSTDIR\source\LanguageDLLs\fixmingw.sed
Delete "$INSTDIR\source\LanguageDLLs\Translation Guide.htm"
Delete $INSTDIR\source\LanguageDLLs\makelangfiles.sh
; Delete language files and folders
!insertmacro deleteLanguageFiles English En
!insertmacro deleteLanguageFiles Bulgarian Bu
!insertmacro deleteLanguageFiles Breton Br
!insertmacro deleteLanguageFiles Catalan Ca
!insertmacro deleteLanguageFiles Czech Cze
!insertmacro deleteLanguageFiles SimplifiedChinese Chs
!insertmacro deleteLanguageFiles TraditionalChinese Ch
!insertmacro deleteLanguageFiles French Fr
!insertmacro deleteLanguageFiles German De
!insertmacro deleteLanguageFiles Hungarian Hu
!insertmacro deleteLanguageFiles Italian It
!insertmacro deleteLanguageFiles Japanese Jp
!insertmacro deleteLanguageFiles Korean Kr
!insertmacro deleteLanguageFiles Norwegian Nor
!insertmacro deleteLanguageFiles Polish Po
!insertmacro deleteLanguageFiles Spanish Es
!insertmacro deleteLanguageFiles Russian Ru
!insertmacro deleteLanguageFiles Slovak Sk
;FzSFtp
Delete "$INSTDIR\source\FzSFtp\*.h"
Delete "$INSTDIR\source\FzSFtp\*.c"
Delete "$INSTDIR\source\FzSFtp\*.cpp"
Delete "$INSTDIR\source\FzSFtp\FzSFtp.rc"
Delete "$INSTDIR\source\FzSFtp\FzSFtp.vcproj"
Delete "$INSTDIR\source\FzSFtp\LICENCE"
Delete "$INSTDIR\source\FzSFtp\res\scp.ico"
; MUST REMOVE UNINSTALLER, too
Delete $INSTDIR\uninstall.exe
; remove shortcuts, if any.
Delete "$SMPROGRAMS\FileZilla\*.*"
Delete $DESKTOP\FileZilla.lnk
; remove directories used.
; Remove Startmenu shortcuts
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
StrCmp $MUI_TEMP "" noshortcuts
Delete "$SMPROGRAMS\$MUI_TEMP\FileZilla.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\FileZilla Source Project.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\FileZilla Documentation.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\FileZilla Documentation (French).lnk"
RMDir "$SMPROGRAMS\Start Menu Folder" ;Only if empty, so it won't delete other shortcuts
noshortcuts:
; Remove folders
RMDir "$INSTDIR\source\res"
RMDir "$INSTDIR\source\misc"
RMDir "$INSTDIR\source\install"
RMDir "$INSTDIR\source\gss"
RMDir "$INSTDIR\source\documentation\french"
RMDir "$INSTDIR\source\documentation"
RMDir "$INSTDIR\source\openssl"
RMDir "$INSTDIR\source\LanguageDLLs"
RMDir "$INSTDIR\source\FzSFtp\res"
RMDir "$INSTDIR\source\FzSFtp"
RMDir "$INSTDIR\source"
RMDir "$INSTDIR"
SectionEnd
;--------------------------------
;Uninstaller functions
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -