按照 NSIS 帮助文档的说法,要构建 NSIS 首先安装 Python 和 SCons。
1、从NSIS 官方网站 http://sourceforge.net/projects/nsis/files/ 下载 NSIS 2.46 的源代码 zip 包,解压到 C:\nsis-2.46-src,此次我直接从NSIS的repository checkout源码包。
2、从Python 官方网站 http://www.python.org/getit/ 下载 Python 2.7.6 安装到 C:\dev\Python27,将此路径添加到系统 PATH 环境变量。
3、从SCons 官方网站 http://sourceforge.net/projects/scons/files/ 下载 scons-2.3.0-setup 安装(自动默认到 Python 的子目录),将路径 C:\dev\Python27\Scripts 添加到系统 PATH 环境变量。
4、由于 NSIS 的 Menu 采用 wxWidgets 编写,因此去 wxWidgets 官方网站 http://www.wxwidgets.org/downloads/ 下载 wxWidgets-2.9.5.zip解压到 C:\dev\wxWidgets。新建环境变量 WXWIN,值为该路径 C:\dev\wxWidgets
5、在进行下一步之前,确定你的系统有MSVC的编译环境,我此次编译使用的是msvc010。
6、进入 NSIS 的 Menu 目录,C:\nsis-2.46-src\Contrib\NSIS Menu\wx,Visual Studio Command Prompt (2010)命令行下启动 wxbuild.bat,先编译 wxWidgets程序,等待 10 分钟。
7、进入 NSIS 目录 C:\nsis-2.46-src\Contrib\NSIS Menu\,修改 SConscript文件,以下是这个文件的patch
--- C:/SConscript 星期三 四月 10 17:13:20 2013
+++ C:/nsis-2.46-src/Contrib/NSIS Menu/SConscript 星期四 十一月 28 18:29:30 2013
@@ -13,17 +13,27 @@ resources = Split("""
rc = 'nsismenu/nsismenu.rc'
libs = Split("""
- advapi32
- comctl32
+ kernel32
+ user32
gdi32
+ comdlg32
+ winspool
+ winmm
shell32
- user32
+ comctl32
+ ole32
+ oleaut32
+ uuid
+ rpcrt4
+ advapi32
+ wsock32
+ wininet
""")
if env['UNICODE']:
- libs.append(["wxbase29u", "wxmsw29u_core", "wxmsw29u_html"])
+ libs.append(["wxbase29u", "wxmsw29u_core", "wxmsw29u_html", "wxpng", "wxjpeg", "wxtiff", "wxzlib", "wxexpat"])
else:
- libs.append(["wxbase29", "wxmsw29_core", "wxmsw29_html"])
+ libs.append(["wxbase29", "wxmsw29_core", "wxmsw29_html", "wxpng", "wxjpeg", "wxtiff", "wxzlib", "wxexpat"])
html = Split("""
#Menu/index.html
8、回到 NSIS 主目录 C:\nsis-2.46-src,撰写一个编译脚本build.bat:
set ZLIB_W32=C:\dev\zlib-1.2.8
set WXWIN=C:\devfolder\wxWidgets-2.9.5
set MSVS_VERSION = 10.0
scons NSIS_CONFIG_LOG=yes NSIS_MAX_STRLEN=8192 dist-zip
pause
Visual Studio Command Prompt (2010)命令行下启动build.bat:等待 5-10 分钟。在 NSIS主目录下会躺着一个 zip 包,就是它了。