; NSIS: 結構化的 LangString 寫作 ; ; 範例: NIS EDIT 2.0b3 中文化多語言包裝。 ; 環境: NSIS 2.0b4, Modern UI 1.64 MAKENSIS.EXE 2003-05-09 ; ; 新版的 (1021) 與 Modern UI 1.66 理論上也可以用。自己用死 ; 了,自己要負責喔。如果你實在不想學多語言安裝,以及如何用 ; LangString 「騙」 NSIS ,那麼這一段對你來說,就是垃圾,你 ; 可以不看。如同 IC 所言,在硬碟毀掉之後還真是個新思維。 ; ; 重點祇有這個字: LangString ; ──其 布局 / 放置變數 / 區段位置統整 ; ; 當然許多人在質疑多語言需要或不需要。我不想多說什麼,你可 ; 以看作品本身,讓使用人的「爽快程度」。當一個語言的統整關 ; 卡突破時,剩下來的,你要加十個語言也沒有關係。你的程式控 ; 制思路,會更加清晰。 ; ; 回到原題。在 NSIS 2.0b1 之前,多語言之下需要寫「字串比 ; 較」的一大堆巨集,如下 ; ; StrCmp $LANGUAGE ${LANGID} "" +3; ; ; 而目前則以 LangString 或 LangStringUp 取代,簡潔許多。說來 ; 簡單,但要把自己寫的舊巨集改換結構,那實在是有點痛苦。為 ; 什麼要改?舊的巨集很方便,一路思路順暢,但多語言除錯時就 ; 像大海撈針一樣。新的方式,會強制把 LangString 全部歸在同 ; 一個位置。 ; ; 有了 LangString ,可以騙到的東西,太多太多了。 ; LangString 祇能用在對話顯示嗎?不能用在捷徑嗎?不能用在節 ; 段名稱控制嗎?不能用在註冊表項,讓他隨著作業系統的不同而寫 ; 入不同的數值嗎? ; ; 但是注意: 每一個 LangString 變數,前後不要附帶任何字串, ; 否則會使 NSIS 無法識別而出錯。 ; ; 簡體描述部分,因為在 BIG5 編碼之下使用 GB2312 ,故 ; 必定有亂碼,還請見諒。如果需要在網頁取得正確編碼, ; 請儲存為 BIG5 plain text ,再來處理。我會另外以 ; attach file 的方式附在板上。 ; ; 我沒有使用任何類似 GUI 的工具。推薦的就剛好是這個範圍本 ; 身所包的,NIS EDIT 2.0b3 。 ; http://search.cpatch.org/download/install/nisedit/cnisedit20b3.exe ; 如果還嫌太麻煩,Joost 的英文版 HTML 入門,只有一頁,建議先看。 ; ; 記得,沒人強迫你要使用多語言,沒人強迫你要 Modern ; UI ,沒人強迫你要歡迎對話方塊。你一樣可以做出一點也 ; 不花俏的,很傳統的安裝程式。不要在那裡廢話什麼 NSIS ; 愈做愈肥大。 ; ; 這些都是自己決定的。 ; ; ■相關閱讀 ; ; NSIS 的作業系統判斷方式 ; http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=165 ; ; NSIS 2.0b4 升級密技 ; http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=125 ; ; NSIS 2.0bxxx 的諸多討論/消息/下載 ; http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=32 ; ; NSIS 2.0 b3 升級密技 ; http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=113 ; ; NSIS 2.0b1多語言腳本寫作密技 (無經驗者,建議先看這一篇) ; http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=54 ;======================================================= ; ■1.定義變數、安裝目錄、輸出檔案、圖示 ;======================================================= ; 只要在這裡寫好,其他的都按照定義的變數下去跑,就省力多了。 ; ;============================== ; 1.1 版本號碼/名稱 ; !define VER_1 2 ;軟體版本號碼 1 ,如 Eudora 4.3.1.2 四位版本號碼 !define VER_2 41 ;軟體版本號碼 2 ;!define VER_3 xxx ;軟體版本號碼 3 ;!define VER_4 yyy ;軟體版本號碼 4 ;!define VER_R 3 ;中文化同版本第幾更版 !define MUI_PRODUCT "ACDSee" ;程式名稱 (可使用大小寫,如果有空格,請用底線取代) !define PROGFNHEADER "acdsee" ;中文化檔案名稱的主要部分 (全部小寫) !define PROGMAINEXE "acdsee32.exe" ;主程式執行檔案名稱 (含.exe) ; ;============================== ; 1.2 讀我檔案/輸出檔案 ; ; 讀我顯示,包括 CHS/CHT/ENU 三個版本。如果你不需要製作 ; 多語言中文化版本,只要考慮一個「讀我」即可。這個讀我, ; 通常拿來放「此中文化的描述檔案」,而非一般軟體的 readme 。 ; ; 檔案命名: (全部小寫)。 ; (cpatch) c + ${PROGFNHEADER} + 版本號碼 _(底線) 第幾中文化版本 . 副檔名 ; (hanzify) ha _(底線) ${PROGFNHEADER} + 版本號碼 _(底線) 作者名 . 擴展名 ; ;!define README "c${PROGFNHEADER}${VER_1}${VER_2}.txt" !define README_CHS "c${PROGFNHEADER}${VER_1}${VER_2}_gb.txt" !define README_CHT "c${PROGFNHEADER}${VER_1}${VER_2}.txt" !define README_ENU "c${PROGFNHEADER}${VER_1}${VER_2}.txt" OUTFILE "c${PROGFNHEADER}${VER_1}${VER_2}.exe" ;============================== ; 1.3 預設安裝目錄 (尾端不加 \) ; ; 通常會出現在 "C:\Program Files\xxxx " 這種目錄。 ; 也可以使用 ${AppPath} 在註冊表尋找舊版安裝目錄。 ; 如果註冊表的安裝目錄 (尾端 \) 出現,不要使用它,以免發生錯誤。 ;InstallDir "$PROGRAMFILES\${MUI_PRODUCT}" ;InstallDir "${AppPath}" InstallDir "C:\util\acdsee" ;============================== ; 1.4 版權影像 ; ; 只需要一個就夠 (一定要 bmp 格式),第二個是拿來花俏用的。 ; 可以只使用一個,或完全不使用。 !define SPLASH1 "cacdsee.bmp" ;!define SPLASH2 "mdaeomon6_chs.bmp" ;============================== ; 1.5 安裝程式型態 ; ; 中文化/直接安裝版/還是補綴補丁?安裝時出現在 caption 部分。 ; 解除安裝時,也會出現在註冊表。 !define PATCHTYPE_ENU "(CN+TW) localized" !define PATCHTYPE_CHT "(CN+TW) 中文化" !define PATCHTYPE_CHS "(CN+TW) 笢恅趙" ;============================== ; 1.6 用於解除安裝的資訊 ; ; 包含公司全稱/軟體功能概述。會塞在 Uninstall 註冊表內。 !define URLABOUT "http://www.acdsystems.com/English/Products/ACDSeeClassic/index.htm" !define URLHELP "http://www.acdsystems.com/English/Products/ACDSeeClassic/index.htm" !define URLUPDATE "http://www.acdsystems.com/English/Products/ACDSeeClassic/index.htm" !define PUBLISHER "1995-1999 ACD Systems, Ltd." ; 前面會自動依語言補上 Copyright (c) 或 版權所有 (c) ,因此後面只要接上年代和公司名稱。 ;======================================================= ; ■2.使用者介面 ;======================================================= ; 這一段的用途,在於強制覆寫 system.nsh 的英文預設設定值, ; 通常只有變更 「字型」「圖示」 ;============================== ; 2.1 字型 ; 安裝介面的字型預設大小 8,一定要改掉,否則在 win98 中文不好看。 ; 如下。雙語言中文化,使用 "Tahoma" 即可。 ; 不需要特別指定「新細明體」或「宋体」。 ;!define MUI_FONT "MS Shell Dlg" ;!define MUI_FONTSIZE "8" ;!define MUI_FONT_HEADER "MS Sans Serif" ;!define MUI_FONTSIZE_HEADER "8" ; ; 上列: NSIS 字型「預設值」,下列: 字型「建議修改值」。 ; ;!define MUI_FONT "Tahoma" ;!define MUI_FONTSIZE "9" ;!define MUI_FONT_HEADER "Tahoma" ;!define MUI_FONTSIZE_HEADER "9" ; 在 NSIS 2.0b4 2003-05-01 之後的版本,不需要再用上述 ; 命令。已由 *.NSH 指定個別語言的字型名稱與大小。 ;============================== ; 2.2 圖示 ; 安裝程式圖示: 通常我使用主程式的圖示,另外用 VC 抽取出來。 ; 解除安裝圖示: 為了讓 [控制台 | 新增/移除程式] 出現正確圖示,還是用同一個圖示。 ; 有時候則使用它附的圖示 (因為看起來不錯)。 ;!define MUI_ICON "${NSISDIR}\Contrib\Icons\modern-install.ico" ;!define MUI_UNICON "${NSISDIR}\Contrib\Icons\modern-uninstall.ico" ; ; 上列: NSIS 圖示「預設值」,風格有點像 InstallShield 6 ,也不錯。 ; 下列: 自訂圖示,請指定正確名稱 !define MUI_ICON "cacdsee.ico" !define MUI_UNICON "cacdsee.ico" ;============================== ; 2.3 其他 (* 進階) ; 設定風格,這裡是自己可以搞鬼的地方。 !define MUI_UI "${NSISDIR}\Contrib\UIs\modern2.exe" !define MUI_CHECKBITMAP "${NSISDIR}\Contrib\Icons\modern.bmp" !define MUI_FONTSTYLE_HEADER "700" !define MUI_FONT_TITLE "Verdana" !define MUI_FONTSIZE_TITLE "12" !define MUI_FONTSTYLE_TITLE "700" !define MUI_INSTALLCOLORS "/windows" !define MUI_PROGRESSBAR "smooth" !define MUI_SPECIALINI "${NSISDIR}\Contrib\Modern UI\ioSpecial.ini" !define MUI_SPECIALBITMAP "${NSISDIR}\Contrib\Icons\modern-wizard.bmp" !define MUI_BGCOLOR "0xFFFFFF" ;======================================================= ; ■3.多語言系統 ;======================================================= ; 載入 Modern UI\System.nsh 之用。 ;========================== ; 3.1 前置相同變數,視需要而定。 ; ; 通常出現在更換版本時,原腳本的變數校正。 !define MUI_VERSION "${VER_1}.${VER_2}" ;!define NAME "${MUI_PRODUCT}" ;顯示中文化標題,依 ENU/CHT/CHS 語言的不同。 CAPTION /LANG=1033 "${MUI_PRODUCT} ${MUI_VERSION} ${PATCHTYPE_ENU}" CAPTION /LANG=1028 "${MUI_PRODUCT} ${MUI_VERSION} ${PATCHTYPE_CHT}" CAPTION /LANG=2052 "${MUI_PRODUCT} ${MUI_VERSION} ${PATCHTYPE_CHS}" ;========================== ; 3.2 載入 Modern UI 系統 !include "${NSISDIR}\Contrib\Modern UI\System.nsh" ;========================== ; 3.3 使用者介面 ; ; 如果不要這些對話方塊,不做 define ,就不會出現。 !define MUI_WELCOMEPAGE ;歡迎頁面 !define MUI_LICENSEPAGE ;授權頁面 !define MUI_LICENSEPAGE_RADIOBUTTONS !define MUI_COMPONENTSPAGE ;元件頁面 !define MUI_DIRECTORYPAGE ;目錄選擇 !define MUI_ABORTWARNING ;中止警告 !define MUI_UNINSTALLER ;解除安裝程式 !define MUI_UNCONFIRMPAGE ;不做確認頁面 ; !define MUI_STARTMENUPAGE ;選擇開始功能表 !define MUI_FINISHPAGE ;出現完成頁面,執行程式和讀我。 !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_RUN "$INSTDIR\${PROGMAINEXE}" !define MUI_FINISHPAGE_SHOWREADME "$(FILE_README)" ;============================== ; 3.4 各國語言 ; 塞了 ENU/CHT/CHS 三個語言。你要 18 個語言全塞,也不反對。大小大概增加 20 kb 左右。 ; 如果不是多語言中文化安裝,你可以全部 remark 掉。 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "TradChinese" ;============================== ; 3.5 授權文字 (* 進階) ; ; 這些檔案沒有出現在 NSIS 預設包內。如果你手上沒有 license 檔案, ; 請直接 remark 掉。 ; 這些東西會先被解壓縮出來。保留這幾行在任何 File 指令之前!) ; 只能用於 BZIP2 壓縮 LicenseData /LANG=${LANG_ENGLISH} "${NSISDIR}\Examples\Modern UI\license_enu.rtf" LicenseData /LANG=${LANG_SIMPCHINESE} "${NSISDIR}\Examples\Modern UI\license_chs.rtf" LicenseData /LANG=${LANG_TRADCHINESE} "${NSISDIR}\Examples\Modern UI\license_cht.rtf" !insertmacro MUI_RESERVEFILE_LANGDLL ;======================================================= ; ■4.安裝程式,安裝開始的前置動作 (* 進階) ;======================================================= ; 如果不需要,你可以全部 remark。 Function .onInit ;============================== ; 4.1 顯示版權影像 ; ; advsplash (NSIS 插件)。解壓縮到臨時目錄,顯示 splash ,然後刪掉。 SetOutPath $TEMP File /oname=splash1.bmp ${SPLASH1} ; File /oname=splash2.bmp ${SPLASH2} advsplash::show 1200 600 400 -1 $TEMP\splash1 ; advsplash::show 1200 600 400 -1 $TEMP\splash2 Pop $0 ; $0 has '1' if the user closed the splash screen early, ; '0' if everything closed normal, and '-1' if some error occured. Delete $TEMP\spltmp.exe Delete $TEMP\splash1.bmp ; Delete $TEMP\splash2.bmp ;============================== ; 4.2 字型選擇 (* 進階) ; ; 只影響安裝程式的語言選擇 dialog ,因此不要使用中文字型名稱。 Push Verdana Push 9 ;============================== ; 4.3 語言選擇 (* 進階) ; 上面這一句,不要中文化。除非你想讓老外看到亂碼。 ; 如果這一行完全不用,那就會直接跳該語言的選項。 !insertmacro MUI_LANGDLL_DISPLAY LangDLL::LangDialog "Installer Language" "Please select a language." Pop $LANGUAGE StrCmp $LANGUAGE "cancel" 0 +2 Abort ;============================== ; 4.4 安裝前置動作 (修改註冊表) (* 進階) ; ; 視你需要,可以偷偷做一些動作。 WriteRegStr HKLM "Software\ACD Systems\ACDSee32" "RegName" "Hambo/Core" WriteRegStr HKLM "Software\ACD Systems\ACDSee32" "RegCode" "4291020284" WriteRegStr HKLM "Software\ACD Systems\ACDSee32" "Name" "Hambo/Core" WriteRegStr HKLM "Software\ACD Systems\ACDSee32" "Code" "4291020284" ;============================== ; 4.5 尋找舊版已安裝的目錄。 (* 進階) ; ; 如果 AppPath 讀出的尾端有 \ 符號,請不要直接使用於 INSTDIR 指令,以免發生錯誤。 ; ReadRegStr $AppPath HKLM "SOFTWARE\Alt-N Technologies\MDaemon" "AppPath" FunctionEnd ;======================================================= ; ■5.安裝程式,安裝完成後置動作 (* 進階) ;======================================================= ; 如果不需要,你可以全部 remark。 ;============================== ; 5.1 函式定義開始 Function .onInstSuccess ;============================== ; 5.2 安裝完成後,執行 ExecShell ; ; 視個人需要而定,我只用在 Eudora 安裝而已。 ; MessageBox MB_YESNO|MB_ICONQUESTION $(Str_Finish1) IDNO Nomapi ; ExecShell open '$INSTDIR\SWMAPI.EXE' ; Nomapi: ;============================== ; 5.3 安裝後,要求使用者讀取 README 檔案 ; MessageBox MB_YESNO|MB_ICONQUESTION $(Str_Finish2) IDNO NoReadme ; ExecShell open $(FILE_README) ;NoReadme: ;============================== ; 5.4 函式定義結束 FunctionEnd ;======================================================= ; ■6.安裝的所有檔案 ;======================================================= ;============================== ; 6.1 安裝類型 ; 兩種應該很夠了。 InstType "$(desc_InstMin)" InstType "$(desc_InstStd)" InstType "$(desc_InstFul)" ;InstType "$(desc_InstCHT)" ;InstType "$(desc_InstCHS)" ;InstType "$(desc_InstENU)" SetOverwrite on ;============================== ; 6.3 安裝的各個節段 ; Section "${MUI_PRODUCT}" Sec${MUI_PRODUCT} Section "$(S01)" SecS01 SectionIn 1 2 3 ; 6.3.1 中文化的讀我 ; 通常塞在安裝的主目錄。 SetOutPath $INSTDIR File "${README_CHT}" File "${README_CHS}" ; 6.3.2 中文化的程式檔案 ; 通常不使用 *.* 型態,而個別指定,以免包裝錯誤。 ; 常常是 *.DLL *.EXE *.AX 等類型。我都把這類放在 cht 為首的工作目錄。 SetOutPath $INSTDIR File "cht\ACDSee32.exe" File "pack241\ACDSee32.hlp" File "pack241\splash.jpg" ; File $(FILE_helpcnt) ; 依照各種語言,自動執行,分配正確的檔案。使用者不必再選擇。 ; 先寫一個巨集,自動判斷作業系統語言。 1033 enu, 1028 cht, 2052 chs ;------------------------------------------ !macro MUI_COPYTEXTFILE LANGID ACTION_COPYTEXTFILE StrCmp $LANGUAGE ${LANGID} "" +3 ${ACTION_COPYTEXTFILE} !macroend ;------------------------------------------ !insertmacro MUI_COPYTEXTFILE ${LANG_ENGLISH} 'File "textenu\ACDSee32.cnt"' !insertmacro MUI_COPYTEXTFILE ${LANG_TRADCHINESE} 'File "textcht\ACDSee32.cnt"' !insertmacro MUI_COPYTEXTFILE ${LANG_SIMPCHINESE} 'File "textchs\ACDSee32.cnt"' SectionEnd ;============================== ; 6.3 註冊為預設程式 ; Section "$(S02)" SecS02 SectionIn 1 2 3 WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\CLSID" "" "{15508BB7-CF10-11D1-A517-006008CC3FF6}" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\DefaultIcon" "" "$INSTDIR\ACDSee32.exe,2" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell" "" "Open" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\ACDView" "" "View in ACDSee(&V)" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\ACDView\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\ACDView\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\ACDView\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\ACDView\DDEExec\Topic" "" "System" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\Open\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\Open\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\Open\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_BMP\shell\Open\DDEExec\Topic" "" "System" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\CLSID" "" "{25336920-03F9-11cf-8FD0-00AA00686F13}" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\DefaultIcon" "" "$INSTDIR\ACDSee32.exe,6" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell" "" "Open" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\ACDView" "" "View in ACDSee(&V)" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\ACDView\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\ACDView\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\ACDView\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\ACDView\DDEExec\Topic" "" "System" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\Open\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\Open\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\Open\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_JPG\shell\Open\DDEExec\Topic" "" "System" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\CLSID" "" "{25336920-03F9-11cf-8FD0-00AA00686F13}" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\DefaultIcon" "" "$INSTDIR\ACDSee32.exe,4" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell" "" "Open" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\ACDView" "" "View in ACDSee(&V)" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\ACDView\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\ACDView\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\ACDView\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\ACDView\DDEExec\Topic" "" "System" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\Open\Command" "" '"$INSTDIR\ACDSee32.exe" /v' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\Open\DDEExec" "" '[open("%1")]' WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\Open\DDEExec\Application" "" "ACDSee 32" WriteRegStr HKLM "SOFTWARE\Classes\ACDC_GIF\shell\Open\DDEExec\Topic" "" "System" SectionEnd ;============================== ; 6.4 加入到「開始選單」 ; ;Section "Add shortcut to Start Menu" SecStartMenu Section "$(S11)" SecS11 SectionIn 1 2 3 SetOutPath "$INSTDIR" CreateDirectory "$SMPROGRAMS\${MUI_PRODUCT}" ; 有時候 CreateShortCut 會出問題,不如用這個動作 ; 直接強制 installer 建立目錄。這樣比較賤。 ; CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\Start ${MUI_PRODUCT}.lnk" "$INSTDIR\${PROGMAINEXE}" CreateShortCut $(shtcut_SMlink01) $(shtcut_SMfile01) ; CreateShortCut $(shtcut_SMlink01) $(shtcut_SMfile02) ; CreateShortCut $(shtcut_SMlink01) $(shtcut_SMfile03) ; CreateShortCut $(shtcut_SMlink01) $(shtcut_SMfile04) ; CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\Uninstall ${MUI_PRODUCT}.lnk" "$INSTDIR\Uninstall.exe" CreateShortCut $(shtcut_SMlink20) $(shtcut_SMfile20) SectionEnd ;============================== ; 6.5 加入到「桌面」 ; ;Section "Add shortcut to Desktop" SecDesktop Section "$(S12)" SecS12 SectionIn 1 2 3 ; CreateShortCut "$DESKTOP\${MUI_PRODUCT}.lnk" "$INSTDIR\${PROGMAINEXE}" CreateShortCut $(shtcut_DTlink01) $(shtcut_DTfile01) ; CreateShortCut $(shtcut_DTlink02) $(shtcut_DTfile02) SectionEnd ;============================== ; 6.6 加入到「快速啟動」 ; ; 不是每個程式都要加入「快速啟動」列,視需要而定。 ; 而且祇用在完整安裝。 ;Section "Add shortcut to Quicklaunch" SecQuicklaunch Section "$(S13)" SecS13 SectionIn 3 ; CreateShortCut "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" "$INSTDIR\${PROGMAINEXE}" CreateShortCut $(shtcut_QLlink01) $(shtcut_QLfile01) SectionEnd ;============================== ; 6.7 加入到「滑鼠右鍵」 (* 進階) ; ; 只用在 UltraEdit ;Section "Add to Right mouse button" SecRightMouse ;Section "$(S14)" SecS14 ; SectionIn 1 2 3 ; WriteRegStr HKLM "SOFTWARE\Classes\*\shellex\ContextMenuHandlers\UltraEdit-32" "" "{b5eedee0-c06e-11cf-8c56-444553540000}" ; WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}" "" "UltraEdit-32" ; WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32" "" "$INSTDIR\ue32ctmn.dll" ; WriteRegStr HKLM "SOFTWARE\Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32" "ThreadingModel" "Apartment" ;SectionEnd ;======================================================= ; ■7.寫入解除安裝程式 ;======================================================= ; 如果你嫌太難,可以不寫解除安裝程式,全部 remark 掉。 ;============================== ; 7.1 節段開始 ;Section "Create Uninstaller" SecCreateUninst Section "$(S15)" SecS15 SectionIn 1 2 3 ;============================== ; 7.2 寫入到「註冊表」(基礎) ; ; 一般只有寫下面這一段,指定安裝目錄。 WriteRegStr HKLM "SOFTWARE\${MUI_PRODUCT}" "Install_Dir" "$INSTDIR" WriteRegStr HKLM "SOFTWARE\${MUI_PRODUCT}" "Installer Language" $LANGUAGE ;============================== ; 7.3 寫入到「註冊表」 (* 進階) ; ; 下面這段註冊表值,只是在 {控制台 | 新增移除程式] 花俏用的。 ; 如果看不懂,可以全部不使用。 ; 參考 http://leoboard.cpatch.org/cgi-bin/topic.cgi?forum=2&topic=24&show=0 ; WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "DisplayIcon" "$INSTDIR\${PROGMAINEXE}" ; 一般使用這個型態。只有 MDaemon 例外。 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "DisplayName" "${MUI_PRODUCT} ${MUI_VERSION} ${PATCHTYPE_ENU}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "DisplayVersion" "${VER_1}.${VER_2}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "UninstallString" "$INSTDIR\uninstall.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "URLInfoAbout" "${URLABOUT}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "Contact" "kiiali@cpatch.org" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "HelpLink" "${URLHELP}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "URLUpdateInfo" "${URLUPDATE}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \ "Readme" $(Reg_FILE_README) ;============================== ; 7.4 依照各種語言,自動寫入不同的註冊表值 (* 進階) ; 包括 ENU/CHT/CHS WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Comments" "$(Reg_comments)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Publisher" "Copyright (c) ${Publisher}" ;------------------------------------------ ;============================== ; 7.6 現在寫入「解除安裝程式」 ; 寫入語言名稱到註冊表 (用於解除安裝程式) WriteRegStr HKLM "Software\${MUI_PRODUCT}" "Installer Language" $LANGUAGE WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;============================== ; 7.8 顯示「完成」標頭 ;如果不想使用「完成」頁面,在這個巨集之後插入。 ;!insertmacro MUI_SECTIONS_FINISHHEADER ;======================================================= ; ■8.描述功能 ;======================================================= ;============================== ; 8.1 描述功能的巨集 (* 進階) ; ; 如果有描述,最好一個一個加入巨集。 ; 這一段要在所有的 section 之後,否則會出現「變數名稱沒有找到」。 ; 如果 MUI_FUNCTIONS_DESCRIPTION_BEGIN 拆成兩段,會變成重覆呼叫,而導致錯誤。 !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecS01} $(DESC_SecS01) !insertmacro MUI_DESCRIPTION_TEXT ${SecS02} $(DESC_SecS02) ; !insertmacro MUI_DESCRIPTION_TEXT ${SecS03} $(DESC_SecS03) ; !insertmacro MUI_DESCRIPTION_TEXT ${SecS04} $(DESC_SecS04) ; !insertmacro MUI_DESCRIPTION_TEXT ${SecS05} $(DESC_SecS05) !insertmacro MUI_DESCRIPTION_TEXT ${SecS11} $(DESC_SecS11) !insertmacro MUI_DESCRIPTION_TEXT ${SecS12} $(DESC_SecS12) !insertmacro MUI_DESCRIPTION_TEXT ${SecS13} $(DESC_SecS13) !insertmacro MUI_DESCRIPTION_TEXT ${SecS14} $(DESC_SecS14) !insertmacro MUI_DESCRIPTION_TEXT ${SecS15} $(DESC_SecS15) !insertmacro MUI_FUNCTIONS_DESCRIPTION_END ; ;============================== ; 8.2 每個節段的描述文字,直接使用各國語言 ; ; 這是讓滑鼠移動到安裝項目上時,自動出現的描述功能。 ; 我使用 ENU/CHT/CHS 三個語言。如果嫌麻煩,可以只使用一個語言,甚至不使用描述。 ; ●產品的相關說明 (解除安裝的註冊表項) LangString Reg_comments ${LANG_ENGLISH} "Chinese (P.R.C.) and Chinese (Taiwan) ${MUI_PRODUCT} localized version by Kii Ali. ACDSee 32 is the fastest and the most usable image viewer and thumbnail browser." LangString Reg_comments ${LANG_TRADCHINESE} "中文 (中國大陸) 與 中文 (臺灣) ${MUI_PRODUCT} 本地化版本,由 Kii Ali 製作。ACDSee 32 是 ACD sytems 最快和最容易使用的影像檢視器與縮圖瀏覽器。" LangString Reg_comments ${LANG_SIMPCHINESE} "笢恅 (笢弊湮翻) 迵 笢恅 (怢俜) ${MUI_PRODUCT} 掛華趙唳掛ㄛ蚕 Kii Ali 秶釬﹝ACDSee 32 岆 ACD sytems 郔辦睿郔�椹訧墓繭鼯區騍橦棘壧輵劘奜潔素曙驉�" ; ●產品相關 readme (解除安裝的註冊表項) LangString Reg_FILE_README ${LANG_ENGLISH} "file:///$INSTDIR\${README_ENU}" LangString Reg_FILE_README ${LANG_TRADCHINESE} "file:///$INSTDIR\${README_CHT}" LangString Reg_FILE_README ${LANG_SIMPCHINESE} "file:///$INSTDIR\${README_CHS}" ; ●產品相關 readme (安裝的最後一個視窗顯示) LangString FILE_README ${LANG_ENGLISH} "$INSTDIR\${README_ENU}" LangString FILE_README ${LANG_TRADCHINESE} "$INSTDIR\${README_CHT}" LangString FILE_README ${LANG_SIMPCHINESE} "$INSTDIR\${README_CHS}" LangString FILE_helpcnt ${LANG_ENGLISH} "textenu\ACDSee32.cnt" LangString FILE_helpcnt ${LANG_TRADCHINESE} "textcht\ACDSee32.cnt" LangString FILE_helpcnt ${LANG_SIMPCHINESE} "textchs\ACDSee32.cnt" ; ●SM 開始選單/DT 桌面/QL 快速啟動,依照語言建立捷徑名稱 ; 因為想在桌面上,看到「中文」捷徑名稱的人,實在太多了。所以祇好做了。 ; link 後面當然都可以使用中文名稱。file 的部分,都是實體連結的檔案,當然不要使用中文名稱。 LangString shtcut_SMlink01 ${LANG_ENGLISH} "$SMPROGRAMS\${MUI_PRODUCT}\Start ${MUI_PRODUCT}.lnk" ; LangString shtcut_SMlink02 ${LANG_ENGLISH} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink03 ${LANG_ENGLISH} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink04 ${LANG_ENGLISH} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" LangString shtcut_SMlink20 ${LANG_ENGLISH} "$SMPROGRAMS\${MUI_PRODUCT}\Uninstall ${MUI_PRODUCT}.lnk" LangString shtcut_DTlink01 ${LANG_ENGLISH} "$DESKTOP\${MUI_PRODUCT}.lnk" ; LangString shtcut_DTlink02 ${LANG_ENGLISH} "$DESKTOP\BlahBlahxxxx.lnk" LangString shtcut_QLlink01 ${LANG_ENGLISH} "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" LangString shtcut_SMfile01 ${LANG_ENGLISH} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_SMfile02 ${LANG_ENGLISH} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile03 ${LANG_ENGLISH} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile04 ${LANG_ENGLISH} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_SMfile20 ${LANG_ENGLISH} "$INSTDIR\Uninstall.exe" LangString shtcut_DTfile01 ${LANG_ENGLISH} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_DTfile02 ${LANG_ENGLISH} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_QLfile01 ${LANG_ENGLISH} "$INSTDIR\${PROGMAINEXE}" LangString shtcut_SMlink01 ${LANG_TRADCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\開始 ${MUI_PRODUCT}.lnk" ; LangString shtcut_SMlink02 ${LANG_TRADCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink03 ${LANG_TRADCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink04 ${LANG_TRADCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" LangString shtcut_SMlink20 ${LANG_TRADCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\解除安裝 ${MUI_PRODUCT}.lnk" LangString shtcut_DTlink01 ${LANG_TRADCHINESE} "$DESKTOP\${MUI_PRODUCT}.lnk" ; LangString shtcut_DTlink02 ${LANG_TRADCHINESE} "$DESKTOP\BlahBlahxxxx.lnk" LangString shtcut_QLlink01 ${LANG_TRADCHINESE} "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" LangString shtcut_SMfile01 ${LANG_TRADCHINESE} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_SMfile02 ${LANG_TRADCHINESE} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile03 ${LANG_TRADCHINESE} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile04 ${LANG_TRADCHINESE} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_SMfile20 ${LANG_TRADCHINESE} "$INSTDIR\Uninstall.exe" LangString shtcut_DTfile01 ${LANG_TRADCHINESE} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_DTfile02 ${LANG_TRADCHINESE} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_QLfile01 ${LANG_TRADCHINESE} "$INSTDIR\${PROGMAINEXE}" LangString shtcut_SMlink01 ${LANG_SIMPCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\羲宎 ${MUI_PRODUCT}.lnk" ; LangString shtcut_SMlink02 ${LANG_SIMPCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink03 ${LANG_SIMPCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" ; LangString shtcut_SMlink04 ${LANG_SIMPCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\BlahBlahxxxx.lnk" LangString shtcut_SMlink20 ${LANG_SIMPCHINESE} "$SMPROGRAMS\${MUI_PRODUCT}\賤壺假蚾 ${MUI_PRODUCT}.lnk" LangString shtcut_DTlink01 ${LANG_SIMPCHINESE} "$DESKTOP\${MUI_PRODUCT}.lnk" ; LangString shtcut_DTlink02 ${LANG_SIMPCHINESE} "$DESKTOP\BlahBlahxxxx.lnk" LangString shtcut_QLlink01 ${LANG_SIMPCHINESE} "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" LangString shtcut_SMfile01 ${LANG_SIMPCHINESE} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_SMfile02 ${LANG_SIMPCHINESE} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile03 ${LANG_SIMPCHINESE} "$INSTDIR\BlahBlahxxxx.exe" ; LangString shtcut_SMfile04 ${LANG_SIMPCHINESE} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_SMfile20 ${LANG_SIMPCHINESE} "$INSTDIR\Uninstall.exe" LangString shtcut_DTfile01 ${LANG_SIMPCHINESE} "$INSTDIR\${PROGMAINEXE}" ; LangString shtcut_DTfile02 ${LANG_SIMPCHINESE} "$INSTDIR\BlahBlahxxxx.exe" LangString shtcut_QLfile01 ${LANG_SIMPCHINESE} "$INSTDIR\${PROGMAINEXE}" ; ●安裝前後,對話方塊出現的字串。 ; LangString Str_Begin1 ${LANG_ENGLISH} "blah..." ; LangString Str_Begin1 ${LANG_TRADCHINESE} "blah..." ; LangString Str_Begin1 ${LANG_SIMPCHINESE} "blah..." ; LangString Str_Finish1 ${LANG_ENGLISH} "Do you want to install ${NAME} as a default mailer? It will execute MAPI installer." ; LangString Str_Finish1 ${LANG_TRADCHINESE} "你想要安裝 ${NAME} 做為預設信件程式嗎?將執行外部 MAPI 安裝程式。" ; LangString Str_Finish1 ${LANG_SIMPCHINESE} "斕砑猁假蚾 ${NAME} 酕峈蘇�珃宎�最唗鎘ˋ蔚堍俴俋窒 MAPI 假蚾最唗﹝" ; LangString Str_Finish2 ${LANG_ENGLISH} "Setup has been completed successfully . Press [Yes] to continue README file." "${README_ENU}" ; LangString Str_Finish2 ${LANG_TRADCHINESE} "安裝已成功地完成。按下 [Yes] 繼續讀取 README 檔案。" "${README_CHT}" ; LangString Str_Finish2 ${LANG_SIMPCHINESE} "假蚾眒傖髡華俇傖﹝偌狟 [Yes] 樟哿黍�� README 恅璃﹝" "${README_CHS}" ; ●安裝時的 Section LangStringUp desc_InstMin ${LANG_ENGLISH} "Minimum Installation" LangStringUp desc_InstStd ${LANG_ENGLISH} "Standard Installation" LangStringUp desc_InstFul ${LANG_ENGLISH} "Full Installation" LangStringUp desc_InstCHT ${LANG_ENGLISH} "TradChinese Optimal Installation" LangStringUp desc_InstCHS ${LANG_ENGLISH} "SimpChinese Optimal Installation" LangStringUp desc_InstENU ${LANG_ENGLISH} "English Optimal Installation" LangString S01 ${LANG_ENGLISH} "${MUI_PRODUCT} Main Prog" LangString S02 ${LANG_ENGLISH} "Reg as a default prog" LangString S11 ${LANG_ENGLISH} "Add icon to Start Menu" LangString S12 ${LANG_ENGLISH} "Add icon to Desktop" LangString S13 ${LANG_ENGLISH} "Add icon to QuickLaunch" LangString S14 ${LANG_ENGLISH} "Add function of mouse right-click" LangString S15 ${LANG_ENGLISH} "Create Uninstaller" LangString DESC_SecS01 ${LANG_ENGLISH} "Install ${MUI_PRODUCT} Main Prog. If this item not selected, it will be nothing to install." LangString DESC_SecS02 ${LANG_ENGLISH} "Write to system registry, to register ${MUI_PRODUCT} as a default prog. For the convenience of file association operation." LangString DESC_SecS11 ${LANG_ENGLISH} "Generally and periodically used program: we will use Start Menu to classify generally." LangString DESC_SecS12 ${LANG_ENGLISH} "Frequently used program: we suggest put their link to Desktop. Begin to work instantly,no need to Start Menu." LangString DESC_SecS13 ${LANG_ENGLISH} "Very frequently used program: we suggest put their link to QuickLaunch" LangString DESC_SecS14 ${LANG_ENGLISH} "Build the context menu and file association, more faster to access your files." LangString DESC_SecS15 ${LANG_ENGLISH} "If you would not want to keep use of this program, you need to build a Uninstaller." LangStringUp desc_InstMin ${LANG_TRADCHINESE} "最小安裝" LangStringUp desc_InstStd ${LANG_TRADCHINESE} "標準安裝" LangStringUp desc_InstFul ${LANG_TRADCHINESE} "完整安裝" LangStringUp desc_InstCHT ${LANG_TRADCHINESE} "繁體中文最適安裝" LangStringUp desc_InstCHS ${LANG_TRADCHINESE} "簡體中文最適安裝" LangStringUp desc_InstENU ${LANG_TRADCHINESE} "英文最適安裝" LangString S01 ${LANG_TRADCHINESE} "${MUI_PRODUCT} 主程式" LangString S02 ${LANG_TRADCHINESE} "註冊為預設程式" LangString S11 ${LANG_TRADCHINESE} "加入圖示到開始功能表" LangString S12 ${LANG_TRADCHINESE} "加入圖示到桌面" LangString S13 ${LANG_TRADCHINESE} "加入圖示到快速啟動" LangString S14 ${LANG_TRADCHINESE} "加入滑鼠右鍵功能" LangString S15 ${LANG_TRADCHINESE} "建立解除安裝程式" LangString DESC_SecS01 ${LANG_TRADCHINESE} "安裝 ${MUI_PRODUCT} 主程式。若這一項沒有選擇,就沒有程式可以安裝了。" LangString DESC_SecS02 ${LANG_TRADCHINESE} "寫入系統註冊表,註冊 ${MUI_PRODUCT} 為預設程式,以便檔案關聯順利運作。" LangString DESC_SecS11 ${LANG_TRADCHINESE} "一般與偶爾使用的程式:通常都會使用開始功能表來進行分類。" LangString DESC_SecS12 ${LANG_TRADCHINESE} "常用的程式:建議將其連結放在桌面,不必再到開始功能表尋找,馬上就可以開始工作。" LangString DESC_SecS13 ${LANG_TRADCHINESE} "極常使用的程式:建議放在快速啟動。" LangString DESC_SecS14 ${LANG_TRADCHINESE} "建立滑鼠右鍵的系絡選單與檔案關聯,更快速的存取你的檔案。" LangString DESC_SecS15 ${LANG_TRADCHINESE} "萬一日後不想繼續使用此程式時,要預先建立解除安裝程式。" LangStringUp desc_InstMin ${LANG_SIMPCHINESE} "郔苤假蚾" LangStringUp desc_InstStd ${LANG_SIMPCHINESE} "梓袧假蚾" LangStringUp desc_InstFul ${LANG_SIMPCHINESE} "俇淕假蚾" LangStringUp desc_InstCHT ${LANG_SIMPCHINESE} "楛极笢恅郔巠假蚾" LangStringUp desc_InstCHS ${LANG_SIMPCHINESE} "潠极笢恅郔巠假蚾" LangStringUp desc_InstENU ${LANG_SIMPCHINESE} "荎恅郔巠假蚾" LangString S01 ${LANG_SIMPCHINESE} "${MUI_PRODUCT} 翋最唗" LangString S02 ${LANG_SIMPCHINESE} "蛁聊峈蘇�炡昐�" LangString S11 ${LANG_SIMPCHINESE} "氝樓芞梓善羲宎粕等" LangString S12 ${LANG_SIMPCHINESE} "氝樓芞梓善袤醱" LangString S13 ${LANG_SIMPCHINESE} "氝樓芞梓善辦厒ゐ雄" LangString S14 ${LANG_SIMPCHINESE} "氝樓扷梓衵瑩髡夔" LangString S15 ${LANG_SIMPCHINESE} "斐膘賤壺假蚾最唗" LangString DESC_SecS01 ${LANG_SIMPCHINESE} "假蚾 ${MUI_PRODUCT} 翋最唗﹝�譭瑲銨鎃棋▲見狡芤閨迣昐翾奿埶終偭芊�" LangString DESC_SecS02 ${LANG_SIMPCHINESE} "迡�輴腴啻3嵿瞨盃3� ${MUI_PRODUCT} 峈蘇�炡昐礗皆埜蓗躁�壽薊佼瞳堍釬﹝" LangString DESC_SecS11 ${LANG_SIMPCHINESE} "都寞迵髒嫌妏蚚腔最唗ㄩ籵都飲頗妏蚚羲宎粕等懂輛俴煦濬﹝" LangString DESC_SecS12 ${LANG_SIMPCHINESE} "都蚚腔最唗ㄩ膘祜蔚む蟈諉溫婓袤醱ㄛ祥斛婬善羲宎粕等脤梑ㄛ鎮奻憩褫眕羲宎�恄鞢�" LangString DESC_SecS13 ${LANG_SIMPCHINESE} "憤都妏蚚腔最唗ㄩ膘祜溫婓辦厒ゐ雄﹝" LangString DESC_SecS14 ${LANG_SIMPCHINESE} "斐膘扷梓衵瑩腔炵釐粕等迵恅璃壽薊ㄛ載辦厒腔溼恀斕腔恅璃﹝" LangString DESC_SecS15 ${LANG_SIMPCHINESE} "勀珨�梣馦銨趧昐鑫墓繫佼昐藡悵皆肴反�斐膘賤壺假蚾最唗﹝" ;======================================================= ; ■9.解除安裝程式,真正的動作 ;======================================================= ; 這個部分,和前面的建立 CreateUninst ,意味不一樣喔。 ; 前者: 把 uninstaller 程式做出來。 ; 後者: 指定這個程式,要刪除那些檔案/目錄/註冊表項。 ;============================== ; 9.1 節段開始 Section "Uninstall" ; 要移除掉解除安裝程式 Delete "$INSTDIR\Uninstall.exe" ; 移除檔案 RMDir /r "$INSTDIR" ; 移除開始功能表、桌面、快遞啟動等捷徑。 Delete "$SMPROGRAMS\${MUI_PRODUCT}\*.*" Delete "$DESKTOP\${MUI_PRODUCT}.lnk" Delete "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" RMDir /r "$SMPROGRAMS\${MUI_PRODUCT}" ; 移除使用過的目錄。 RMDir /r "$INSTDIR" ; 刪除 windows 註冊表之中的安裝路徑 DeleteRegKey HKLM SOFTWARE\${MUI_PRODUCT} ; 刪除 windows 註冊表的解除安裝 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" ; 刪除 uninstaller 使用的語言名稱 (* 進階) DeleteRegValue HKLM "Software\${MUI_PRODUCT}" "Installer Language" ;顯示「完成」標頭 (* 進階) ; !insertmacro MUI_UNFINISHHEADER SectionEnd ;============================== ; 9.2 解除安裝程式,初始化函式動作 (* 進階) Function un.onInit ;從註冊表取得語言名稱 ReadRegStr $LANGUAGE HKLM "Software\${MUI_PRODUCT}" "Installer Language" FunctionEnd ;======================================================= ; ■eof 檔案結尾