在 Windows 下重編譯 NSIS 2.46 原始碼

來源:互聯網
上載者:User

最近在做一個用於 Java 的 NSIS 安裝程式,涉及到 CLASSPATH,無奈 -cl 的路徑太長,NSIS 的預設字串只有 1024 個位元組長。從 NSIS 的官方網站找了下,Special Build 除了 8192 之外,還有個 logset,沒有兩個的結合。不可能僅僅為了 8192 位元組放棄了按 install.log 的卸載功能,只好自己手動編譯 NSIS 的原始碼,來滿足自己的要求了。

按照 NSIS 協助文檔的說法,要構建 NSIS 首先要安裝 Python 和
SCons。以下是我的安裝步驟,如果您也有自己編譯的需要,可作為參考。

1、從 NSIS 官方網站 http://sourceforge.net/projects/nsis/files/ 下載 NSIS 2.46 的原始碼 zip 包,解壓到 C:\nsis-2.46-src。

2、從 Python 官方網站 http://www.python.org/getit/ 下載 Python 2.7.5 (不建議嘗試新版本,避免 SCons 不認)安裝到 C:\Python27,將此路徑添加到系統 PATH 環境變數。

3、從 從 SCons 官方網站 http://sourceforge.net/projects/scons/files/ 下載 scons-2.3.0-setup 安裝(自動預設到 Python 的子目錄),將路徑 C:\Python27\Scripts 添加到系統 PATH 環境變數。

4、由於 NSIS 的 Menu 採用 wxWidgets 編寫,因此去 wxWidgets 官方網站 http://www.wxwidgets.org/downloads/ 下載 wxWidgets-2.8.11.zip (不要嘗試 2.9 系列,否則就等著各種編譯警告各種編譯錯誤吧)解壓到 C:\wxWidgets。建立環境變數 WXWIN,值為該路徑 C:\wxWidgets。

5、在進行下一步之前,確定你的系統有 Visual C++ 6.0 的編譯環境,因為下一步將需要 nmake 編譯 NSIS Menu(我的機器上還有 VS2010 的環境,用它編譯會各種報錯),確定你的系統內容變數中有 VC 6.0 的 bin 目錄,比如  C:\Program Files\Microsoft Visual Studio\VC98\Bin。

6、進入 NSIS 的 Menu 目錄,C:\nsis-2.46-src\Contrib\NSIS Menu\wx,命令列下啟動 wxbuild.bat,先編譯 Menu 程式。

7、進入 NSIS 目錄 C:\nsis-2.46-src\SCons\Config,修改 ms 檔案,將涉及到 opt:nowin98 字樣所在的行全部用
# 注釋掉,一共有 4 行。

8、回到 NSIS 主目錄 C:\nsis-2.46-src,命令列下啟動命令:

scons NSIS_CONFIG_LOG=yes NSIS_MAX_STRLEN=8192 dist-zip

出去抽根煙,等待 5-10 分鐘。在 NSIS 主目錄下會躺著一個 zip 包,就是它了。

9、將這個 zip 包裡面的 makensis.exe (注意不是 makensisw.exe)和 Stubs 檔案夾拷出來,這就是你最終需要的檔案了。把它們扔到你的 NSIS 目錄覆蓋同名檔案,收工。可以開始編譯你的 NSIS 安裝指令碼了。

注意事項:

A、Scons 安裝好了、添加到環境變數之後,命令列下啟動 Scons 會報錯:

scons: *** No SConstruct file found.File "C:\Python27\Lib\site-packages\scons-2.3.0\SCons\Script\Main.py", line 905, in _main

別緊張,這是因為你命令列的當前路徑下沒有 SConstruct 檔案,Scons 的思路貌似不允許你沒事空敲檔案名稱玩。

B、按照 Microsft 的說法,opt:nowin98 編譯選項在 VS2005 起就已經取消了。但即便是採用 VC 6.0 編譯,依然會報錯,所以需要注釋掉。

C、你也可以在第 8 步中指定命令列打成安裝包直接安裝到指定路徑

scons PREFIX="C:\Program Files\NSIS" install

但不建議這麼做。

D、預設的 NSIS 包缺少很多外掛程式,可以去
http://nsis.sourceforge.net/Category:Plugins 找到很多有用的東東。

註:部分問題的解決參考了 http://forums.winamp.com/archive/index.php/t-277283.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.