2013-08-15 21 views
5

Sto utilizzando NSIS 2.46. Il plug-in che sto tentando di utilizzare è il plug-in HwInfo (Official Link). Il file ZIP viene fornito con alcuni codici sorgente e un file DLL. Inserisco lo HwInfo.dll nella directory \NSIS\Plugins. Quando aggiungo un plug-in, dovrei !include il file .nsh, che HwInfo fa non fornitura.Come aggiungere un plugin DLL senza file NSH nel mio script NSIS?

sto cercando di analizzare harware del cliente prima di 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 

Ma la linea è HwInfo::GetCpuSpeed'invalid command'.

Come si utilizza un plug-in senza un file NSH? E ci sono alternative?

risolto:

ho aggiunto !addplugindir "${NSISDIR}\Plugins" al vertice di questo script. Questo ha aiutato a rilevare HwInfo.dll nella directory \NSIS\Plugins in fase di compilazione.

+0

La directory del plug-in modificata in NSIS 3.0 ma poiché non è stata specificata una versione presumo che si stia utilizzando NSIS 2.46 ... – Anders

risposta

11

Non tutti i plug-in hanno un file .nsh ma la pagina wiki di solito ti dice come usare un plugin specifico.

Se si esegue makensis /V4 yourscript.nsi verranno elencati tutti i plug-in e le funzioni che esportano, se il proprio plug-in non è presente nell'elenco probabilmente non si trova nella directory corretta. Assicurati di mettere nella directory corretta o utilizzare !addplugindir ...

+1

Grazie. Ho aggiunto '! Addplugindir" $ {NSISDIR} \ Plugins "' all'inizio della sceneggiatura e ha funzionato come un incantesimo! –

6

So che questa domanda ha una risposta accettata, ma per informazioni per le persone che utilizzano NSIS v3.x:

La cartella plugin ha ora due sottocartelle, una per ANSI e una per UNICODE, quindi è necessario copiare i plug-in in ${NSISDIR}\Plugins\x86-ansi\ e ${NSISDIR}\Plugins\x86-unicode\ rispettivamente per le versioni ANSI e UNICODE delle DLL di plugin.

Suppongo che se si utilizza la porta NSIS a 64 bit, si avranno anche le sottocartelle \x64-ansi\ e \x64-unicode, ma non l'ho verificato specificamente.

+0

Cosa succede se il plugin ha solo una dll? Come facciamo a sapere se è ANSI o UNICODE? –

+1

Dovresti controllare con il creatore del plugin, immagino. Non è facile da capire dal file stesso. –