NSIS自定義dll擴充套件

2021-06-20 00:58:25 字數 1608 閱讀 9120

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.核...