nsis 学习笔记(2)

nsis 学习笔记(2)

  • 空间
 

  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk"

  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk"

  delete "$smprograms\裝箱大師企業版\裝箱大師企業版4.0.lnk"

  Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk"

  delete  "$desktop\裝箱大師企業版4.0.lnk"

  RMDir  "$INSTDIR"

  RMDir  "$SMPROGRAMS\裝箱大師企業版"

SetAutoClose tr

${endif}

sectionend

 

Function un.onInit

ReadRegStr $5 HKLM  software\LoadMaster "lang ge"

${if} $5 = 2052

  MessageBox MB_ICONQ STION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 装箱大师企业版 ,及其所有的组件?" IDYES goo

    Abort

${endif}

${if} $5 = 1028

  messagebox MB_ICONQ STION|mb_yesno|MB_DEFBUTTON2 "您確實要完全移除 裝箱大師企業版 ,及其所有的組件?" IDYES goo

  abort

${endif}

${if} $5 = 1033

  messagebox MB_ICONQ STION|mb_yesno|MB_DEFBUTTON2 "Are you sure you want to completely remove the software, and all its components ?" IDYES goo

  abort

  goo:

 

${endif}

FunctionEnd

Function un.onUninstS cess

  HideWindow

  ${if} $5 = 2052

  MessageBox MB_ICONINFORMATION|MB_OK "装箱大师企业版 已成功地从您的计算机移除。"

  ${endif}

  ${if} $5 = 1028

  messagebox MB_ICONINFORMATION|MB_OK "裝箱大師企業版 已成功地從您的計算機移除。"

  ${endif}

  ${if} $5 = 1033

  messagebox MB_ICONINFORMATION|MB_OK " The software have been s cessfully removed"

  ${endif}

 

FunctionEnd

 

 

让电脑定时关机

打开开始菜单,依次找到所有程序、附件、系统工具、任务计划。打开后,点击添加任务计划,“下一步”后,点击“浏览”,在窗口中找到C:\WINDOWS\system32\shutdown.exe并打开,然后根据自己的需要选择关机的频率(如果是每天同一个时间,就选择“每天”),然后“下一步”,选择自己需要的关机时间,接着“下一步”,输入用户密码进行确认(执行的用户一定要有密码,没有的话无法执行。没有密码可以到控制面板的用户帐户中为自己的账户设置一个密码),用户密码确认后,“下一步”,选中“在单击完成时,打开此任务的高级属性”,点击“完成”。最后在弹出的窗口的“任务”选项卡中的“运行”中输入

C:\WINDOWS\system32\shutdown.exe -s -t 60 -c “aa”

t后面是关机的倒计时时间,单位为秒;c后面的是关机时提示的内容,可以自己设定。注意:-s、-t、-c以及它们的内容之间都有一个空格,一定要有,不能少的!

楼主可以参考一下我的关机设定

我关机的是:

C:\WINDOWS\system32\shutdown.exe -s -t 60 -c “系统即将关机,请保存所有文件资料并退出程序!”

如果楼主在设定中出现如下提示:已创建新任务,但可能不能运行,因为无法设置帐号信息.指定的错误是:0x80041315:任务计划程序服务没有运行。那就说明你的任务计划服务在优化系统的时候被关了。你需要到控制面板的管理工具中打开“服务”,然后找到Task Scheduler,将它设置为“自动”,然后启用它。这样就一切OK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2008年10月2日ces

outfile "LoadMaster_Enterprise_Setup.exe"

!incl? "mui.nsh"

page license

page directory

page instfiles

loadlang gefile "D:\Program Files\NSIS\Contrib\Lang ge files\TradChinese.nlf"

loadlang gefile "D:\Program Files\NSIS\Contrib\Lang ge files\simpChinese.nlf"

loadlang gefile  "D:\Program Files\NSIS\Contrib\Lang ge files\English.nlf"

icon f:\t \LD.ico

 ;InstallButtonText 安装

InstallDir $programfiles\LoadMaster

InstallDirRegKey HKLM Software\loadmaster path

;LicenseData f:\cnLicence.txt

LicenseLangString ln ${LANG_SIMPCHINESE} f:\cnlicence.txt

LicenseLangString ln ${LANG_ENGLISH} f:\enlicence.txt

LicenseLangString ln ${LANG_TRADCHINESE} f:\tnlicence.txt

LicenseData $(ln)

;LicenseData /LANG=${LANG_ENGLISH} "f:\enlicence.txt"

;LicenseData /LANG=${LANG_SIMPCHINESE} "f:\cnlicense.txt"

;LicenseData /LANG=${LANG_TRADCHINESE} "f:\tnlicense.txt"

 ;InstallDirRegKey HKLM software\loadmaster 11

BrandingText    "http://www.zh ngxiang.com/"

section

strcpy $0 $lang ge

messagebox MB_OK "$0"

sectionend

Name $(Name)

LangString Name ${LANG_ENGLISH} "LoadMaster_Enterprise"

LangString Name ${LANG_SIMPCHINESE}  "装箱大师企业版"

;Section

;${switch}  $0

;${Case} 2052

;call sc

; ${Break}

; ${Case} 1033

;call ec

;  ${Break}

;  sectionend

;scn:

;caption  装箱大师企业版

;function ec

;caption LoadMaster_Enterprise

;functionend

 

;CompletedText       你已经完成装箱大师的安装

section

setoutpath $INSTDIR

file f:\t \pic.bmp

 WriteRegStr HKLM   software\loadmaster version "4.0"

 writeregstr HKLM   software\loadmaster path "$INSTDIR"

 

;messagebox MB_OK  ${LANG_TRADCHINESE}

;messagebox MB_OK ${lang_simpchinese}

;messagebox MB_OK  ${LANG_ENGLISH}

;messagebox MB_OK  $lang ge

sectionend

;CheckBitmap   f:\t \pic2.bmp

Section "MainSection"

  SetOutPath "$INSTDIR"

  CreateDirectory "$SMPROGRAMS\装箱大师企业版"

  CreateShortCut "$SMPROGRAMS\装箱大师企业版\装箱大师企业版4.0.lnk" "$INSTDIR\LoadMasterMain.exe"

  CreateShortCut "$DESKTOP\装箱大师企业版4.0.lnk" "$INSTDIR\LoadMasterMain.exe"

setoutpath  $INSTDIR

file /r  "f:\abc\*.*"

;file /r  "f:\workspace2\*.*"

;setoutpath  $INSTDIR

;ExecWait '"$INSTDIR\vcredist_x86.exe"'

SectionEnd

function .onInit

  Push ""

  Push ${LANG_ENGLISH}

  push "English"

  push ${LANG_TRADCHINESE}

  Push "Traditional Chinese"

  Push ${LANG_SIMPCHINESE}

  Push "Simplified Chinese"

 Push A ; A means auto count lang ges

         ; for the auto count to work the first empty push (Push "") must remain

  LangDLL::LangDialog "Installer Lang ge" "Please select a lang ge $\n 请选择语言 $\n 請選擇語言   "

  Pop $LANG GE

;  messagebox MB_OK "$LANG GE"

;  messagebox MB_OK "$A"

  StrCmp $LANG GE "cancel" 0 +2

    Abort

FunctionEnd

 

 

 

多国语言

!define VER_1 4 ;软体版本号码 1 ,如 E ora 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_PROD T "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_PROD T}"

;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_PROD T}"

;显示中文化标题,依 ENU/CHT/CHS 语言的不同。

CAPTION /LANG=1033 "${MUI_PROD T} ${MUI_VERSION} ${PATCHTYPE_ENU}"

CAPTION /LANG=1028 "${MUI_PROD T} ${MUI_VERSION} ${PATCHTYPE_CHT}"

CAPTION /LANG=2052 "${MUI_PROD T} ${MUI_VERSION} ${PATCHTYPE_CHS}"

;==========================

; 3.2 载入 Modern UI 系统

!incl? "${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_LANG GE "English"

!insertmacro MUI_LANG GE "SimpChinese"

!insertmacro MUI_LANG GE "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 Lang ge" "Please select a lang ge."

; 上面这一句,不要中文化。除非你想让老外看到乱码。

Pop $LANG GE

StrCmp $LANG GE "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 .onInstS cess

;==============================

; 5.2 安装完成后,执行 ExecShell

;

; 视个人需要而定,我只用在 E ora 安装而已。

; ;------------------------------------------

; !macro MUI_INSTS CESS1 LANGID TEXT

;

; StrCmp $LANG GE ${LANGID} "" +3

; MessageBox MB_YESNO|MB_ICONQ STION "${TEXT}" IDNO Nomapi

; ExecShell open '$INSTDIR\SWMAPI.EXE'

; !macroend

; ;------------------------------------------;

; 下列是 ENU/CHT/CHS 三个语言的动作。

;

; !insertmacro MUI_INSTS CESS1 1033 "Do you want to install ${NAME} as a default mailer? It will excute MAPI installer."

; !insertmacro MUI_INSTS CESS1 1028 "你想要安装 ${NAME} 做为预设信件程式吗?将执行外部 MAPI 安装程式。"

; !insertmacro MUI_INSTS CESS1 2052 "斓砑猁假蚾 ${NAME} 酕峈苏?;蛔璃最唗镉ˋ蔚堍俴俋窒 MAPI 假蚾最唗﹝"

; Nomapi:

;==============================

; 5.3 安装后,要求使用者读取 README 档案

; ;------------------------------------------

; !macro MUI_INSTS CESS2 LANGID TEXT README

; StrCmp $LANG GE ${LANGID} "" +3

; MessageBox MB_YESNO|MB_ICONQ STION "${TEXT}" IDNO NoReadme

; ExecShell open notepad '$INSTDIR\${README}'

; !macroend

; ;------------------------------------------

; 下列是 ENU/CHT/CHS 三个语言的动作。

; !insertmacro MUI_INSTS CESS2 1033 "Setup has been completed s cessfully . Press [Yes] to contin README file." "${README_ENU}"

; !insertmacro MUI_INSTS CESS2 1028 "安装已成功地完成。按下 [Yes] 继续读取 README 档案。" "${README_CHT}"

; !insertmacro MUI_INSTS CESS2 2052 "假蚾眒伧髡华俇伧﹝偌狟 [Yes] 樟哿黍?; README 恅璃﹝" "${README_CHS}"

; NoReadme:

;==============================

; 5.4 函式定义结束

FunctionEnd

;=======================================================

posted @ 2017-04-06 10:46  dfdqzp  阅读(398)  评论(0编辑  收藏  举报