NSIS对插件的调用

NSIS 支持可从脚本里调用插件。插件是由 C, C++, Delphi 或其它程序语言写的一些 DLL 文件,可以提供基于 NSIS 的更多增强型代码。

一个插件的调用像这样:

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

每一个插件的函数由它的参数有它自己的要求,一些不需要,一些则需要足够的参数。例子:

nsExec::ExecToLog '"${NSISDIR}makensis.exe" /CMDHELP'
 InstallOptions::dialog "$PLUGINSDIRtest.ini"
 NSISdl::download http://download.nullsoft.com/winamp/client/winamp291_lite.exe $R0

NSIS 可识别的插件会列表于编译器输出的顶部。 NSIS 会在 NSIS 目录下的 插件文件夹 里查找插件并且会列出所有可用的函数。你也可以使用 !addplugindir 来告诉 NSIS 在另外的目录里查找插件。

NSIS 发布时已经包含了很多的插件。 InstallOptions 是一个受欢迎的插件,它允许你创建自定义页面,并与 NSIS 页面命令(查看 页面) 结合。 Startmenu 插件 提供了一个可允许用户选择一个开始菜单目录的页面。这里还有许多不同用途的插件,查看 Docs 文件夹 和 实例文件夹 里的帮助文件和例子。你也可以在线查找更多的插件: NSIS Wiki。

你也可以创建你自己的插件。C/C++ 和 Delphi 头文件都是可用的,基础的插件编写例子你可以查看 插件例子。包括插件的源代码你也可以在源代码软件包中找到。

NSIS的插件实质上是一写简单的DLL,只要是DLL里函数是如下形式的都被认为是合法的插件:

__declspec(dllexport) void __cdecl TestFunc(HWND hwndParent, int string_size,

char *variables, stack_t **stacktop)

其中int string_size,和char * variables相当于main函数的int argc,和char argc[]。而具体的参数是通过**stacktop进行传递,在NSIS脚本中使用push命令将相应的变量压到堆栈中,这个函数再做相应的处理。将生成的DLL放入NSIS的plugins目录下,在脚本中调用DLL名::函数名既可。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容