如何将没有NSH文件的DLL插件添加到我的NSIS脚本中?

Sam*_*pta 5 dll plugins nsis

我正在使用NSIS 2.46.我试图使用的插件是HwInfo插件(官方链接).ZIP文件附带一些源代码和DLL文件.我把HwInfo.dll内部\NSIS\Plugins目录.当添加一个插件,我应该!include.nsh文件以及,这HWINFO并没有提供.

我正在尝试在安装之前分析客户端的硬件 -

Function .onInit
HwInfo::GetCpuSpeed

StrCpy $R0 $0
MessageBox MB_OK "You have a $0GHz CPU"

HwInfo::GetSystemMemory
StrCpy $0
MessageBox MB_OK "You have $0MB of RAM"
FunctionEnd
Run Code Online (Sandbox Code Playgroud)

但是这条线HwInfo::GetCpuSpeed'invalid command'.

如何在没有NSH文件的情况下使用插件?还有其他选择吗?

解决了:

!addplugindir "${NSISDIR}\Plugins"在这个脚本的顶部添加了.这有助于在编译时检测HwInfo.dll内部\NSIS\Plugins目录.

And*_*ers 11

并非所有插件都有.nsh文件,但维基页面通常会告诉您如何使用特定插件.

如果你运行makensis /V4 yourscript.nsi它会列出所有插件和它们导出的函数,如果你的插件不在列表中,它可能不在正确的目录中.确保将其放在正确的目录中或使用!addplugindir...


Nic*_*haw 6

我知道这个问题有一个公认的答案,但对于使用NSIS v3.x的人的信息:

该插件文件夹现在有两个子文件夹,一个是ANSI,一个用于UNICODE,所以你需要你的插件复制到${NSISDIR}\Plugins\x86-ansi\${NSISDIR}\Plugins\x86-unicode\为ANSI和Unicode版本的插件分别的DLL.

我猜,如果你使用64位的NSIS端口,你必须\x64-ansi\\x64-unicode子文件夹太多,但我还没有检查了明确.