分类: WINDOWS
2015-06-11 16:54:16
制作nsis安装包,至少需要一个编译程序,它将nsis脚本转化为安装包。
使用有语法高亮、代码折叠、大纲视图等特征的开发环境编辑和编译NSIS脚本是一个方便的方法。
增加了新特征(如文件下载、XML文件解析等)的插件能够在NSIS脚本中调用。
像脚本生成软件和转换软件等NSIS相关软件,它们能使得NSIS使用起来更加的容易。
制作nsis安装包,至少需要一个编译程序,它将nsis脚本转化为安装包。NSIS安装目录下的makensisw.exe是实际意义上的编译程序,它有一个可3种方式加载脚本的图形化界面,非常易于使用。安装了NSIS,要创建一个安装程序,可以拷贝脚本到文本编辑器中,保存成.nsi扩展名的文件,加载到makensisw编译程序中进行编译。
NSIS简介见:nsis安装包_NSIS简介
nsis2.46是最新版本。
或
使用有语法高亮、代码折叠、大纲视图等特征的应用程序编辑和编译NSIS脚本是一个方便的方法。
NSIS软件包包含基本的编译器界面,如果会经常地处理NSIS脚本可以下载更完善的开发环境。
这些集成开发环境提供方便的脚本和页编辑,汇编和生产。
NSIS开发环境在这里先只介绍HM NIS EDIT,初期的开发环境也将以HM NIS EDIT为主。
HM NIS EDIT 2.0.3是最好的Nullsoft脚本安装系统(NSIS)开源脚本编辑器。对于使用NSIS进行安装程序创建的专家和新手都是有帮助的。
除了具备一款出色纯文本编辑器的所有特征外,它还有:
插件支持
多文档界面
多国语言界面(英语、西班牙语、法语、波兰、捷克等等)
定制颜色和文本属性的语法高亮
内置浏览器
键入命令,鼠标滑过时提示语法
InstallOptions设计器
指引你浏览创建标准窗口安装程序所有步骤的向导(方便新手)
从模板文件中创建脚本
最常用命令的代码模板
鼠标滑过命令时显示基本的命令帮助
按F1显示高级的命令帮助
脚本编译后的基础安装程序试运行
或
插件是由一些 C、C++、Delphi或其它程序语言写的 DLL 文件,可以提供基于 NSIS的更多增强型代码。
插件通过添加新的函数来扩展应用程序的功能性。NSIS的插件有两种强制的文件类型(扩展名为.dll和.nsh)和一些信息类文件(readme.txt、license.txt、.chm类的帮助文件)。.dll扩展名的文件以动态连接库(DLL)的形式承载插件函数主体,.nsh扩展名的文件以纯文本形式承载函数的数据信息。
当 NSIS 编译器开始运行时NSIS会在 NSIS目录下的Plugins目录里查找插件并且会列出所有可用的函数,NSIS可识别的插件会列表于编译器输出的顶部。也可以使用!addPluginDir来告诉NSIS在另外的目录里查找插件。如果遇到有序的冒号如 fred::flintstone编译器将会作为关键字在该列表中查找。如果列表项列入了fred.dll并输出 flintstone则 NSIS 将会把 fred.dll文件打包到安装程序里。
当插件命令执行时 NSIS 将会解压所需的插件DLL文件到一个临时目录 ($PLUGINSDIR),把指定的参数全部压入(从右到左次序),然后执行DLL函数。如果指定了/NOUNLOAD选项则插件将不会卸载直到安装程序退出或下一次你使用该插件并不带 /NOUNLOAD参数。需要注意的是最后一次调用该插件的时候必须不能有/NOUNLOAD否则插件将不能从 $PLUGINSDIR里删除,而导致垃圾文件留在用户的机器里。
NSIS 发布时已经内置了一些插件。如,
InstallOptions 是一个受欢迎的插件,它允许你建立自定义的的页面,并与 NSIS的页面命令结合;
StartMenu.dll(开始菜单插件)提供了一个可允许用户选择一个开始菜单目录的页面;
等等。
还有许多不同用途的大量插件,查看 Contrib目录里的帮助文件和例子。
可以在线查找另外的插件,也可以创建你自己的插件。C、C++和 Delphi 头文件都是可用的,基础的插件编写例子你可以查看源代码包里的 Contrib/ExDLL,包括插件的源代码你也可以在源代码包里找到。
这里有115个NSIS插件,但NSIS在用的已发布插件不止这些,较全的列表在整理中,随后会补充进来。
由于nsis插件非常多且在使用nsis过程中帮助巨大,因此将使用一篇的篇幅介绍nsis的插件,在此不再赘述。
在下载和解压一个插件后需要接受许可协议(包含在license.txt文件里),且.dll插件文件务必放在NSIS安装目录子目录Plugins下,.nsh文件务必放在子目录Include下。
Dialogs插件安装实例
Dialogs插件分布在形式为ZIP存档格式的Dialogs.zip文件内,这个存档包含4类必须文件:dialogs.dll、defines.nsh、ZipDLL.dll、zipdll.nsh。ZipDLL.dll和zipdll.nsh是被Dialogs插件使用的ZipDll插件。假设你的NSIS安装目录是C:\Program Files\NSIS的话,所有的dll文件必须解压到C:\Program Files\NSIS\Plugins目录,所有的.nsh文件必须解压到C:\Program Files\NSIS\Include目录下。
一般插件的调用象下面这样:
InstallOptions::dialog "INI文件.ini"
所有的参数都压入堆栈(在这个例子,该插件函数仅需要一个参数)。还有一些插件不需要在堆栈里有任何参数,而其他的有可能需要几个或更多。
例:
nsExec::ExecToLog '"${NSISDIR}\makensis.exe" /CMDHELP'
InstallOptions::dialog "$PLUGINSDIR\test.ini"
NSISdl::download $R0
要使用插件命令你首先需要阅读插件附带的文档以了解该插件函数需要什么样的参数。
禁止插件卸载
如果你不希望在调用函数后就卸载该 DLL,你可以使用 /NOUNLOAD作为第一个参数。例如:
dll::function /NOUNLOAD "参数"
你也可以使用SetPluginUnload alwaysoff来避免每次使用相同插件都要写:/NOUNLOAD。
手动调用插件
如果你想调用一个用户硬盘或其他地方里的插件,你可以使用 CallInstDLL。几乎所有插件都提供了安装程序的泛函数,所以使用插件命令是一个简易的方法。使用 CallInstDLL对于你创建了插件并包含在你的应用程序里并被复制到安装目录里的情况来说非常有用。
像脚本生成软件和转换软件等NSIS相关软件,它们能使得NSIS使用起来更加的容易。
简介
相关软件有很多,如JEdit、Visual & Installer等,但这些软件在前期学习nsis时提供的帮助比较少,即便有帮助,有那么几款就够用了,在这里先不多做介绍,以后用到再详细介绍。