nsis 学习笔记

nsis 学习笔记
转载自 https://www.cnblogs.com/dfdqzp/p/6672396.html

MessageBox MB_OK ‘$$0 is “$0”’ ;$0是某个值

${If} $0 == 'some val ’

MessageBox MB_OK '$$0 is some val ’

${ElseIf} $0 == 'some other val ’

MessageBox MB_OK '$$0 is some other val ’

${Else}

MessageBox MB_OK ‘$$0 is “$0”’

${EndIf}

logiclib 就是使用${IF} 语句 ${while}循环

IntOp

用户变量输出

outfile “xunh.exe”

!incl? “logiclib.nsh”

section

StrCpy $R1 0

${While} $R1 < 5

IntOp $R1 $R1 + 1

DetailPrint $R1

${EndWhile}

sectionend

page license ;许可协议页面

page components;安装的组件

page directory ;安装的目录

page instfiles ;选择的组件

uninstpage uninstconfirm ;卸载确认页面

uninstpage instfiles ;卸载

使用在段里的指令和安装程序属性指令不一样,他们在用户电脑运行环境里执行。这些指令可以解压文件读取和写入注册表、INI文件或普通文件,创建目录,创建快捷方式和更多功能。你可以在 指令 找到更多。

更多的基本用法说明 SetOutPath 告诉安装程序要把文件输出到哪里,和要解压哪些 文件。

回调函数就相当与一个调用函数,在安装程序一开始就调用而已

除了区段里的代码,还有一些在回调函数里的代码也会被执行,而且可能会在区段之前就执行了。比如 .onInit 回调函数就最先被执行,或者在页面显示过程中执行某些 页面回调函数。

outfile “xunh.exe”

!incl? “logiclib.nsh”

section

StrCpy $R1 0

${While} $R1 < 5

IntOp $R1 $R1 + 1

DetailPrint $R1

${EndWhile}

sectionend

Function .onInit

MessageBox MB_YESNO “即将安装我的程序,要继续吗?” IDYES gogogo

Abort

gogogo:

FunctionEnd

条件判断或执行代码循环可以使用 StrCmp, IntCmp, IfErrors, Goto 和其它来实现

使用MessageBoxes 或 DetailPrint 来显示变量内容,对所有变量使用 DumpState 插件来勾画总体大纲。

定义符号可以通过 !define 定义或使用 /D 命令行切换。这些定义符号可以用于条件编译

(通过 !ifdef 定义)或用于符号替换(一种格式简单的宏)。若要用它的值替换一个符号,

请使用 ${符号} (如果没有定义符号,那么不会产生转换)。这个转换为 first-come-first-served,

一个插件的调用像这样:

DLL名::函数名 “参数1” “参数2” “参数3”

InstallOptions 是一个受欢迎的插件,它允许你建立自定义的的页面,并与 NSIS 页面命令结合(看 页面)。 开始菜单插件 提供了一个可允许用户选择一个开始菜单目录的页面。这里还有许多不同用途的大量插件,查看 Docs 目录 里的帮助文件和例子。你也可以在线查找另外的插件: NSIS 维客.

引号的作用是是可以包含‘”他们可以是单引号、双引号或向后的单引号。

$INSTDIR 安装目录

$OUTDIR当前输出路径

$CMDLINE安装程序的命令行输入。

$LANG GE

下面这些都是常量

当前使用的语言标识符

$DESKTOP

Windows 桌面目录(通常为 C:\Windows\Desktop 但是运行时会检测)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

$EXEDIR

安装程序运行时的位置。(从技术上来说你可以修改此变量,但并不是一个好方法)。

$EXEFILE

安装程序的名称。

$EXEPATH

安装程序运行时的完整路径。

${NSISDIR}

包含 NSIS 安装目录的符号定义标记。常用于在你想调用在 NSIS 目录下的资源时,例如:图标、界面……

$SYSDIR

Windows 系统目录(通常为 C:\Windows\System 或 C:\WinNT\System32 但在运行时会检测)。

$STARTMENU

开始菜单目录(常用于添加一个开始菜单项,使用 CreateShortCut)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

$SMPROGRAMS

开始菜单程序目录(当你想定位 $STARTMENU\程序 时可以使用它)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

$SMSTARTUP

开始菜单程序/启动 目录。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

$ \r \n \t

要显示

必须使用下面的这个

$

转义,用来表示 $。

$\r

用来表示一个回车(\r)。

$\n

用来表示新的一行(\n)。

$\t

用来表示一个 Tab(\t)。

在引号里面加入 “ s e c 2 i d 的 名 称 : {sec2_id} 的名称: sec2id:\n$0” KaTeX parse error: Expected 'EOF', got '\n' at position 1: \̲n̲ ̲表示新的一行,且不显示,去掉将显示

每个内建的页面都有三个回调函数。一个预置函数、一个显示创建函数和一个离开函数

一个自定义的页面仅有两个回调函数,一个是必须的创建页面,另一个离开函数的作用就和内建页面的离开函数一样。

Page

custom [创建函数] [离开函数] [标题] [/ENABLECANCEL]

内置的页面类型 [预置函数] [显示函数] [离开函数] [/ENABLECANCEL]

要添加一个安装程序页面,请看上面关于相对于自定义页面的内建页面和关于回调函数的段。

内置的页面类型 :

license - 许可协议页面

components - 组件选择页面

directory - 安装目录选择页面

instfiles - 安装执行页面

uninstConfirm - 卸载确认页面

" "引号好像在NSIS里面没有用

StrCpy $0 1

MessageBox MB_OK ‘$0’ 就显示1

StrCpy $0 1

MessageBox MB_OK '$0 is $0 ’ 1 is 1

学会了调试

看到了

一般函数名以 . 开头的(例如 “.Whatever”)作为回调函数保留

也就是说:以.开头的是回调函数

SendMessage

窗口句柄 消息 第一个消息参数 第二个消息参数 [用户变量(返回值)] [/TIMEOUT=毫秒]

AddBrandingImage

(left|right|top|bottom) (宽|高)

AddBrandingImage left 0

AddBrandingImage right 50

AddBrandingImage top 20

AddBrandingImage bottom 35

AddBrandingImage left 100 5

安装程序界面 ,默认为0

页面选项

下面的这个列表列出了某个页面类型受什么样的命令影响。除非特别提及,否则这些命令都可以在 PageEx 区块内外使用。如果在一个 PageEx 区块内部使用那么他们仅仅对由 PageEx 设置的当前页面产生影响,否则他们将被设为其他所有页面的默认值。

许可页面

LicenseText

LicenseData

LicenseForceSelection

组件选择页面

ComponentText

目录选择页面

DirText

DirVar - 仅能在 PageEx 里使用。

DirVerify

卸载、安装记录页面

DetailsButtonText

CompletedText

卸载确认页面

DirVar - 仅能在 PageEx 里使用。

UninstallText

要设置页面标题请使用 Caption。

Icon

[路径]图标文件.ico

设置安装程序的图标。在图标文件里的每一个图标将会被包含在安装程序里

icon 功能强大,输出的EXE文件图标和安装时用的图标都是它

例如它:icon f:\t \LD.ico

$INSTDIR

安装目录

是安装变量

$PROGRAMFILES是安装常量

$lang ge 是变量,英语是1033

              繁体中文是1028

              简体中文是2052

WriteRegStr是写入注册表

解决了注册表的问题

WriteRegStr HKLM software\loadmaster version “4.0”

writeregstr HKLM software\loadmaster path “$INSTDIR”

$instdir 是变量,路径,解决。

呵呵,又测试成功

InstallDir $programfiles\Loadmaster1

InstallDirRegKey HKLM Software\loadmaster path

InstallDirRegKey 的作用是检测以前的安装路径

LoadLang geFile

语言文件.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”

如果用;loadlang gefile SimpChinese.nlf

loadlang gefile English.nlf

不知道缺少了哪个头文件

$LANG GE

当前使用的语言标识符,是一个变量。

使用loadlang gefile对于的语言 ID将会被定义(例如: ${LANG_ENGLISH} 将会被定义为 1033)。

检测语言,然后显示许可 功能已经完成

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

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

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

LicenseData $(ln)

Pop

用户变量(输出)

从堆栈里弹出一个字串到用户变量 $x。如果堆栈是空的,则会置一个错误标记。

Push 1

Push 2

Exch

Pop $0 # = 1

弹出 1赋值给变量 $0

学会了SWITCH 语句

outfile “switch.exe”

!incl? “LogicLib.nsh”

page instfiles

section

StrCpy $0 “2”

${switch} $0

${Case} 1

SetOutPath “$programfiles”

file “f:\t \pic.bmp”

${Break}

${Case} 2

SetOutPath “$programfiles”

file “f:\t \pic2.bmp”

${Break}

${EndSwitch}

问:如何运行一个安装文件 .reg

答:注:your.reg为文件名

ExecWait “regedit.exe /s your.reg”

问:如何运行一个安装文件 .inf

答:注:skins.inf 为文件名

ExecWait “RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall”

问:如何运行一个安装文件 .msi

答:注:soapsdk.msi为文件名

Execwait msiexec /qn /i "soapsdk.msi"

问: 关联文件图标后,图标没变化。

答: 刷新图标

‘System::Call shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)’

问:安装窗体变窄了。

答:

SetFont /LANG=2052 “tahoma” 8

原问题见帖子 http://www.dreams8.com/thread-3961-1-1.html

问:如何运行一个批处理文件 .bat

答:注:your.bat为文件名

ExecWait “your.bat”

不显示黑框框

nsExec::Exec"your.bat"

sectionend

ReadRegDWORD

用户变量(输出) 根键 子键 项

ReadRegStr

用户变量(输出) 根键 子键 项

WriteRegBin

根键 子键 项 值数据

该命令将会写一个区块的二进制数据到注册表

WriteRegStr

根键 子键 项 值

把字串写入注册表

EnumRegKey

用户变量(输出) 根键 子键 索引

ReadRegStr 相得益彰呵呵,一个读变量名,一个读里面的内容

ReadRegStr

用户变量(输出) 根键 子键 项

ClearErrors

清除错误位标记。

ExecShell " open" “http://nsis.sf.net/” 空了一格都运行错误

${NSD_CreateText} 0 13u 100% 12u 最后一个为高度

FindWindow

用户变量(窗口句柄输出) 窗口类名 [窗口标题] [父窗口句柄] [childafter]

GetDlgItem

用户变量(输出) 窗口句柄 控件ID

Section -AdditionalIcons

${switch} $lang ge

${Case} ${LANG_ENGLISH}

; WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

CreateDirectory “$SMPROGRAMS\LoadMaster”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Website.lnk" "INSTDIR${PROD T_NAME}.url”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Uninstall.lnk"…INSTDIR\uninst.exe”

${Break}

${Case} ${SIMPCHINESE}

; WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

CreateDirectory “$SMPROGRAMS\装箱大师企业版”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师官方网站…INSTDIR${PROD T_NAME}.url”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师企业版卸…INSTDIR\uninst.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师企业版帮…INSTDIR\Man l.chm”

${Break}

${Case} 1028

CreateDirectory “$SMPROGRAMS\裝箱大師企業版”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”

${Break}

${EndSwitch}

SectionEnd

InstallDir $programfiles\LoadMaster

InstallDirRegKey HKLM Software\loadmaster path

检测安装程序以前的路径,如果有,则安装在以前的目录下

SectionIn 如果指定 RO 作为一个参数,则该区段将被设为只读区段,

SetBrandingImage

[/IMGID=对话里的ID项] [/RESIZETOFIT] 位图.bmp

如果指定了 /RESIZETOFIT 则图像会自动改变尺寸到图像控件的大小。

Page license licenseImage

Function licenseImage

PAGE还可以这样用

delete $SMPROGRAMS\LoadMaster

删除不了,下面的这个可以

RMDir “$SMPROGRAMS\LoadMaster”

SetAutoClose tr 自动关闭界面,

如自动关闭卸载界面

在section unistall

delete …

setautoclose

sentionend

/nounload的作用

当插件命令执行时 NSIS 将会解压所需的插件 DLL 文件到一个临时目录 ($PLUGINSDIR),把指定的参数全部压入(从右到左次序),然后执行 DLL 函数。如果指定了 /NOUNLOAD 选项则插件将不会卸载直到安装程序退出或下一次你使用该插件并不带 /NOUNLOAD 参数。需要注意的是最后一次调用该插件的时候必须不能有 /NOUNLOAD 否则插件将不能从 $PLUGINSDIR 里删除,而导致垃圾文件留在用户的机器里。

查看安装程序内部的语言在

D:\Program Files\NSIS\Contrib\Lang ge files\simpchinese.nsh 文件夹

v2.0.1.0

怎样去掉V

其实把它当作一个字符串,从第一个往后赋给一个新的变量

StrCpy $R0 $0 “” 1

intop $8 $r0 - 2

System::Call “Kernel32::GetSystemDefaultLangID(v …) i .s”

Pop $3

检测系统语言,用到上面这个DLL。system 是DLL,CALL是函数

Push $0

Push $1

messagebox MB_OK “$lang ge”

System::Call “mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u”

${if} $lang ge = 2052

StrCmp $0 “” 0 +4

Messagebox MB_OK "安装程序检测到您计算机上没有安装.Net Framework 2.0,您必须先安装.Net Framework 2.0 或以上版本,才能安装运行本软件! "

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

检测.net用到上面这个函数 $0就是版本号,返回值

还可以用下面的方法,检测微软.net安装路径的注册表里面。

读取索引号,读取里面的值

在HKLM\software\microsoft\net framework set up 下面

WriteINIStr

INI文件 区段 项 值

WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

RMDir

[/r] [/REBOOTOK] 目录名

删除指定的目录(完整路径)。没有 /r 参数时只有在目录为空时才会被删除

RMDir “$desktop\裝箱大師企業版4.0.lnk” 竟然删不掉

该为delete 就可

我的理解是 rmdir 删除的是目录

       delete 删除的是完整路径

RMDir /r “$INSTDIR\Media*.*”

$instdir 就是c:\programs\loadmaster4.0

插入宏,有三种选择

1.在

D:\Program Files\NSIS\Contrib\Modern UI\system.nsh

2.!incl? “MUI.nsh” 其实就是上面这种选择

3.在

!incl? “MUI2.nsh”

SMSTARTUP

开始菜单程序/启动 目录。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。

$QUICKLAUNCH

在 IE4 活动桌面及以上的快速启动目录。如果快速启动不可用,仅仅返回和 $TEMP 一样。

!ifdef FULL

!define PROD T_NAME `迅雷Ayu去广告版`

!define EXEFN `迅雷_${PROD T_VERSION}_Full.exe`

!else

!define PROD T_NAME `迅雷Ayu去广告精简版`

!define EXEFN `迅雷_${PROD T_VERSION}_Lite.exe`

!endif

${if} $1 == “”

DetailPrint ‘ ( A s s o c i a t e d f i l e t y p e s ) ∗ . (Associatedfiletypes) *. (Associatedfiletypes).{ext} ( F o r ) &quot; (For) &quot; (For)"{desc}"…’

WriteRegStr HKCR “Back.KaTeX parse error: Can't use function '\.' in math mode at position 10: {Project}\̲.̲{ext}” “” “Blank

${Else}

DetailPrint ‘ ( M o d i f y f i l e t y p e s ) ∗ . (Modifyfiletypes) *. (Modifyfiletypes).{ext} ( F o r ) &quot; (For) &quot; (For)"{desc}"…’

${EndIf}

If|Unless…{ElseIf|ElseUnless}…[Else]…EndIf|EndUnless

  • 有条件的执行一个语句区块,取决于表达式。

AndIf|AndUnless|OrIf|OrUnless

  • 给 If, Unless, ElseIf 和 ElseUnless 增加额外的条件语句。

添加卸载信息到添加/删除面板

WriteRegStr HKLM “Software\Microsoft\Windows\CurrentVersion\Uninstall\Prod t” “DisplayName” “Application Name”

基本用法:

makensis.exe myscript.nsi

安静模式:

makensis.exe /V1 myscript.nsi

命令行问题。。?

LicenseText

[文本 [按钮文本]]

licensetext 请先阅读协议 我同意

licenseforceselection radiobuttons “我接受”“我不接受”

使用引号,参数可以不用空格,如上

BGFont

[字体名称 [字体高度 [字体宽度] [/ITALIC] [/UNDERLINE] [/STRIKE]]] ?

赋值表达式在哪?!define 不能对变量

呵呵,又测试成功

InstallDir $programfiles\Loadmaster1

InstallDirRegKey HKLM Software\loadmaster path

InstallDirRegKey 的作用是检测以前的安装路径

载入语言文件

loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\SimpChinese.nlf”

;loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\English.nlf”

如果用;loadlang gefile SimpChinese.nlf

loadlang gefile English.nlf

不知道缺少了哪个头文件

基本上你有 25 个寄存器(20 个常规用途,5 个特殊用途),和一个堆栈。只有20个啊。

WriteINIStr 写入项值,有什么作用?

WriteINIStr

INI文件 区段 项 值

StrCpy 8 &quot; 8 &quot; 8"SYSDIR\IniTest"

WriteINIStr “$INSTDIR\test.ini” “MySection” “Val 1” $8

!macro BIMAGE IMAGE PARMS

Push $0

GetTempFileName $0

File /oname= 0 &quot; 0 &quot; 0"{IMAGE}"

SetBrandingImage ${PARMS} $0

Delete $0

Pop $0

!macroend

$0 有什么用,file ?

posted @ 2008-10-10 11:33 bl welkin 阅读(638) | 评论 (2) | 编辑

我做的NSIS程序

outfile “LoadMaster_Enterprise_Multilang ge_Setup.exe”

;!incl? “D:\Program Files\NSIS\Contrib\Modern UI\system.nsh”

!incl? “${NSISDIR}\Incl?\LogicLib.nsh”

!define PROD T_NAME “LoadMaster”

!define PROD T_VERSION “4.0”

!define PROD T_WEB_SITE “http://www.zh ngxiang.com

!define PROD T_UNINST_KEY “Software\Microsoft\Windows\CurrentVersion\Uninstall${PROD T_NAME}”

!define PROD T_UNINST_ROOT_KEY “HKLM”

!define MUI_WELCOMEFINISHPAGE_BITMAP “F:\t \pic.bmp”

!incl? “MUI2.nsh”

!incl? WordFunc.nsh

SetCompressor lzma

XPStyle on

!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_PAGE_LICENSE “$(ln)”

!insertmacro MUI_PAGE_DIRECTORY

!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_INSTFILES

!insertmacro MUI_LANG GE “English”

!insertmacro MUI_LANG GE “SimpChinese”

!insertmacro MUI_LANG GE “TradChinese”

icon f:\t \LD.ico

uninstallicon “${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico”

InstallDir “$programfiles\LoadMaster4.0”

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

Name $(Name)

LangString Name ${LANG_ENGLISH} “LoadMaster_Enterprise”

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

LangString name 1028 “裝箱大師企業版”

ShowInstDetails show

ShowUnInstDetails show

Section “MainSection”

setoutpath $INSTDIR

;file /r “f:\abc*.*”

file /r “f:\workspace2*.*”

createdirectory $SYSDIR\vcredist_x86

setoutpath $SYSDIR\vcredist_x86

ExecWait ‘"$INSTDIR\vcredist_x86.exe"’

delete “$instdir\vcredist_x86.exe”

SectionEnd

function .onInit

System::Call “Kernel32::GetSystemDefaultLangID(v …) i .s”

Pop $3

${if} $3 = 2052

call cn

${endif}

${if} $3 = 1033

call en

${endif}

${if} $3 = 1028

call tn

${endif}

Push $0

Push $1

System::Call “mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u”

${if} $lang ge = 2052

StrCmp $0 “” 0 +4

Messagebox MB_OK "安装程序检测到您计算机上没有安装.Net Framework 2.0,您必须先安装.Net Framework 2.0 或以上版本,才能安装运行本软件! "

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

${if} $lang ge = 1028

strcmp $0 “” 0 +4

Messagebox MB_OK "安裝程序檢測到您計算機上沒有安裝.Net Framework 2.0,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件! "

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

${if} $lang ge = 1033

strcmp $0 “” 0 +4

Messagebox MB_OK “Detecting that you have not installed .Net Framework 2.0 on your computer, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!”

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

StrCpy $R0 $0 “” 1

intop $8 $r0 - 2

${if} $8 < 0

${if} $3 = 2052

Messagebox MB_ok “安装程序检测到您计算机上的.Net Framework 版本低于2.0,您的版本是$r0 ,您必须先安装.Net Framework 2.0 或以上版本,才能安装运行本软件!”

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

${if} $3 = 1028

Messagebox MB_ok “安裝程序檢測到您計算機上的.Net Framework 版本低於2.0,您的版本是$r0 ,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件!”

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

${if} $3 = 1033

Messagebox MB_ok “Detecting your computer .Net Framework version lower than 2.0, your version is $r0, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!”

ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn

abort

${endif}

${endif}

FunctionEnd

function cn

Push “”

Push ${LANG_ENGLISH}

push “English”

push ${LANG_TRADCHINESE}

Push “繁體中文”

Push ${LANG_SIMPCHINESE}

Push “简体中文”

Push A

LangDLL::LangDialog " 安装语言" “请选择安装语言与软件界面”

Pop $LANG GE

StrCmp $LANG GE “cancel” 0 +2

Abort

functionend

function en

Push “”

Push ${LANG_ENGLISH}

push “English”

push ${LANG_TRADCHINESE}

Push “繁體中文”

Push ${LANG_SIMPCHINESE}

Push “简体中文”

Push A

LangDLL::LangDialog “Installer Lang ge” "Please select a lang ge and software interface lang ge "

Pop $LANG GE

StrCmp $LANG GE “cancel” 0 +2

Abort

functionend

function tn

Push “”

Push ${LANG_ENGLISH}

push “English”

push ${LANG_TRADCHINESE}

Push “繁體中文”

Push ${LANG_SIMPCHINESE}

Push “简体中文”

Push A

LangDLL::LangDialog " 安裝語言" “請選擇安裝語言與軟件界面”

Pop $LANG GE

strcpy $0 $lang ge

StrCmp $LANG GE “cancel” 0 +2

Abort

functionend

section writeregedit

setoutpath $INSTDIR

WriteRegStr HKLM software\LoadMaster version "${PROD T_VERSION} "

writeregstr HKLM software\LoadMaster path “$INSTDIR”

writeregstr HKLM software\LoadMaster lang ge “$LANG GE”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayName” “$(Name)”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “UninstallString” “$INSTDIR\uninst.exe”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayIcon” “$INSTDIR\LoadMasterMain.exe”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayVersion” “${PROD T_VERSION}”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “URLInfoAbout” “${PROD T_WEB_SITE}”

sectionend

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

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

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

Section -AdditionalIcons

${switch} $lang ge

${Case} 1033

SetOutPath “$INSTDIR”

file “f:\en\LoadMasterMain.exe.config”

WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

CreateDirectory “$SMPROGRAMS\LoadMaster”

createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\LoadMaster4.0.…instdir\LoadMasterMain.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Website.lnk" "INSTDIR${PROD T_NAME}.url”

createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Man l.lnk" "instdir\Man l.chm”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Uninstall.lnk"…INSTDIR\uninst.exe”

createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 8: desktop\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲4.0.lnk" "instdir\LoadMasterMain.exe”

${Break}

${Case} 2052

SetOutPath “$INSTDIR”

file “f:\cn\LoadMasterMain.exe.config”

WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

CreateDirectory “$SMPROGRAMS\装箱大师企业版”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师官方网站…INSTDIR${PROD T_NAME}.url”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师企业版卸…INSTDIR\uninst.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师企业版帮…INSTDIR\Man l.chm”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 11: SMPROGRAMS\̲装̲箱大师企业版\装箱大师企业版4…INSTDIR\LoadMasterMain.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\装' at position 8: DESKTOP\̲装̲箱大师企业版4.0.lnk" …INSTDIR\LoadMasterMain.exe”

${Break}

${Case} 1028

SetOutPath “$INSTDIR”

file “f:\tn\LoadMasterMain.exe.config”

WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”

CreateDirectory “$SMPROGRAMS\裝箱大師企業版”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”

CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”

createshortcut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: smprograms\̲裝̲箱大師企業版\裝箱大師企業版4…instdir\LoadMasterMain.exe”

createshortcut “KaTeX parse error: Expected 'EOF', got '\裝' at position 8: desktop\̲裝̲箱大師企業版4.0.lnk" …instdir\LoadMasterMain.exe”

${Break}

${EndSwitch}

SectionEnd

section woriteunistallreg

writeuninstaller “$instdir\uninst.exe”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayName” “$(Name)”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “UninstallString” “$INSTDIR\uninst.exe”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayVersion” “${PROD T_VERSION}”

WriteRegStr P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “URLInfoAbout” “${PROD T_WEB_SITE}”

sectionend

section uninstall

deleteregkey P R O D T U N I N S T R O O T K E Y &quot; {PROD T_UNINST_ROOT_KEY} &quot; PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}"

deleteregkey hklm software\LoadMaster\path

deleteregkey HKLM software\LoadMaster\version

; messagebox MB_OK “$5”

${if} $5 = 2052

Delete “$INSTDIR${PROD T_NAME}.url”

Delete “$INSTDIR\uninst.exe”

Delete “$INSTDIR\templet.zh-CHN.xls”

Delete “$INSTDIR\templet.zh-CN.xls”

Delete “$INSTDIR\templet.xls”

Delete “$INSTDIR\resources.cfg”

Delete “$INSTDIR\Man l.chm”

Delete “$INSTDIR\Mogre.dll”

Delete “$INSTDIR\MOIS.dll”

Delete “$INSTDIR\Ogre.log”

Delete “$INSTDIR\OgreMain.dll”

Delete “$INSTDIR\OIS.dll”

Delete “$INSTDIR\plugins.cfg”

delete “$instdir\Plugin_OctreeSceneManager.dll”

Delete “$INSTDIR\RenderSystem_Direct3D9.dll”

Delete “$INSTDIR\RenderSystem_GL.dll”

delete “$instdir\D3DX9_39.dll”

delete “$instdir\LoadMasterUIControlLibrary.dll”

delete “$instdir\ToolsForDataTransfer.exe”

delete “$instdir\装箱大师新增功能.txt”

Delete “$INSTDIR\Csla.dll”

Delete “$INSTDIR\database.mdb”

Delete “$INSTDIR\GEARS.ico”

Delete “$INSTDIR\HID.exe”

Delete “$INSTDIR\LoadMasterMain.exe”

Delete “$INSTDIR\LoadMasterMain.exe.config”

Delete “$INSTDIR\cg.dll”

Delete “$INSTDIR\csgl.dll”

Delete “$INSTDIR\csgl.native.dll”

RMDir /r “$INSTDIR\Media*.*”

RMDir /r “$INSTDIR\zh-CN*.*”

RMDir /r “$INSTDIR\zh-HK*.*”

Delete “$SMPROGRAMS\装箱大师企业版\装箱大师企业版卸载.lnk”

Delete “$SMPROGRAMS\装箱大师企业版\装箱大师官方网站.lnk”

Delete “$SMPROGRAMS\装箱大师企业版\装箱大师企业版帮助文档.lnk”

Delete “$DESKTOP\装箱大师企业版4.0.lnk”

Delete “$SMPROGRAMS\装箱大师企业版\装箱大师企业版4.0.lnk”

RMDir “$INSTDIR”

RMDir “$SMPROGRAMS\装箱大师企业版”

SetAutoClose tr

${endif}

${if} $5 = 1033

Delete “$INSTDIR${PROD T_NAME}.url”

Delete “$INSTDIR\uninst.exe”

Delete “$INSTDIR\templet.zh-CHN.xls”

Delete “$INSTDIR\templet.zh-CN.xls”

Delete “$INSTDIR\templet.xls”

Delete “$INSTDIR\resources.cfg”

Delete “$INSTDIR\Man l.chm”

Delete “$INSTDIR\Mogre.dll”

Delete “$INSTDIR\MOIS.dll”

Delete “$INSTDIR\Ogre.log”

Delete “$INSTDIR\OgreMain.dll”

Delete “$INSTDIR\OIS.dll”

Delete “$INSTDIR\plugins.cfg”

delete “$instdir\Plugin_OctreeSceneManager.dll”

Delete “$INSTDIR\RenderSystem_Direct3D9.dll”

Delete “$INSTDIR\RenderSystem_GL.dll”

delete “$instdir\D3DX9_39.dll”

delete “$instdir\LoadMasterUIControlLibrary.dll”

delete “$instdir\ToolsForDataTransfer.exe”

delete “$instdir\装箱大师新增功能.txt”

Delete “$INSTDIR\Csla.dll”

Delete “$INSTDIR\database.mdb”

Delete “$INSTDIR\GEARS.ico”

Delete “$INSTDIR\HID.exe”

Delete “$INSTDIR\LoadMasterMain.exe”

Delete “$INSTDIR\LoadMasterMain.exe.config”

Delete “$INSTDIR\cg.dll”

Delete “$INSTDIR\csgl.dll”

Delete “$INSTDIR\csgl.native.dll”

RMDir /r “$INSTDIR\Media*.*”

RMDir /r “$INSTDIR\zh-CN*.*”

RMDir /r “$INSTDIR\zh-HK*.*”

Delete “$SMPROGRAMS\LoadMaster\Website.lnk”

Delete “$SMPROGRAMS\LoadMaster\Uninstall.lnk”

Delete “$SMPROGRAMS\LoadMaster\Man l.lnk”

delete “$smprograms\LoadMaster\LoadMaster4.0.lnk”

RMDir “$INSTDIR”

RMDir “$SMPROGRAMS\LoadMaster”

delete “$desktop\LoadMaster4.0.lnk”

SetAutoClose tr

${endif}

${if} $5 = 1028

Delete “$INSTDIR${PROD T_NAME}.url”

Delete “$INSTDIR\uninst.exe”

Delete “$INSTDIR\templet.zh-CHN.xls”

Delete “$INSTDIR\templet.zh-CN.xls”

Delete “$INSTDIR\templet.xls”

Delete “$INSTDIR\resources.cfg”

Delete “$INSTDIR\Man l.chm”

Delete “$INSTDIR\Mogre.dll”

Delete “$INSTDIR\MOIS.dll”

Delete “$INSTDIR\Ogre.log”

Delete “$INSTDIR\OgreMain.dll”

Delete “$INSTDIR\OIS.dll”

Delete “$INSTDIR\plugins.cfg”

delete “$instdir\Plugin_OctreeSceneManager.dll”

Delete “$INSTDIR\RenderSystem_Direct3D9.dll”

Delete “$INSTDIR\RenderSystem_GL.dll”

delete “$instdir\D3DX9_39.dll”

delete “$instdir\LoadMasterUIControlLibrary.dll”

delete “$instdir\ToolsForDataTransfer.exe”

delete “$instdir\装箱大师新增功能.txt”

Delete “$INSTDIR\Csla.dll”

Delete “$INSTDIR\database.mdb”

Delete “$INSTDIR\GEARS.ico”

Delete “$INSTDIR\HID.exe”

Delete “$INSTDIR\LoadMasterMain.exe”

Delete “$INSTDIR\LoadMasterMain.exe.config”

Delete “$INSTDIR\cg.dll”

Delete “$INSTDIR\csgl.dll”

Delete “$INSTDIR\csgl.native.dll”

RMDir /r “$INSTDIR\Media*.*”

RMDir /r “$INSTDIR\zh-CN*.*”

RMDir /r “$INSTDIR\zh-HK*.*”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值