加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

安装软件NSIS脚本详细教程

发布时间:2020-10-10 00:54:17 所属栏目:教程 来源:xy
导读:这里针对NSIS剧本布局逐一都做了具体表明,安装软件NSIS剧本具体教程
NSIS(Nullsoft Installation System)是一个小巧高效的安装软件。
可通过样例修改或按照本身要求编写 NSI 剧本文件来定制本身的安装体系,可实现容许协议的表现、安装范例的选择、写入注册表、写入ini文件、毗连措施外壳、语句跳转、提醒信息表现、建设卸载措施、定制安装和卸载措施的图标、建设快捷方法等其他安装措施应有的成果,
是一款操纵简朴、成果强盛的高服从安装软件佳构。

NSIS出格声名:
某些剧本必要特另外DLL支持,如MPC关联措施,就有也许必要InstallOptionsEx.dll,
其它,也许必要编译说话头文件如:SimpChinese.nsh,也许必要把 !define 所有替代为 !insertmacro MUI_DEFAULT,此外说话以此类推!尚有一些各人必要本身在建造进程中去探索!在此就纷歧一指出.

剧本布局:

安装措施属性-页面-区段-安装措施的卸载部门(这只是个概略布局,中间可以包括"变量""函数".....)

安装措施属性部门:
;--------------------------------------
Name "这里界说你的措施名字"

SetCompressor "[/SOLID] [/FINAL] zlib|bzip2|lzma"
*该呼吁配置由安装措施行使来抉择命据是否应该被压缩的压缩标志*

CRCCheck "on|off|force"
*指定安装前安装措施是否对自身执行一个 CRC*

InstallColors "/windows | (远景致 配景致)"
*配置安装信息屏幕颜色(默以为 00FF00 000000)*

AutoCloseWindow "true|false"
*配置当安装完成的时辰窗口是否自动封锁*

ShowInstDetails "hide|show|nevershow"
*配置是否表现安装具体信息*

SilentInstall "normal|silent|silentlog"
*指定安装措施是否静默安装*

BrandingText "/TRIM(LEFT|RIGHT|CENTER) 文本"
*配置表现在安装措施窗口底部的文本*

SpaceTexts "{必要空间文本 [可用空间文本]}"
*假如指定了参数,将会代替安装所需空间和可用空间文本*

Caption "问题"
*当行使一个外部的 PageEx 区块:配置安装措施问题条文本*

SubCaption "[页面代号 子问题] "
*代替每一个安装措施页面(0=": 容许协议",1=": 安装选项",2=": 安装目次", 3=": 正在安装", 4=": 安装完成")的子问题。假如指定了空字串(""),将行使默认值(你也可以指定 " " 来行使一个空缺字串)*

InstallButtonText "安装按钮文本"

ComponentText "[文本 [子文本] [子文本2]]"
*/用来变动组件选择页面的默认文本

文本: 控件上的文本,到安装图标的右边

子文本: 安装范例选择控件的文本

子文本2: 安装范例选择控件下面、组件列表左边的文本

假如字串为空("")则行使默认文本/*



OutFile "[路径]安装措施.exe"

!include "文件"(譬喻:!include "MUI.nsh")MUI是一个以界说的UI界面头文件.
*这个呼吁可以将一个文件包括到剧本中,就像是剧本的一部门一样*

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

页面部门:

假如你行使了"!include "MUI.nsh"那么请按它的方法界说;
!define MUI_ICON ".你要行使的图标"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_HEADERIMAGE_BITMAP .选择150*57像数的图片(必需是BMP名目)
...........详细内容,请打开MUI.nsh查察;
;-----------------------------------------------------
假如没有,那么
Page license 容许协议页面
Page components 组件选择页面
Page directory 安装目次选择页面
Page instfiles 安装执行页面
UninstPage uninstConfirm 卸载确认页面
UninstPage instfiles 打消安装

InstallDir 界说安装目次
InstallDirRegKey HKLM Software??? ""
;-----------------------------------------
区段部门:
在声名之前,我先行声名"InstType",InstType界说:
把一个安装范例添加到安装范例列内外,或榨取自界说安装范例;
例子:
InstType "保举安装"
InstType "所有安装"
默认有"自界说安装",虽然你可以榨取它!

看看区段部门吧;
Section
...............
Sectionend
上面就是一个区段,不外是个空区段!
我们再来看个例子:
;-----------------------
InstType "保举安装"
InstType "所有安装"

Section "区段 1"
SectionIn 2
SectionEnd

Section "区段 2"
SectionIn 1 2
SectionEnd
;----------------------
不知道各人看出没,此例是想汇报我们当我们选择"保举安装"时,我们只安装了"区段2"中的内容,当我们选择"所有安装"时,我们安装了"区段1"及"区段2"的内容.

假如我们必要一个段中含有安装选项时,我们必要行使到"区段组"
SectionGroup [/e] 区段组名 [区段组名索引输出] *假如指定了 /e,该区段组的全部区段默认将被睁开*
例子:
;--------------------------------
SectionGroup "区段组"
Section "区段 1"
SectionEnd
Section "区段 2"
SectionEnd
SectionGroupEnd
;--------------------------------

安装措施的卸载部门声名:
;-------------------------------
; Uninstaller
Section "Uninstall"
SectionEnd
;-------------------------------
上面就是卸载区段了!

看了上面的简介,我们可以根基上写上一点了,固然什么也没执行,但框架有了.不是吗?

************************************************************************
常用的呼吁及函数(大部门用于区段)

1:file [/nonfatal] [/a] ([/r] [/x 文件|通配符 [...]] (文件|通配符) [...] | /oname=输出路径文件名 输入路径文件名)
开释文件到当前输出路径.
假如行使了 /nonfatal 开关且当文件未找到时行使告诫来取代错误
假如行使了 /a 开关,则被添加的文件的属性将会保持
假如行使了 /r 开关,匹配的文件将会在子目次里被递归的搜刮。假如目次名匹配则全部包括的内容城市被递归添加。目次布局也会被保持
行使 /x 开关可以用来来解除文件或目次

相对应卸载段呼吁:
Delete [/REBOOTOK] 文件
从方针体系删除文件


2:WriteRegStr 根键 子键 项 值

把字串写入注册表.

WriteRegExpandStr 根键 子键 项 值

把字串写入注册表。根键必需为下面列表之一:
HKCR 或 HKEY_CLASSES_ROOT
HKLM 或HKEY_LOCAL_MACHINE
HKCU 或HKEY_CURRENT_USER
HKU 或HKEY_USERS
HKCC 或HKEY_CURRENT_CONFIG
HKDD 或HKEY_DYN_DATA
HKPD 或HKEY_PERFORMANCE_DATA
SHCTX 或SHELL_CONTEXT
假如字串不能写入注册表则安排一个错误的标志。字串的范例为 REG_SZ 对应 WriteRegStr,或 REG_EXPAND_STR 对应 WriteRegExpandStr。假如注册表键不存在则会自动建设。


相对应卸载段呼吁:
DeleteRegKey [/ifempty] 根键 子键
删除一个注册表键。假如指定了 /ifempty,则该注册表键仅当它无子键时才会被删除(不然,整个注册表键将被删除)。有用的根键值在后头的 WriteRegStr 列出。假如该键不能被删除(或假如它不存在)则会安排一个错误的标志。

3: SetOutPath 输出路径

配置输出路径($OUTDIR)且当路径不存在时建设(必要时会递归建设)。必需为全路径名,凡是都行使 $INSTDIR。

着实说白了就像DOS里的"成立一个目次"的呼吁.

如:
SetOutPath $INSTDIR
??这个到底是个什么目次?凭证英文意思"安装目次"其拭魅这个变量对应前面我们的界说
"InstallDir $PROGRAMFILESQUHAIL"那么这就是我们的目次了!
对应卸载呼吁:
RMDir 要删除的目次

4:CreateDirectory 要建设的路径
建设 (递归建设) 指定的目次。当目次不能建设时会安排一个错误标志。

你也可以指定一个绝对路径。
CreateShortCut
快捷文件.lnk 方针文件 [参数 [图标文件 [图标索引号 [启动选项 [键盘快捷键 [描写]]]]]]

建设一个指向 “方针文件” 的快捷方法 “快捷文件.lnk”,可以带 “参数” 参数.
就是建设快捷方法

对应卸载呼吁:
Delete

5:RegDLL dll文件 [进口点名称]
载入指定的 DLL 而且挪用 DllRegisterServer (或进口点名称,当指定之后)。当发生一个错误的时辰会置一个错误标志(譬喻不能载入 DLL,不能初始化 OLE,不能找到进口点,可能函数返回任何其余错误 ERROR_SUCCESS (=0)).

着实就是注册或加载你要的插件!
如:RegDLL $INSTDIRCodecsh264dec.ax
对应的卸载呼吁
UnRegDLL

6:Exec 呼吁
这应该算是常用的呼吁了,执行一个指定的措施而且当即继承安装,就是直接执行一个措施.
ExecWait 呼吁 [用户变量(返回代码)]
执行一个指定的措施而且守候运行处理赏罚竣事.
如:运行一个安装文件 .inf
ExecWait "RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall"
对应卸载
ExecWait "RunDll32 advpack.dll,LaunchINFSection $windirINFskins.inf,DefaultunInstall"
虽然DefaultunInstall是不定的,详细要看inf文件,它可以界说[unInstall]OR [DEL]可能此外,假如没有卸载段就无法卸载!

以上应该可以简朴的做个安装包了吧!

7:ReadINIStr 用户变量(输出) INI文件 区段 项

从 “INI文件” 的 “区段” 区段读取 “项” 的值并把该值输出到用户变量。假如该项未找到时会安排一个错误标志且该用户变量被赋为空值。

对应卸载
DeleteINISec INI文件 区段
从“INI文件” 里删除整个区段 “区段”
DeleteINISec $TEMPsomething.ini Field 2
DeleteINIStr INI文件 区段 字串
从“INI文件” 里的 “区段” 区段删除 “字串” 字串。
DeleteINIStr $TEMPsomething.ini Field 2 A 组件安装

好比:something.INI
[Field 1]
Type=Label
Text=A 组件安装
Left=8
Right=68
Top=6
Bottom=13

[Field 2]
Type=Label
Text=B 组件安装
Left=5
Right=65
Top=44
Bottom=51

8:ReserveFile [/nonfatal] [/r] [/x file|wildcard [...]] 文件 [文件...]
把文件生涯在稍后行使的数据区块.

用于下面的挪用.
偶然,预先打包文件,利便安装加快开释之用.
如:ReserveFile "a.ini"

9:Function [函数名]
开始并打开一个新的函数.
Function func
............
FunctionEnd
;----------------
在这个段中界说函数"func"

9:StrCpy 用户变量(方针) 字串 [最大长度] [起始偏移]
字串复制指令

StrCpy $0 "a bbbbbbbb" 就有$0 = "a bbbbbbbb"
StrCpy $0 "a bbbbbbbb" 3 就有$0 = "a b"
............

10:StrCmp 字串1 字串2 沟通时跳转的标志 [不沟通时跳转的标志]
较量(不区分巨细写)“字串1”和“字串2”.假如两者相称,跳转到“沟通时跳转的标志”,不然跳转到“不沟通时跳转的标志”.

11:Exch [用户变量 | 仓库索引]
当不指定参数时,互换仓库顶部的两个单位
Push 字串
把一个字串压入仓库。该字串可随后从仓库里弹出
Pop 用户变量(输出)
从仓库里弹出一个字串到用户变量 $x。假如仓库是空的,则会置一个错误标志。
如:
Push 1
Push 2
Exch
Pop $0 # = 1

12:if
12-1 IfAbort 退出时要跳转的标志 [不是退出时要跳转的标志]
假如挪用退出时它将返回 true
12-2 IfErrors 错误时跳转的标志 [没有错误时跳转的标志]
检测并破除错误标志,假如设了错误标志,则跳转到 “错误时跳转的标志”,不然跳转到 “没有错误时跳转的标志”.
12-3IfFileExists 要检测的文件 文件存在时跳转的标志 [文件不存在时跳转的标志]
检测“要检测的文件”是否存在(可以用通配符,或目次),并当文件存在时跳转到“文件存在时跳转”,不然跳转到“文件不存在时跳转”.

13Goto 要跳转的标志 | +偏移| -偏移| 用户变量(方针地点)
假如指定了标志,则跳转到 “要跳转的标志:”.

14 MessageBox 动静框选项列表 动静框文本 [/SD 返回] [检测返回值 跳转到标志] [检测返回值2 跳转到标志2]
表现一个包括“动静框文本”的动静框。“动静框选项列表”必需为下面的一个或多个,多个行使 | 来离隔.
MB_OK - 表现 OK 按钮
MB_OKCANCEL - 表现 OK 和打消按钮
MB_ABORTRETRYIGNORE - 表现退出、重试、忽略按钮
MB_RETRYCANCEL - 表现重试和打消按钮
MB_YESNO - 表现是和否按钮
MB_YESNOCANCEL - 表现是、否、打消按钮
MB_ICONEXCLAMATION - 表现赞叹号图标
MB_ICONINFORMATION - 表现信息图标
MB_ICONQUESTION - 表现问号图标
MB_ICONSTOP - 表现终止图标
MB_TOPMOST - 使动静框在最前端表现
MB_SETFOREGROUND - 配置远景
MB_RIGHT - 右对齐文本
MB_RTLREADING - RTL 阅读序次
MB_DEFBUTTON1 - 默以为按钮 1
MB_DEFBUTTON2 - 默以为按钮 2
MB_DEFBUTTON3 - 默以为按钮 3
MB_DEFBUTTON4 - 默以为按钮 4
“检测返回值”可觉得 0(或空,或保存封锁),或下列之一:

IDABORT - 退出按钮
IDCANCEL - 打消按钮
IDIGNORE - 忽略按钮
IDNO - 否按钮
IDOK - OK 按钮
IDRETRY - 重试按钮
IDYES - 是按钮
假如动静框的返回值为“检测返回值”,则安装措施执行跳转.
如:
IfFileExists "$EXEDIRmplayerc.exe" +3 0
MessageBox MB_OK|MB_ICONEXCLAMATION "请放到MY MPC LOOKOU目次下运行 "

15:Rename [/REBOOTOK] 源文件 方针文件
把 源文件 重定名为 方针文件
如:
Rename $INSTDIRfile.ext $INSTDIRfile.dat

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读