正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- ;=======================================================
- ; ■1.定义变数、安装目录、输出档案、图示
- ;=======================================================
- ; 只要在这里写好,其他的都按照定义的变数下去跑,就省力多了。
- ;
- ;==============================
- ; 1.1 版本号码/名称
- ;
- !define VER_1 4 ;软体版本号码 1 ,如 Eudora 4.3.1.2 四位版本号码
- !define VER_2 05 ;软体版本号码 2
- ;!define VER_3 xxx ;软体版本号码 3 (* 进阶)
- ;!define VER_4 yyy ;软体版本号码 4 (* 进阶)
- ;!define VER_R zzz ;中文化同版本第几更版 (* 进阶)
- !define MUI_PRODUCT "MDaemon" ;程式名称 (可使用大小写)
- !define PROGFNHEADER "mdaemon" ;中文化档案名称的主要部分 (全部小写)
- !define PROGMAINEXE "mdaemon.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:\MDaemon"
- ;==============================
- ; 1.4 版权影像
- ;
- ; 只需要一个就够 (一定要 bmp 格式),第二个是拿来花俏用的。
- ; 可以只使用一个,或完全不使用。
- !define SPLASH1 "mdaeomon4_cht.bmp"
- !define SPLASH2 "mdaeomon4_chs.bmp"
- ;==============================
- ; 1.5 安装程式型态
- ;
- ; 中文化/直接安装版/还是补缀补丁?安装时出现在 caption 部分。
- ; 解除安装时,也会出现在注册表。
- !define PATCHTYPE_ENU "(CN+TW) localized"
- !define PATCHTYPE_CHT "(CN+TW) 中文化"
- !define PATCHTYPE_CHS "(CN+TW) 笢恅赵"
- ;=======================================================
- ; ■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"
- ;==============================
- ; 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 "mdaemon4.ico"
- !define MUI_UNICON "mdaemon4.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_COMPONENTSPAGE ;元件页面
- !define MUI_DIRECTORYPAGE ;目录选择
- !define MUI_ABORTWARNING ;中止警告
- !define MUI_UNINSTALLER ;解除安装程式
- !define MUI_UNCONFIRMPAGE ;不做确认页面
- ; !define MUI_STARTMENUPAGE ;选择开始功能表
- !define MUI_FINISHPAGE ;出现完成页面,执行程式和读我。
- !define MUI_FINISHPAGE_RUN "$INSTDIR\app\${PROGMAINEXE}"
- !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\${README_CHT}"
- ; !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\$(README)"
- ; LangString README ${LANG_ENGLISH} "${README_ENU}"
- ; LangString README ${LANG_TRADCHINESE} "${README_CHT}"
- ; LangString README ${LANG_SIMPCHINESE} "${README_CHS}"
- ; 上面这段 LangString 并不能套用在 SHOWREADME ,真奇怪。
- !insertmacro MUI_SYSTEM ;使用者介面系统
- ;==============================
- ; 3.4 各国语言
- !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 显示版权影像
- ;
- ; 旧版可使用 magiclime 做淡入淡出。不过这一版没了,改成
- ; advsplash ,外挂方式。解压缩到临时目录,显示 splash ,然后删掉。
- ; 注意: nsis 2.0a0 有 magicsplash 档案。不过 2.0b1 居然又不见了。
- SetOutPath $TEMP
- File /oname=splash1.bmp ${SPLASH1}
- File /oname=splash2.bmp ${SPLASH2}
- ; File /oname=spltmp.exe "${NSISDIR}\bin\magiclime.exe"
- ; ExecWait '"$TEMP\spltmp.exe" splash1.bmp'
- ; ExecWait '"$TEMP\spltmp.exe" splash2.bmp'
- advsplash::show 1000 600 400 -1 $TEMP\splash1
- advsplash::show 1000 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 语言 (* 进阶)
- ;
- ; 塞了 ENU/CHT/CHS 三个语言。你要 18 个语言全塞,也不反对。大小大概增加 20 kb 左右。
- ; 如果不是多语言中文化安装,你可以全部 remark 掉。
- !insertmacro MUI_LANGDLL_PUSH "English"
- !insertmacro MUI_LANGDLL_PUSH "SimpChinese"
- !insertmacro MUI_LANGDLL_PUSH "TradChinese"
- Push 3F ;3 = 语言数目, F = 变更字型
- LangDLL::LangDialog "Installer Language" "Please select a language."
- ; 上面这一句,不要中文化。除非你想让老外看到乱码。
- Pop $LANGUAGE
- StrCmp $LANGUAGE "cancel" 0 +2
- Abort
- ;==============================
- ; 4.4 安装前置动作 (修改注册表) (* 进阶)
- ;
- ; 视你需要,可以偷偷做一些动作。
- ; DeleteRegKey HKLM "SOFTWARE\Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32"
- ; DeleteRegKey HKLM "SOFTWARE\Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}"
- ;==============================
- ; 4.5 寻找旧版已安装的目录。 (* 进阶)
- ;
- ; 如果 AppPath 读出的尾端有 \ 符号,请不要直接使用于 INSTDIR 指令,以免发生错误。
- ; ReadRegStr $AppPath HKLM "SOFTWARE\Alt-N Technologies\MDaemon" "AppPath"
- FunctionEnd
- ;=======================================================
- ; ■5.安装程式,安装完成后置动作 (* 进阶)
- ;=======================================================
- ; 如果不需要,你可以全部 remark。
- ;==============================
- ; 5.1 函式定义开始
- Function .onInstSuccess
- ;==============================
- ; 5.2 安装完成后,执行 ExecShell
- ;
- ; 视个人需要而定,我只用在 Eudora 安装而已。
- ; ;------------------------------------------
- ; !macro MUI_INSTSUCCESS1 LANGID TEXT
- ;
- ; StrCmp $LANGUAGE ${LANGID} "" +3
- ; MessageBox MB_YESNO|MB_ICONQUESTION "${TEXT}" IDNO Nomapi
- ; ExecShell open '$INSTDIR\SWMAPI.EXE'
- ; !macroend
- ; ;------------------------------------------;
- ; 下列是 ENU/CHT/CHS 三个语言的动作。
- ;
- ; !insertmacro MUI_INSTSUCCESS1 1033 "Do you want to install ${NAME} as a default mailer? It will excute MAPI installer."
- ; !insertmacro MUI_INSTSUCCESS1 1028 "你想要安装 ${NAME} 做为预设信件程式吗?将执行外部 MAPI 安装程式。"
- ; !insertmacro MUI_INSTSUCCESS1 2052 "斓砑猁假蚾 ${NAME} 酕峈苏?;蛔璃最唗镉ˋ蔚堍俴俋窒 MAPI 假蚾最唗﹝"
- ; Nomapi:
- ;==============================
- ; 5.3 安装后,要求使用者读取 README 档案
- ; ;------------------------------------------
- ; !macro MUI_INSTSUCCESS2 LANGID TEXT README
- ; StrCmp $LANGUAGE ${LANGID} "" +3
- ; MessageBox MB_YESNO|MB_ICONQUESTION "${TEXT}" IDNO NoReadme
- ; ExecShell open notepad '$INSTDIR\${README}'
- ; !macroend
- ; ;------------------------------------------
- ; 下列是 ENU/CHT/CHS 三个语言的动作。
- ; !insertmacro MUI_INSTSUCCESS2 1033 "Setup has been completed successfully . Press [Yes] to continue README file." "${README_ENU}"
- ; !insertmacro MUI_INSTSUCCESS2 1028 "安装已成功地完成。按下 [Yes] 继续读取 README 档案。" "${README_CHT}"
- ; !insertmacro MUI_INSTSUCCESS2 2052 "假蚾眒伧髡华俇伧﹝偌狟 [Yes] 樟哿黍?; README 恅璃﹝" "${README_CHS}"
- ; NoReadme:
- ;==============================
- ; 5.4 函式定义结束
- FunctionEnd
- ;=======================================================
- ; ■6.安装的所有档案
- ;=======================================================
- ;==============================
- ; 6.1 安装类型
- ; 两种应该很够了。
- InstType "Minimum"
- InstType "Standard"
- SetOverwrite on
- ;==============================
- ; 6.3 安装的各个节段
- Section "MDaemon" SecMDaemon
- SectionIn 1 2
- ; 6.3.1 中文化的读我
- ; 通常塞在安装的主目录。
- SetOutPath $INSTDIR
- File "${README_CHT}"
- File "${README_CHS}"
- ; 6.3.2 中文化的程式档案
- ; 通常不使用 *.* 型态,而个别指定,以免包装错误。
- ; 常常是 *.DLL *.EXE *.AX 等类型。我都把这类放在 cht 为首的工作目录。
- SetOutPath $INSTDIR\app
- File "cht\AccountPrune.exe"
- File "cht\CFILTER.EXE"
- File "cht\IMPORTNT.EXE"
- File "cht\ListPrune.exe"
- File "cht\MD3CONV.EXE"
- File "cht\MDAEMON.EXE"
- File "cht\MDCONFIG.EXE"
- File "cht\MDLAUNCH.EXE"
- File "cht\MDSTATS.EXE"
- File "cht\MDUSER.DLL"
- File "cht\MDUserLdap.dll"
- File "cht\MigrateUsers.exe"
- File "cht\ROBOEX32.DLL"
- File "cht\UninstallSurvey.exe"
- File "cht\UNWISE.EXE"
- File "cht\WCIMPORT.EXE"
- File "cht\XCEEDZIP.DLL"
- ; 6.3.3 中文化的文字档案
- ;
- ; 通常是 (*.cnt, *.txt *.dat *.ini) 类型。
- ; 无语言区分者,仍放在 pack 为首的工作目录。
- ; 有语言区分者,放在 text/cht 与 text/chs 为首的工作目录。
- ; 6.3.3.1 如果有旧版,会有一些“一定”要删除的旧版档案。然后再由安装程式补上新版。
- SetOutPath $INSTDIR\app
- Delete "$INSTDIR\app\HELP.DAT"
- Delete "$INSTDIR\app\MDAEMON.CNT"
- Delete "$INSTDIR\app\acctinfo.dat"
- File "pack405\app\CFILTER.INI"
- File "pack405\app\MDSTATS.INI"
- ; 6.3.3.2 如果有旧版,也会有一些“不能删除”的旧版档案。
- ; 这段是使用在 UltraEdit ,把 windows 目录的 INI 移动过来。MDaemon 不用这一段。
- ;
- ; IfFileExists "$WINDIR\UEdit32.ini" DO1 DO2
- ; DO1: ;把 $WINDIR 的移动到安装目录
- ; Rename "$WINDIR\UEdit32.ini" "$INSTDIR\Uedit32.ini"
- ; DO2: ;如果没有,则写入一个假的 INI,以修正 HTMLTIDY 的功能。如果安装目录已有,则不盖掉。
- SetOverwrite off ;停用强制覆写
- File "pack405\app\MDAEMON.INI"
- SetOverwrite on ;判断完毕之后,启用强制覆写
- ; 6.3.3.3 搞一些好玩的,比如塞入自动使软体注册的资料
- ; 正式版本就不要这样做,以免太嚣张,反而不好。
- ;
- ; WriteINIStr "$INSTDIR\app\mdaemon.ini" "Registration" "Name" "My_reg_Name"
- ; WriteINIStr "$INSTDIR\app\mdaemon.ini" "Registration" "Company" "My_reg_Company"
- ; WriteINIStr "$INSTDIR\app\mdaemon.ini" "Registration" "4XKey" "GDPFFMF-QAWLYFJ-XQDIYAO"
- ; 6.3.3.4 补上新版档案
- ;
- ; 依照各种语言,自动执行,分配正确的档案。使用者不必再选择。
- ; 先写一个巨集,自动判断作业系统语言。 1033 enu, 1028 cht, 2052 chs
- ;------------------------------------------
- !macro MUI_COPYTEXTFILE LANGID ACTION_COPYTEXTFILE
- StrCmp $LANGUAGE ${LANGID} "" +3
- ${ACTION_COPYTEXTFILE}
- !macroend
- ; !insertmacro MUI_COPYTEXTFILE 1033 'File "text405\enu\Help.dat"'
- ; !insertmacro MUI_COPYTEXTFILE 1033 'File "text405\enu\MDaemon.cnt"'
- ;
- ; 英文的不动,只做为对照组。注意单引号和双引号。
- ; 这种脚本写法其实蛮笨的,应该有更好的方法。
- !insertmacro MUI_COPYTEXTFILE 1028 'File "text405\cht\Help.dat"'
- !insertmacro MUI_COPYTEXTFILE 1028 'File "text405\cht\MDaemon.cnt"'
- !insertmacro MUI_COPYTEXTFILE 2052 'File "text405\chs\Help.dat"'
- !insertmacro MUI_COPYTEXTFILE 2052 'File "text405\chs\MDaemon.cnt"'
- ; 6.3.4 非中文化档案 (不用修改的部分)
- ; 可使用 *.* 这种型态。 我都把这类放在 pack 为首的工作目录。
- SetOutPath $INSTDIR\app
- File "pack405\app\AccountPrune.txt"
- File "pack405\app\bwcc32.dll"
- File "pack405\app\ADDUSER.SMP"
- File "pack405\app\CFAPP.ICO"
- File "pack405\app\CFILTER.DLL"
- File "pack405\app\DEDUPE.EXE"
- File "pack405\app\DIRREORG.EXE"
- File "pack405\app\DomainPOP.dsc"
- File "pack405\app\EDITUSER.SMP"
- File "pack405\app\FILELIST.DAT"
- File "pack405\app\INETWH32.DLL"
- File "pack405\app\INSTALL.LOG"
- File "pack405\app\MailboxSize.exe"
- File "pack405\app\MailboxSize.txt"
- File "pack405\app\MDAEMON.DSC"
- File "pack405\app\MDAEMON.HLP"
- File "pack405\app\NTUTIL.DLL"
- File "pack405\app\ULREPAIR.EXE"
- File "pack405\app\WISECHCK.EXE"
- File "pack405\app\WISEUPDT.EXE"
- File "pack405\app\WP2WC.EXE"
- File "pack405\app\XCDSFX32.BIN"
- SetOutPath $INSTDIR\cgi
- File "pack405\cgi\*.*"
- SectionEnd
- Section "MDaemon Docs" SecMDaemonDocs
- SectionIn 2
- SetOutPath $INSTDIR\docs
- File "pack405\docs\*.*"
- SetOutPath $INSTDIR\docs\api
- File "pack405\docs\api\*.*"
- SectionEnd
- Section "World Client" SecWorldClient
- SectionIn 2
- SetOutPath $INSTDIR\wcstandard
- File "pack405\wcstandard\*.*"
- ; 底下为需要中文化的部分
- File "cht\wcstandard\WCStandard.exe"
- File "cht\wcstandard\WorldClient.dll"
- File "cht\wcstandard\XceedZip.dll"
- SetOutPath $INSTDIR\wcstandard\html
- File "pack405\wcstandard\html\*.*"
- SetOutPath $INSTDIR\wcstandard\html\help
- File "pack405\wcstandard\html\help\*.*"
- SetOutPath $INSTDIR\wcstandard\templates
- File "pack405\wcstandard\templates\*.*"
- SectionEnd
- Section "Web Config" SecWebConfig
- SectionIn 2
- SetOutPath $INSTDIR\webconfig
- File "pack405\webconfig\*.*"
- ; 底下为需要中文化的部分
- File "cht\webconfig\WebConfig.exe"
- SetOutPath $INSTDIR\webconfig\html
- File "pack405\webconfig\html\*.*"
- SetOutPath $INSTDIR\webconfig\templates
- File "pack405\webconfig\templates\*.*"
- SectionEnd
- ;==============================
- ; 6.4 加入到“开始选单”
- ;
- Section "Add shortcut to Start Menu" SecStartMenu
- SectionIn 1 2
- SetOutPath "$INSTDIR"
- CreateDirectory "$SMPROGRAMS\${MUI_PRODUCT}"
- ; 有时候 CreateShortCut 会出问题,不如用这个动作
- ; 直接强制 installer 建立目录。这样比较贱。
- CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\MDaemon.lnk" \
- "$INSTDIR\app\mdaemon.exe"
- CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\MDConfig.lnk" \
- "$INSTDIR\app\MDConfig.exe"
- CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\Uninstall ${MUI_PRODUCT}.lnk" \
- "$INSTDIR\Uninstall.exe"
- SectionEnd
- ;==============================
- ; 6.5 加入到“快速启动”
- ;
- ; 不是每个程式都要加入“快速启动”列,视需要而定。
- ;
- ;Section "Add shortcut to Quicklaunch" SecQuicklaunch
- ; SectionIn 1 2
- ; CreateShortCut "$QUICKLAUNCH\${MUI_PRODUCT}.lnk" \
- ; "$INSTDIR\app\${PROGMAINEXE}"
- ;SectionEnd
- ;==============================
- ; 6.6 加入到“桌面”
- ;
- Section "Add shortcut to Desktop" SecDesktop
- SectionIn 1 2
- CreateShortCut "$DESKTOP\${MUI_PRODUCT}.lnk" \
- "$INSTDIR\app\${PROGMAINEXE}"
- SectionEnd
- ;==============================
- ; 6.6 加入到“滑鼠右键” (* 进阶)
- ;
- ; 只用在 UltraEdit
- ;Section "Add to Right mouse button" SecRightMouse
- ; SectionIn 1 2
- ; 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
- SectionIn 1 2
- ;==============================
- ; 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\app\${PROGMAINEXE}"
- ; "DisplayIcon" "$INSTDIR\${PROGMAINEXE}" ; 一般使用这个型态。只有 MDaemon 例外。
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "DisplayName" "${MUI_PRODUCT} ${VER_1}.${VER_2} ${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" "http://www.altn.com/Products/Default.asp?product_id=MDaemon"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "Contact" "kiiali@cpatch.org"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "HelpLink" "http://www.altn.com/Support/Default.asp?product_id=MDaemon"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "URLUpdateInfo" "http://www.altn.com/Download/Default.asp"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "Readme" "$INSTDIR\${README_CHT}"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "Comments" "Chinese (P.R.C.) and Chinese (Taiwan) ${MUI_PRODUCT} localized version by Kii Ali, for Mailer Daemon with win32 plateform."
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" \
- "Publisher" "Copyright (c) 2002, Alt-N Technology."
- ;==============================
- ; 7.4 依照各种语言,自动写入不同的注册表值 (* 进阶)
- ; 包括 ENU/CHT/CHS
- ;------------------------------------------
- !macro MUI_REGMUI1 LANGID TEXT
- StrCmp $LANGUAGE ${LANGID} "" +3
- ${TEXT}
- !macroend
- !insertmacro MUI_REGMUI1 1033 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Comments" "Chinese (P.R.C.) and Chinese (Taiwan) ${MUI_PRODUCT} localized version by Kii Ali, for Mailer Daemon with win32 plateform." '
- !insertmacro MUI_REGMUI1 1028 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Comments" "中文 (中国大陆) 与 中文 (台湾) ${MUI_PRODUCT} 本地化版本,由 Kii Ali 制作,用于 win32 平台架设个人或公司的信件伺服器。" '
- !insertmacro MUI_REGMUI1 2052 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Comments" "笢恅 (笢弊湮翻) 迵 笢恅 (怢俜) ${MUI_PRODUCT} 挂华赵唳挂ㄛ蚕 Kii Ali 秶钎ㄛ蚚衾 win32 Ⅸ;怢殇扢跺?;么鼠侗腔蛔璃督昢け;﹝" '
- ;==============================
- ; 7.5 依照各种语言,自动写入不同的注册表值 (* 进阶)
- ; 包括 ENU/CHT/CHS
- ;------------------------------------------
- !macro MUI_REGMUI2 LANGID TEXT
- StrCmp $LANGUAGE ${LANGID} "" +3
- ${TEXT}
- !macroend
- !insertmacro MUI_REGMUI2 1033 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Publisher" "Copyright (c) 2002, Alt-N Technology." '
- !insertmacro MUI_REGMUI2 1028 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Publisher" "版权所有 (c) 2002, Alt-N Technology. " '
- !insertmacro MUI_REGMUI2 2052 'WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "Publisher" "唳?;垀衄 (c) 2002, Alt-N Technology." '
- ;------------------------------------------
- ;==============================
- ; 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 ${SecMDaemon} $(DESC_SecMDaemon)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecMDaemonDocs} $(DESC_SecMDaemonDocs)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecWorldClient} $(DESC_SecWorldClient)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecWebConfig} $(DESC_SecWebConfig)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} $(DESC_SecStartMenu)
- ; !insertmacro MUI_DESCRIPTION_TEXT ${SecQuicklaunch} $(DESC_SecQuicklaunch)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(DESC_SecDesktop)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecCreateUninst} $(DESC_SecCreateUninst)
- ; !insertmacro MUI_DESCRIPTION_TEXT ${SecRightMouse} $(DESC_SecRightMouse)
- !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
- ;
- ;==============================
- ; 8.2 每个节段的描述文字,直接使用各国语言 (* 进阶)
- ;
- ; 这是让滑鼠移动到安装项目上时,自动出现的描述功能。
- ; 我使用 ENU/CHT/CHS 三个语言。如果嫌麻烦,可以只使用一个语言,甚至不使用描述。
- LangString DESC_SecMDaemon ${LANG_ENGLISH} "MDaemon Server Main Prog"
- LangString DESC_SecMDaemonDocs ${LANG_ENGLISH} "Related Documents, manuals"
- LangString DESC_SecWorldClient ${LANG_ENGLISH} "Server: reading your emails on browser"
- LangString DESC_SecWebConfig ${LANG_ENGLISH} "config server on browser"
- LangString DESC_SecStartMenu ${LANG_ENGLISH} "Add icon to Start Menu"
- LangString DESC_SecQuicklaunch ${LANG_ENGLISH} "Add icon to QuickLaunch"
- LangString DESC_SecDesktop ${LANG_ENGLISH} "Add icon to Desktop"
- LangString DESC_SecRightMouse ${LANG_ENGLISH} "Add function of mouse right-click"
- LangString DESC_SecCreateUninst ${LANG_ENGLISH} "Create Uninstaller"
- LangString DESC_SecMDaemon ${LANG_TRADCHINESE} "MDaemon 伺服器主程式"
- LangString DESC_SecMDaemonDocs ${LANG_TRADCHINESE} "相关的文件、手册"
- LangString DESC_SecWorldClient ${LANG_TRADCHINESE} "浏览器网页读取信件的伺服器"
- LangString DESC_SecWebConfig ${LANG_TRADCHINESE} "在浏览器组态伺服器"
- LangString DESC_SecStartMenu ${LANG_TRADCHINESE} "加入图示到开始功能表"
- LangString DESC_SecQuicklaunch ${LANG_TRADCHINESE} "加入图示到快速启动列"
- LangString DESC_SecDesktop ${LANG_TRADCHINESE} "加入图示到桌面"
- LangString DESC_SecRightMouse ${LANG_TRADCHINESE} "加入滑鼠右键功能"
- LangString DESC_SecCreateUninst ${LANG_TRADCHINESE} "建立解除安装程式"
- LangString DESC_SecMDaemon ${LANG_SIMPCHINESE} "MDaemon 督昢け;翋最唗"
- LangString DESC_SecMDaemonDocs ${LANG_SIMPCHINESE} "眈寿腔恅璃﹜忒聊"
- LangString DESC_SecWorldClient ${LANG_SIMPCHINESE} "銡拟け;厍珜黍?;蛔璃腔督昢け;"
- LangString DESC_SecWebConfig ${LANG_SIMPCHINESE} "婓銡拟け;餍离督昢け;"
- LangString DESC_SecStartMenu ${LANG_SIMPCHINESE} "氖楼芞梓善※羲宎§粕等"
- LangString DESC_SecQuicklaunch ${LANG_SIMPCHINESE} "氖楼芞梓善办厒ぎ;雄蹈"
- LangString DESC_SecDesktop ${LANG_SIMPCHINESE} "氖楼芞梓善袤拨"
- LangString DESC_SecRightMouse ${LANG_SIMPCHINESE} "氖楼扷梓衵莹髡夔"
- LangString DESC_SecCreateUninst ${LANG_SIMPCHINESE} "斐膘贱壶假蚾最唗"
- ;=======================================================
- ; ■9.解除安装程式,真正的动作
- ;=======================================================
- ; 这个部分,和前面的建立 CreateUninst ,意味不一样喔。
- ; 前者: 把 uninstaller 程式做出来。
- ; 后者: 指定这个程式,要删除那些档案/目录/注册表项。
- ;==============================
- ; 9.1 节段开始
- Section "Uninstall"
- ; 要移除掉解除安装程式
- Delete "$INSTDIR\Uninstall.exe"
- ; 移除档案
- Delete "$INSTDIR\App\*.*"
- Delete "$INSTDIR\Logs\*.*"
- Delete "$INSTDIR\docs\api\CreateUser\*.*"
- Delete "$INSTDIR\docs\api\IterateUsers\*.*"
- Delete "$INSTDIR\docs\api\Sample COM\MDUserEdit\*.*"
- Delete "$INSTDIR\docs\api\Sample COM\*.*"
- Delete "$INSTDIR\docs\api\*.*"
- Delete "$INSTDIR\docs\*.*"
- Delete "$INSTDIR\cgi\*.*"
- Delete "$INSTDIR\ARCHIVES\*.*"
- Delete "$INSTDIR\BACKUP\*.*"
- Delete "$INSTDIR\BADMSGS\*.*"
- Delete "$INSTDIR\CFILTER\*.*"
- Delete "$INSTDIR\DIGESTS\*.*"
- Delete "$INSTDIR\GATEWAYS\*.*"
- Delete "$INSTDIR\LOCALQ\LNDOMAIN\*.*"
- Delete "$INSTDIR\LOCALQ\*.*"
- Delete "$INSTDIR\LOGS\*.*"
- Delete "$INSTDIR\PUBLIC~1\*.*"
- Delete "$INSTDIR\RAWFILES\*.*"
- Delete "$INSTDIR\REMOTEQ\RETRY\*.*"
- Delete "$INSTDIR\REMOTEQ\*.*"
- Delete "$INSTDIR\SMTPIN\*.*"
- Delete "$INSTDIR\WCstandard\HTML\help\*.*"
- Delete "$INSTDIR\WCstandard\HTML\*.*"
- Delete "$INSTDIR\WCstandard\Temp\*.*"
- Delete "$INSTDIR\WCstandard\Templates\*.*"
- Delete "$INSTDIR\WCstandard\*.*"
- Delete "$INSTDIR\webconfig\HTML\*.*"
- Delete "$INSTDIR\webconfig\Temp\*.*"
- Delete "$INSTDIR\webconfig\Templates\*.*"
- Delete "$INSTDIR\webconfig\*.*"
- Delete "$INSTDIR\*.*"
- ; 移除开始功能表、桌面、快递启动等捷径。
- Delete "$SMPROGRAMS\${MUI_PRODUCT}\*.*"
- Delete "$DESKTOP\${MUI_PRODUCT}.lnk"
- Delete "$QUICKLAUNCH\${MUI_PRODUCT}.lnk"
- RMDir "$SMPROGRAMS\${MUI_PRODUCT}"
- ; 移除使用过的目录。
- RMDir "$INSTDIR\App"
- RMDir "$INSTDIR\Logs"
- RMDir "$INSTDIR\docs\api\CreateUser"
- RMDir "$INSTDIR\docs\api\IterateUsers"
- RMDir "$INSTDIR\docs\api\Sample COM\MDUserEdit"
- RMDir "$INSTDIR\docs\api\Sample COM"
- RMDir "$INSTDIR\docs\api"
- RMDir "$INSTDIR\docs"
- RMDir "$INSTDIR\cgi"
- RMDir "$INSTDIR\ARCHIVES"
- RMDir "$INSTDIR\BACKUP"
- RMDir "$INSTDIR\BADMSGS"
- RMDir "$INSTDIR\CFILTER"
- RMDir "$INSTDIR\DIGESTS"
- RMDir "$INSTDIR\GATEWAYS"
- RMDir "$INSTDIR\LOCALQ\LNDOMAIN"
- RMDir "$INSTDIR\LOCALQ"
- RMDir "$INSTDIR\LOGS"
- RMDir "$INSTDIR\PUBLIC~1"
- RMDir "$INSTDIR\RAWFILES"
- RMDir "$INSTDIR\REMOTEQ\RETRY"
- RMDir "$INSTDIR\REMOTEQ"
- RMDir "$INSTDIR\SMTPIN"
- RMDir "$INSTDIR\WCstandard\HTML\help"
- RMDir "$INSTDIR\WCstandard\HTML"
- RMDir "$INSTDIR\WCstandard\Temp"
- RMDir "$INSTDIR\WCstandard\Templates"
- RMDir "$INSTDIR\WCstandard"
- RMDir "$INSTDIR\webconfig\HTML"
- RMDir "$INSTDIR\webconfig\Temp"
- RMDir "$INSTDIR\webconfig\Templates"
- RMDir "$INSTDIR\webconfig"
- RMDir "$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
复制代码
|