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

时间:2013-08-15 17:54:05

标签: plugins dll nsis

我正在使用NSIS 2.46。我试图使用的插件是 HwInfo 插件(Official Link)。 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

HwInfo::GetCpuSpeed行是'invalid command'

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

解决:

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

2 个答案:

答案 0 :(得分:11)

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

如果您运行makensis /V4 yourscript.nsi,它将列出所有插件及其导出的功能,如果您的插件不在列表中,则可能不在正确的目录中。确保将其放在正确的目录中或使用!addplugindir ...

答案 1 :(得分:6)

我知道这个问题有一个已接受的答案,但有关使用 NSIS v3.x 的人的信息:

插件文件夹现在有两个子文件夹,一个用于ANSI,另一个用于UNICODE,因此您需要将插件复制到${NSISDIR}\Plugins\x86-ansi\${NSISDIR}\Plugins\x86-unicode\以获取ANSI和UNICODE版本分别是插件dll。

我猜你是否使用64位NSIS端口,你也有\x64-ansi\\x64-unicode个子文件夹,但我没有具体检查过。