2013-08-15 10 views
5

私はNSIS 2.46を使用しています。私が使用しようとしているプラ​​グインは、HwInfoプラグイン(Official Link)です。 ZIPファイルには、いくつかのソースコードとDLLファイルが付属しています。私はHwInfo.dll\NSIS\Pluginsディレクトリに入れました。プラグインを追加するときは、.nshファイルも!includeとします。これは、HwInfoがではなく、を提供します。私のNSISスクリプトにNSHファイルのないDLLプラグインを追加するには?

私はinstalling-

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 

前に、クライアントのharwareを分析しようとしている。しかしラインHwInfo::GetCpuSpeed'invalid command'です。

NSHファイルなしでプラグインを使用するにはどうすればよいですか?そして、何か別の選択肢がありますか?

は解決:

を私は、このスクリプトの最上部に!addplugindir "${NSISDIR}\Plugins"を追加しました。これによりコンパイル時にHwInfo.dll\NSIS\Pluginsディレクトリ内に検出されました。

+0

NSIS 3.0ではプラグインディレクトリが変更されましたが、バージョンを指定していないので、NSIS 2.46を使用していると仮定しています。 – Anders

答えて

11

すべてのプラグインに.nshファイルがあるわけではありませんが、wikiページには通常、特定のプラグインの使用方法が表示されます。

makensis /V4 yourscript.nsiを実行すると、すべてのプラグインとそれらがエクスポートする関数がリストされます。プラグインがリストにない場合は、おそらく正しいディレクトリにありません。

プラグインフォルダは、今持っている:私はこの質問には受け入れ答えを持っていますが、NSISのv3.xのを使っている人のための情報については知っている...あなたは正しいディレクトリに入れたり!addplugindirを使用してください

+1

ありがとうございます。私は '!addplugindir" $ {NSISDIR} \ Plugins "をスクリプトの最上部に追加しました。それは魅力的でした! –

6

を作ります2つのサブフォルダ、ANSI用とUNICODE用の2つのサブフォルダがあります。プラグインdllのANSIとUNICODEバージョンの場合はそれぞれ${NSISDIR}\Plugins\x86-ansi\${NSISDIR}\Plugins\x86-unicode\にプラグインをコピーする必要があります。

64ビットのNSISポートを使用しているとすれば、\x64-ansi\\x64-unicodeのサブフォルダもありますが、特に確認していません。

+0

プラグインにDLLが1つしかない場合はどうなりますか?それがANSIかUNICODEかどうかはどのようにわかりますか? –

+1

プラグインの作成者に確認する必要があります。ファイル自体から伝えるのは容易ではありません。 –

関連する問題