轉一篇寫的不錯的NSIS打包指令碼示例
阿新 • • 發佈:2019-01-08
----------------------------------------------------------------------------------------------
這幾天稍稍深入地使用了一下 NSIS,功能太強大了。回首看看不比學習一門高階語言容易,不過一般也能信手拈來。製作了一個 CuteFoto 的 NSIS 安裝指令碼,支援多語言,支援自動判斷作業系統並優先選擇安裝 ASCII/UNICODE或AMD64版本...等等。
附件下載: 請點這裡
其中幾個地方說明一下:
---如果以 SectionGroup 而不是 Section 為第一個區段定義,發現 NSIS 無法正常處理預設/自定義安裝型別,應該是 NSIS 的一個 BUG。但是在d第一個 SectionGroup 之前加上一個無名的空段 (隱藏),即可解決此問題。即 Section...SectionEnd。---判斷是否是 NT 類作業系統:
ReadRegStr $0 HKLM "SOFTWAREMicrosoftWindows NTCurrentVersion" "CurrentVersion"
${If} $0 != ""
---判斷是處理器架構:
ReadRegStr $0 HKLM "SYSTEMCurrentControlSetControlSession ManagerEnvironment" "PROCESSOR_ARCHITECTURE"
${If} $0 != "AMD64"
---還有單選按鈕支援,看程式碼……
---NSIS 的中文文件和例子請看這裡: http://foobar.nease.net/nsis/ (衷心感謝藍色網際網友的工作,foobarr.cab 內有一個助手函式庫,看看也許會很有用)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 標頭檔案 !include "MUI.nsh" !include "Sections.nsh" !include "LogicLib.nsh" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 巨集定義 !define STR_AppName "CuteFoto" !define STR_Version "2.2.240" !define STR_Publisher "Yonsm.NET" !define STR_HomepageUrl "http://Yonsm.zj.com" !define REG_AppPath "Software\Microsoft\Windows\CurrentVersion\App Paths\${STR_AppName}.exe" !define REG_Uninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\${STR_AppName}" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MUI 設定 !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp" !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp" !define MUI_HEADERIMAGE_UNBITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-uninstall.bmp" ; 元件頁面設定 !define MUI_COMPONENTSPAGE_SMALLDESC ; 完成安裝頁面設定 !define MUI_FINISHPAGE_RUN "$INSTDIR\${STR_AppName}.exe" !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\${STR_AppName}.chm" !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(LNG_ShowHelp)" !define MUI_FINISHPAGE_LINK "${STR_AppName} $(LNG_Homepage): ${STR_HomepageUrl}" !define MUI_FINISHPAGE_LINK_LOCATION "${STR_HomepageUrl}" ; 語言選擇設定 !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" !define MUI_LANGDLL_REGISTRY_KEY "${REG_Uninstall}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; 安裝頁面 !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "$(LNG_License)" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH ; 解除安裝頁面 !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH ; 語言支援 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 語言相關字串 LicenseLangString LNG_License ${LANG_ENGLISH} "EULA.ENU.rtf" LangString LNG_BrandingText ${LANG_ENGLISH} "Expert -> Professional -> Absorbedly" LangString LNG_DefaultInstation ${LANG_ENGLISH} "Default installtion" LangString LNG_FullInstation ${LANG_ENGLISH} "Full installtion" LangString LNG_MinimalInstation ${LANG_ENGLISH} "Minimal installtion" LangString LNG_Help ${LANG_ENGLISH} "Help" LangString LNG_Homepage ${LANG_ENGLISH} "Homepage" LangString LNG_Uninstall ${LANG_ENGLISH} "Uninstall" LangString LNG_ShowHelp ${LANG_ENGLISH} "Show Help" LangString LNG_ProgramFile ${LANG_ENGLISH} "Program Files" LangString LNG_LanguageFile ${LANG_ENGLISH} "Language Files" LangString LNG_CreateShortcut ${LANG_ENGLISH} "Create Shortcut" LangString LNG_ProgramMenuShortcutGroup ${LANG_ENGLISH} "Program Menu Shortcut Group" LangString LNG_DesktopShortcut ${LANG_ENGLISH} "Desktop Shortcut" LangString LNG_ProgramMenuShortcut ${LANG_ENGLISH} "Program Menu Shortcut" LangString LNG_StartMenuShortcut ${LANG_ENGLISH} "Start Menu Shortcut" LangString LNG_QuickLaunchShortcut ${LANG_ENGLISH} "Quick Launch Bar Shortcut" LangString LNG_ProgramFileDesc ${LANG_ENGLISH} "Install ${STR_AppName} program files." LangString LNG_LanguageFileDesc ${LANG_ENGLISH} "Install ${STR_AppName} language files." LangString LNG_CreateShortcutDesc ${LANG_ENGLISH} "Create shortcuts to launch the program easy." LangString LNG_X86AsciiDesc ${LANG_ENGLISH} "ASCII version on WIN32 platform for X86 architecture (The only choice on WIN9X OS for X86 architecture)." LangString LNG_X86UnicodeDesc ${LANG_ENGLISH} "Unicode version on WIN32 platform for X86 architecture (Preferred on WINNT OS for X86 architecture)." LangString LNG_X64UnicodeDesc ${LANG_ENGLISH} "Unicode version on WIN64 platform for X64 architecture (Preferred on WIN64 OS for X64 architecture)." LicenseLangString LNG_License ${LANG_SIMPCHINESE} "EULA.CHS.rtf" LangString LNG_BrandingText ${LANG_SIMPCHINESE} "專家 -> 專業 -> 專心" LangString LNG_DefaultInstation ${LANG_SIMPCHINESE} "預設安裝" LangString LNG_FullInstation ${LANG_SIMPCHINESE} "完全安裝" LangString LNG_MinimalInstation ${LANG_SIMPCHINESE} "最小安裝" LangString LNG_Help ${LANG_SIMPCHINESE} "幫助" LangString LNG_Homepage ${LANG_SIMPCHINESE} "主頁" LangString LNG_Uninstall ${LANG_SIMPCHINESE} "解除安裝" LangString LNG_ShowHelp ${LANG_SIMPCHINESE} "檢視幫助" LangString LNG_ProgramFile ${LANG_SIMPCHINESE} "程式檔案" LangString LNG_LanguageFile ${LANG_SIMPCHINESE} "語言檔案" LangString LNG_CreateShortcut ${LANG_SIMPCHINESE} "建立快捷方式" LangString LNG_ProgramMenuShortcutGroup ${LANG_SIMPCHINESE} "程式選單快捷方式組" LangString LNG_DesktopShortcut ${LANG_SIMPCHINESE} "桌面快捷方式" LangString LNG_ProgramMenuShortcut ${LANG_SIMPCHINESE} "程式選單快捷方式" LangString LNG_StartMenuShortcut ${LANG_SIMPCHINESE} "開始選單快捷方式" LangString LNG_QuickLaunchShortcut ${LANG_SIMPCHINESE} "快速啟動欄快捷方式" LangString LNG_ProgramFileDesc ${LANG_SIMPCHINESE} "安裝 ${STR_AppName} 程式檔案。" LangString LNG_LanguageFileDesc ${LANG_SIMPCHINESE} "安裝 ${STR_AppName} 語言檔案。" LangString LNG_CreateShortcutDesc ${LANG_SIMPCHINESE} "建立用於快速訪問的快捷方式。" LangString LNG_X86AsciiDesc ${LANG_SIMPCHINESE} "安裝 X86 架構 WIN32 平臺上的 ASCII 版本。這是在 X86 架構 WIN9X 類作業系統中的唯一選擇。" LangString LNG_X86UnicodeDesc ${LANG_SIMPCHINESE} "安裝 X86 架構 WIN32 平臺上的 UNICODE 版本。這是在 X86 架構 WINNT 類作業系統中的優先選擇。" LangString LNG_X64UnicodeDesc ${LANG_SIMPCHINESE} "安裝 X64 架構 WIN64 平臺上的 UNICODE 版本。這是在 X64 架構 WIN64 類作業系統中的優先選擇。" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 雜項 Name "${STR_AppName} ${STR_Version}" OutFile "${STR_AppName}.${STR_Version}.exe" InstallDir "$PROGRAMFILES\${STR_AppName}" InstallDirRegKey HKLM "${REG_AppPath}" "" ShowInstDetails SHOW ShowUnInstDetails SHOW BrandingText "$(LNG_BrandingText)" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 安裝型別 !ifndef NOINSTTYPES InstType "$(LNG_DefaultInstation)" InstType "$(LNG_FullInstation)" InstType "$(LNG_MinimalInstation)" !endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 程式檔案 Section SectionEnd SectionGroup /e "$(LNG_ProgramFile)" SEC_ProgramFile Section "-HelpFile" SEC_HelpFile SetOutPath "$INSTDIR" SetOverwrite ON File "..\Help\CuteFoto.chm" SectionEnd Section "X86 ASCII" SEC_X86Ascii SectionIn 1 2 3 File "..\Release\CuteFoto.exe" SectionEnd Section "X86 UNICODE" SEC_X86Unicode SectionIn 5 RO File "..\Unicode\Release\CuteFoto.exe" SectionEnd Section "X64 UNICODE" SEC_X64Unicode SectionIn 5 RO File "..\AMD64\Release\CuteFoto.exe" SectionEnd SectionGroupEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 語言檔案 SectionGroup "$(LNG_LanguageFile)" SEC_LanguageFile Section "English" SEC_English SectionIn 2 File "..\Release\English.lng" SectionEnd Section "CAPITAL ENGLISH" SEC_CapitalEnglish SectionIn 1 2 File "..\Release\English (Capital).lng" SectionEnd Section "簡體中文" SEC_SimplifiedChinese SectionIn 1 2 File "..\Release\Chinese (Simplified).lng" SectionEnd SectionGroupEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 快捷方式 SectionGroup "$(LNG_CreateShortcut)" SEC_Shortcut SectionGroup "$(LNG_ProgramMenuShortcutGroup)" SEC_ProgramMenuShortcutGroup Section "${STR_AppName}" SEC_AppNameShortcut SectionIn 1 2 CreateDirectory "$SMPROGRAMS\${STR_AppName}" CreateShortCut "$SMPROGRAMS\${STR_AppName}\${STR_AppName}.lnk" "$INSTDIR\${STR_AppName}.exe" SectionEnd Section "${STR_AppName} $(LNG_Help)" SEC_HelpShortcut SectionIn 1 2 CreateDirectory "$SMPROGRAMS\${STR_AppName}" CreateShortCut "$SMPROGRAMS\${STR_AppName}\${STR_AppName} $(LNG_Help).lnk" "$INSTDIR\${STR_AppName}.chm" SectionEnd Section "${STR_AppName} $(LNG_Homepage)" SEC_HomePageShortcut SectionIn 1 2 CreateDirectory "$SMPROGRAMS\${STR_AppName}" WriteINIStr "$SMPROGRAMS\${STR_AppName}\${STR_AppName} $(LNG_Homepage).url" "InternetShortcut" "URL" "${STR_HomepageUrl}" SectionEnd Section "$(LNG_Uninstall) ${STR_AppName}" SEC_UninstallShortcut SectionIn 1 2 CreateDirectory "$SMPROGRAMS\${STR_AppName}" CreateShortCut "$SMPROGRAMS\${STR_AppName}\$(LNG_Uninstall) ${STR_AppName}.lnk" "$INSTDIR\Uninstall ${STR_AppName}.exe" SectionEnd SectionGroupEnd Section "$(LNG_DesktopShortcut)" SEC_DesktopShortcut SectionIn 1 2 CreateShortCut "$DESKTOP\${STR_AppName}.lnk" "$INSTDIR\${STR_AppName}.exe" SectionEnd Section "$(LNG_ProgramMenuShortcut)" SEC_ProgramMenuShortcut SectionIn 2 CreateShortCut "$SMPROGRAMS\${STR_AppName}.lnk" "$INSTDIR\${STR_AppName}.exe" SectionEnd Section "$(LNG_StartMenuShortcut)" SEC_StartMenuShortcut SectionIn 2 CreateShortCut "$STARTMENU\${STR_AppName}.lnk" "$INSTDIR\${STR_AppName}.exe" SectionEnd Section "$(LNG_QuickLaunchShortcut)" SEC_QuickLaunchShortcut SectionIn 2 CreateShortCut "$QUICKLAUNCH\${STR_AppName}.lnk" "$INSTDIR\${STR_AppName}.exe" SectionEnd SectionGroupEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 完成安裝 Section "-PostInstall" WriteUninstaller "$INSTDIR\Uninstall ${STR_AppName}.exe" WriteRegStr HKLM "${REG_AppPath}" "" "$INSTDIR\CuteFoto.exe" WriteRegStr HKLM "${REG_Uninstall}" "DisplayName" "$(^Name)" WriteRegStr HKLM "${REG_Uninstall}" "UninstallString" "$INSTDIR\Uninstall ${STR_AppName}.exe" WriteRegStr HKLM "${REG_Uninstall}" "DisplayIcon" "$INSTDIR\CuteFoto.exe" WriteRegStr HKLM "${REG_Uninstall}" "DisplayVersion" "${STR_Version}" WriteRegStr HKLM "${REG_Uninstall}" "URLInfoAbout" "${STR_HomepageUrl}" WriteRegStr HKLM "${REG_Uninstall}" "Publisher" "${STR_Publisher}" SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 解除安裝 Section "Uninstall" Delete /REBOOTOK "$SMPROGRAMS\${STR_AppName}\${STR_AppName}.lnk" Delete /REBOOTOK "$SMPROGRAMS\${STR_AppName}\${STR_AppName} $(LNG_Help).lnk" Delete /REBOOTOK "$SMPROGRAMS\${STR_AppName}\${STR_AppName} $(LNG_Homepage).url" Delete /REBOOTOK "$SMPROGRAMS\${STR_AppName}\$(LNG_Uninstall) ${STR_AppName}.lnk" Delete /REBOOTOK "$DESKTOP\${STR_AppName}.lnk" Delete /REBOOTOK "$SMPROGRAMS\${STR_AppName}.lnk" Delete /REBOOTOK "$STARTMENU\${STR_AppName}.lnk" Delete /REBOOTOK "$QUICKLAUNCH\${STR_AppName}.lnk" Delete /REBOOTOK "$INSTDIR\${STR_AppName}.exe" Delete /REBOOTOK "$INSTDIR\${STR_AppName}.chm" Delete /REBOOTOK "$INSTDIR\English.lng" Delete /REBOOTOK "$INSTDIR\English (Capital).lng" Delete /REBOOTOK "$INSTDIR\Chinese (Simplified).lng" Delete /REBOOTOK "$INSTDIR\${STR_AppName}.ini" Delete /REBOOTOK "$INSTDIR\Uninstall ${STR_AppName}.exe" RMDir /REBOOTOK "$SMPROGRAMS\${STR_AppName}" RMDir /REBOOTOK "$INSTDIR" DeleteRegKey HKLM "${REG_Uninstall}" DeleteRegKey HKLM "${REG_AppPath}" SetAutoClose True SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 節描述 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SEC_ProgramFile} "$(LNG_ProgramFileDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_LanguageFile} "$(LNG_LanguageFileDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_Shortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_X86Ascii} "$(LNG_X86AsciiDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_X86Unicode} "$(LNG_X86UnicodeDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_X64Unicode} "$(LNG_X64UnicodeDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_English} "Install language file: English (For translation only)." !insertmacro MUI_DESCRIPTION_TEXT ${SEC_CapitalEnglish} "INSTALL LANGUAGE FILE: CAPITAL ENGLISH." !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SimplifiedChinese} "安裝語言檔案: 簡體中文。" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_ProgramMenuShortcutGroup} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_DesktopShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_ProgramMenuShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_StartMenuShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_QuickLaunchShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_AppNameShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_HelpShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_HomePageShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_DESCRIPTION_TEXT ${SEC_UninstallShortcut} "$(LNG_CreateShortcutDesc)" !insertmacro MUI_FUNCTION_DESCRIPTION_END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 初始化回撥函式 Function .onInit StrCpy $1 ${SEC_X86Ascii} ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentVersion" ${If} $0 != "" SectionSetInstTypes ${SEC_X86Ascii} 0 !insertmacro UnselectSection ${SEC_X86Ascii} !insertmacro ClearSectionFlag ${SEC_X86Unicode} ${SF_RO} ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PROCESSOR_ARCHITECTURE" ${If} $0 != "AMD64" SectionSetInstTypes ${SEC_X86Unicode} 7 !insertmacro SelectSection ${SEC_X86Unicode} StrCpy $1 ${SEC_X86Unicode} ${Else} SectionSetInstTypes ${SEC_X64Unicode} 7 !insertmacro ClearSectionFlag ${SEC_X64Unicode} ${SF_RO} !insertmacro SelectSection ${SEC_X64Unicode} StrCpy $1 ${SEC_X64Unicode} ${EndIf} ${EndIf} !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 選擇改變 Function .onSelChange !insertmacro StartRadioButtons $1 !insertmacro RadioButton ${SEC_X86Ascii} !insertmacro RadioButton ${SEC_X86Unicode} !insertmacro RadioButton ${SEC_X64Unicode} !insertmacro EndRadioButtons FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 解除安裝初始化 Function un.onInit !insertmacro MUI_UNGETLANGUAGE FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;