NSIS 内置了很多指令,这些指令可以满足我们基本需求,但难免会遇到 NSIS 没有内置的功能,如进程操作,后台运行(即多线程),7z 压缩等等,这个时候我们就需要借助第三方插件来满足我们所需要的功能了。

一、插件获取

NSIS 官方收录插件的网址是:

http://nsis.sourceforge.net/Category:Plugins

我们可以在这个网站上查找和下载我们需要的插件,该网站上针对每个插件都提供了比较完善的示例。

二、插件使用

NSIS 插件以 dll 的形式存在,我们以KillProc插件为例(从名字上可以看出该插件提供杀进程的功能),我们下载下来的一般是压缩包,解压之后找到对应插件 dll 文件,如KillProc.dll文件。

使用步骤如下:

  1. 将 dll 文件拷贝到 NSIS 安装目录下的Plugins\x86-ansi目录(Unicode 插件需要拷贝到Plugins\x86-unicode目录)。

  2. 在官方文档上找到该插件所提供的函数,以及函数的参数传递形式、返回值形式。
    NSIS 中插件函数的参数传递形式有 2 种形式:

    • 使用$0 ~ $9$R0 ~ $R9来传递。
    • 使用堆栈来传递。
  3. 在 NSIS 脚本中按照函数声明的形式来调用,需要在函数名前加上 dll 名称(不需要.dll 后缀),如KillProc::KillProcesses

1
2
3
4
5
6
7
8
9
10
11
Section
StrCpy $0 "foo.exe" # 变量赋值

KillProc::KillProcesses
StrCmp $1 "-1" wooops

wooops:
Abort

completed:
SectionEnd