nsis是乙個功能強大的安裝解除安裝包製作工具,通過dll可以擴充套件很多功能,你也可以自定義乙個dll,以下是具體步驟:
1.1 新增對nsis庫的引用:
在hello.cpp中宣告對nsis庫的引用:
// hello.cpp : 定義 dll 的初始化例程。
//#include "stdafx.h"
#include "hello.h"
#include #include // 生成的dll放置在nsis\plugins下
// 專案屬性->配置屬性->鏈結器->輸入->忽略特定庫: libc.lib(解決無法開啟libc.lib的錯誤)
#include "nsis/pluginapi.h" // nsis plugin,需要拷貝nsis的庫檔案
#pragma comment(lib, "nsis/pluginapi.lib")
#define nsisapi extern "c" __declspec(dllexport) void __cdecl //c,避免nsis指令碼重定義函式名
1.2 完成乙個用來測試的方法:
/*
* 在nsis指令碼中呼叫方法myplugin::myfunction /nounload $2
* /nounload 表示呼叫完此方法後不解除安裝這個dll,用於儲存dll的資料
* hwndparent:安裝視窗的控制代碼
* stacktop:nsis傳入的引數堆疊, 通過popint/popstring 可以取出來
* extra:外掛程式裡面呼叫script的函式就需要用到這個
*/nsisapi testfunc(hwnd hwndparent, int string_size, char *variables, stack_t **stacktop, extra_parameters *extra)
}
2.新建乙個hello.nsi來測試我們的dll是否可以被呼叫成功
nsis指令碼:
outfile "test.exe"
section
hello::testfunc /nounload "hello nsis dll"
sectionend
編譯執行,呼叫成功效果如下:
自定義擴充套件點
外掛程式開發久了,難免遇到需要自定義擴充套件點的需求,那麼如何自定義擴充套件點呢?以編寫乙個快捷選單項為例,說明如下 假設終端使用者可通過如下配置來擴充套件快捷選單項 com.kdevn.test.mypopupmenus label mynewaction class com.kdevn.test...
NSIS 自定義頁面製作關閉功能
因工作需要要自定義nsis的安裝頁面,其中用到乙個功能。修改的是這個專案 在安裝完成後需要關閉安裝程式,博主用的是findproc killproc實現的 如下 blob master 5 5.nsi l305 findprocdll findproc test.exe sleep 500 pop ...
NSIS 基於QT的自定義安裝介面
前段時間在做安裝程式時,需要自定義安裝介面代替傳統的打包工具製作的安裝介面。畢竟打包工具製作的介面定製麻煩也比較醜。我們可以使用第三方介面庫寫安裝程式,再在nsis指令碼中呼叫即可。採用nsis qt 製作安裝程式實際上就是使用qt製作安裝程式,而nsis僅僅將製作的安裝程式打包成乙個exe。1.核...