2013-08-15 9 views
5

Używam NSIS 2.46. Wtyczka, którą próbuję użyć, to wtyczka HwInfo (Official Link). Plik ZIP zawiera kilka kodów źródłowych i plik DLL. Umieściłem katalog HwInfo.dll w katalogu HwInfo.dll. Dodając wtyczkę, mam również !include plik .nsh, który HwInfo ma dostawę , a nie.Jak dodać wtyczkę DLL bez pliku NSH do mojego skryptu NSIS?

Próbuję analizować Harware klienta przed 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 

Ale linia HwInfo::GetCpuSpeed jest 'invalid command'.

Jak korzystać z wtyczki bez pliku NSH? Czy są jakieś alternatywy?

rozwiązany:

dodałem !addplugindir "${NSISDIR}\Plugins" na samym szczycie tego skryptu. Pomogło to w wykryciu katalogu HwInfo.dll wewnątrz katalogu HwInfo.dll w czasie kompilacji.

+0

Katalog wtyczek zmienił się w NSIS 3.0, ale ponieważ nie określiłeś wersji, zakładam, że używasz NSIS 2.46 ... – Anders

Odpowiedz

11

Nie wszystkie wtyczki mają plik .nsh, ale strona wiki zwykle mówi, jak używać konkretnej wtyczki.

Po uruchomieniu makensis /V4 yourscript.nsi wyświetli listę wszystkich wtyczek i funkcji, które eksportują, jeśli wtyczka nie znajduje się na liście, prawdopodobnie nie znajduje się w poprawnym katalogu. Upewnij się, że można umieścić go w odpowiednim katalogu lub użyj !addplugindir ...

+1

Dziękuję. Dodałem '! Addplugindir" $ {NSISDIR} \ Plugins "' na samej górze skryptu i działało jak czar! –

6

Wiem, że to pytanie ma odpowiedź zaakceptowana, ale dla informacji dla osób korzystających NSIS v3.x:

Folder plugin ma teraz dwa podfoldery, jeden dla ANSI i jeden dla UNICODE, więc musisz skopiować swoje wtyczki do ${NSISDIR}\Plugins\x86-ansi\ i ${NSISDIR}\Plugins\x86-unicode\ dla wersji ANSI i UNICODE bibliotek DLL wtyczki.

Zgaduję, że jeśli korzystasz z 64-bitowego portu NSIS, będziesz miał także podfoldery \x64-ansi\ i \x64-unicode, ale nie sprawdziłem tego specjalnie.

+0

Co jeśli wtyczka ma tylko jedną bibliotekę dll? Skąd wiemy, czy to ANSI czy UNICODE? –

+1

Musiałbyś sprawdzić twórcę wtyczki. Nie jest to łatwe do odróżnienia od samego pliku. –

Powiązane problemy