如何用NSIS工具HW VNISEDIT打包安装程序

如何用NSIS工具HW VNISEDIT打包安装程序,第1张

打开VNISEdit工具,文件兄薯孝->新建脚本向导...

1

第2步是填写我们的应用程序的名称,版...

2

第3步是填写安装程序的LOGO,程序名称...

3

第4步这里是设置一个快屏幕和背景窗口...

4

设置应用程序的目录和授权信息,手薯应用程...

5

这一步是添加应用程序的羡稿所有文件,左边...

6

应用程序图标,填写应用程序在开始

NSIS (Nullsoft Scriptable Install System)是一个Open

Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它的脚

本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和迟信中语法,但它是为安装程序这类应用所设计的。码山NSIS脚本通常以

nsi为扩展名,支持include功能,头文件扩展名为nsh。NSIS (Nullsoft Scriptable Install System)是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS是通过它坦配的脚本语言来描述安装程序的行为和逻辑的。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。NSIS脚本通常以 nsi为扩展名,支持include功能,头文件扩展名为nsh。

NSIS的主要特点是:

开销小,一个完整功能的安装程序仅需要34k的额外开销。

支持大多数Windows平台,包括:Windows 9.x,Windows NT, Windows 2000, Windows XP, Windows 2003

支持三大压缩算法: Zlig, BZips, LZMA

支持脚本

支持多语言

支持安装界面定制

提供可扩展的插件接口

支持网络安装、补丁

支持无人值守的安装模式

此外,NSIS的license允许任何用途免费使用。

开发一个NSIS的安装程序通常有以下几步:

确定安装的功能和界面元素

编写NSIS脚本

使用NSIS提供的makensis或者makensisw程序,将步骤2编写的脚本编译成可执行的安装程序

调试安装程序,如果有问题退到第二步重复

随着NSIS的流行,有一些第三方的NSIS脚本开发环境出现了,如HM NIS Edit,Venis IX前者是完全开源的,后者仅对个人和非商业用途免费。在这些集成开发环境下,步骤2,3可以方便的组合在一起。

NSIS脚本的结构

NSIS脚本(下称nsi脚本)主要包含安装程序属性、页面、区段函数

属性用来定义安装程序的行为和界面风格,这些属性大部分是编译时刻属性,即不能在运行时刻改变。

页面是指安装程序的向导页面,示例:

Page license

Page components

Page directory

Page instfiles

UninstPage uninstConfirm

UninstPage instfiles

区段是对应某种安装/卸载选项的处理逻辑,该段代码仅当用户选择相应的选项才被执行。卸载程序的区段名用"un."作为前缀,示例如下:

Section "Installer Section"

SectionEnd

Section "un.Uninstaller Section"

SectionEnd

在区段中可以使用很多指令用来完成诸如解压缩文件、读写注册表、创建目录、创建快捷方式等任务,但最常用的指令是SetOutPath和File,前者用于指定目的位置,后者用于指定文件。示例:

Section "My Program"

SetOutPath $INSTDIR

File "My Program.exe"

File "Readme.txt"

SectionEnd

区段名的修饰符/o表示该区段默认不选上,-表示隐藏区段(匿名区段也是隐藏区段),!表示需要粗体显示的区段。

SectionIn表示该区段和安装类型之间的关系:

SectionIn insttype_index [insttype_index] ... [RO]

RO修饰符表示不可修改。

子区段用于包含多个区段

SubSection [/e] Caption [subsection_name index output]

修饰符/e用于该子区段的所有区段是否默认展开。

函数包含了模块化的安装逻辑,在nsi脚本中函数分为两种:用户自定义函数和回调函数。用户自定义函数仅当是Call指令调用时才被执行,如果函数体中没有abort语句,则安装程序执行完了用户自定义函数,继续运行Call语句和指令。

用户自定义函数的语法如下:

Function <函数名>

# some commands

FunctionEnd

函数的调用则使用以下语法:

Call <函数名>

可见无论是函数的定义还是函数的调用都没有参数传递。通常nsi的参数传递是通过堆栈 *** 作Pop,Push和20个寄存器变量~, $R0~$R9进行的。也可以通过全局变量完成参数传递。如:

Var input

Var output

Section bla

DeteailPrint "input is $input$\n"

Call square

DeteailPrint "square of $input is $output$\n"

SectionEnd

Function square

output = input^2

FunctionEnd

回调函数则是由在特定的时间点触发的程序段。常用的回调函数如.onInit:

Function .onInit

MessageBox MB_YESNO "This will install My Program. Do you wish to continue?" IDYES gogogo

Abort

gogogo:

FunctionEnd

NSIS对于安装逻辑定义以下回调函数:.onGUIInit、.onInit、.onInstFailed、.onInstSuccess、. onGUIEnd、.onMouseOverSection、.onRebootFailed、.onSelChange、.onUserAbort、. onVerifyInstDir

NSIS对于卸载逻辑定义以下回调函数:un.onGUIInit、un.onInit、un.onUninstFailed、un.onUninstSuccess、un.onGUIEnd、un.onRebootFailed、un.onUserAbort

nsi脚本的变量定义

nsi脚本的变量定义用Var关键字,后跟变量名,变量是全局的并且是大小写敏感的。变量引用时需要加上前缀$。

除了用户自定义的变量外,nsi脚本中与定义寄存器变量~,$R0~$R9用于参数传递,以及系统变量用于特定用途,这些变量主要有:

$INSTDIR,$OUTDIR,$CMDLINE,$LANGUAGE这些变量都是可写的。

$PROGRAMFILES,$COMMONFILES,$DESKTOP,$EXEDIR,$,$WINDIR,$SYSDIR,$ TEMP,$STARTMENU,$SMPROGRAMS,$SMSTARTUP,$QUICKLAUNCH,$DOCUMENTS,$SENDTO,$ RECENT,$F***ORITES,$MUSIC,$PICTURES,$VIDEOS,$NETHOOD,$FONTS,$TEMPLATES,$ APPDATA,$PRINTHOOD,$INTERNET_CACHE,$COOKIES,$HISTORY,$PROFILE,$ ADMINTOOLS,$RESOURCES,$RESOURCES_LOCALIZED,$CDBURN_AREA,$HWNDPARENT,$ PLUGINSDIR

nsi脚本中可用于调试的系统函数有MessageBoxes,DetailPrint,Dumpstate。

nsi脚本的编译器指令

nsi脚本的编译器指令主要指仅在编译时刻执行的命令。这些命令主要用来包含文件、条件化编译、定义常量、定义宏等。定义常量和宏是编译器指令最主要应用。

定义常量的示例:

!define VERSION "1.0.3"

Name "My Program $"

OutFile "My Program Installer - $.exe"

定义宏的示例:

!macro MyFunc UN

Function $MyFunc

Call $DoRegStuff

ReadRegStr HKLM Software\MyProgram key

DetailPrint

FunctionEnd

Modern UI

Modern UI是感观上模仿最新的Windows系统的界面风格,它由欢迎页面、结束页面和其他向导页面构成。

插件

nsi支持插件,通过插件可以方便的扩展NSIS安装程序的功能。NSIS插件是用C++,Delphi等语言编写的dll,在nsi脚本中调用nsi中的函数使用如下语法:

DLLName::FunctionName "参数1" "参数2" "参数3"

示例1:

nsExec::ExecToLog '"$\makensis.exe" /CMDHELP'

执行makensis.exe命令,显示该命令用法。

示例2:

InstallOptions::dialog "$PLUGINSDIR\test.ini"

人们在安装或打开一些程序的时候,会出现 NSIS Error 错误提示,这种情况很容易升态让人误会是系统出现了错误,或仅仅是该程序安装文件损坏的原因。

错误提示截图为:

截图

出错的文本:

图示

中文意思是:运行一个用Nullsoft Scriptable Install System (NSIS)建立的程序常会发生这种错误,起因可能是下载来的文件不完整,或存放该程序的磁盘区坏了,也可能因病毒。无论何种原因,建议你联系程序的作者,重新下载,再安装。或命令行中附加参数 /NCRC 试试安装(不推荐此法)。

NSIS 错误

你正使用的安装程序已经被破坏或不完整。这可能是由于损坏的磁盘,或是下载失败,或是病毒导致的结果。你可以联系本安装程序的程序员来获取新的软件拷贝。

解决思路:

1.尝试清空浏览器缓存,在IE选项中,清空IE临时文件。或使用清理专家丛枯百宝箱,清除系统垃圾文件,实现这个功能。

2.尝试禁用任何下载渗笑洞加速或下载工具,尝试使用IE另存为进行重新下载。

3.更新杀毒软件,并进行杀毒。出现NSIS错误,被感染型病毒破坏的可能性较大。推荐重启到带命令行的安全模式杀毒。

4.尝试关闭杀毒软件和网络防火墙。

5.使用磁盘扫描程序或chkdsk扫描并修复磁盘错误。

6.从另一台正常计算机重新下载安装包,再复制到曾出故障的电脑上。

7.还有一种极端的方法:单击开始,运行,输入CMD,进入命令行。浏览到NSIS安装文件路径,执行程序名.exe /ncrc,安装程序将不作自身校验,强制进行安装。

8.另外,也有网友说NSIS错误,与内存条故障有关。建议使用硬件检测程序检查内存条的性能。可以尝试拔下内存条,重插一次。

9.也有朋友是在中文系统安装英文软件遇到这个故障,将系统缺省语言修改为英文后,安装成功。另外,建议不要把安装源保存在中文路径,安装目标,也最好不使用中文。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12346323.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存