NSIS plugins are regular DLLs that export functions with typical def-files like this:
LIBRARY MY_NSIS_PLUGIN EXPORTS AddUser PRIVATE CreateHive PRIVATE ...
They should be put to “C:\Program Files\NSIS\Plugins\x86-ansi” directory for NSIS v3.x. From nsi-script their functions can be called like this:
Function MyFunc ... MY_NSIS_PLUGIN::CreateHive ... FunctionEnd
and can be tested with C++ code like this:
typedef bool (*CreateHiveFunc)(); int main() { auto h = ::LoadLibrary(L"C:\\Program Files\\NSIS\\Plugins\\x86-ansi\\MY_NSIS_PLUGIN.dll"); auto e = ::GetLastError(); FARPROC proc = GetProcAddress(h, "CreateHive"); e = ::GetLastError(); CreateHiveFunc func = (CreateHiveFunc)(proc); bool val = func(); return 0; }
Links: