2013-08-15 47 views
5

Tôi đang sử dụng NSIS 2.46. Plugin tôi đang cố gắng sử dụng là HwInfo trình cắm (Official Link). Tệp ZIP đi kèm với một số mã nguồn và tệp DLL. Tôi đặt HwInfo.dll vào trong thư mục \NSIS\Plugins. Khi thêm plugin, tôi cũng cần phải có !include tệp .nsh, mà HwInfo thực hiện không cung cấp.Làm thế nào để thêm một Plugin DLL mà không có tệp NSH vào tập lệnh NSIS của tôi?

Tôi đang cố gắng để phân tích harware của khách hàng trước khi 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 

Nhưng dòng HwInfo::GetCpuSpeed'invalid command'.

Làm cách nào để sử dụng plugin mà không có tệp NSH? Và có bất kỳ lựa chọn thay thế?

quyết:

tôi thêm !addplugindir "${NSISDIR}\Plugins" ở đầu rất của kịch bản này. Điều này giúp phát hiện HwInfo.dll bên trong thư mục \NSIS\Plugins lúc biên dịch.

+0

Thư mục plugin đã thay đổi trong NSIS 3.0 nhưng vì bạn không chỉ định phiên bản tôi giả sử bạn đang sử dụng NSIS 2.46 ... – Anders

Trả lời

11

Không phải tất cả plugin đều có tệp .nsh nhưng trang wiki thường cho bạn biết cách sử dụng một plugin cụ thể.

Nếu bạn chạy makensis /V4 yourscript.nsi, danh sách sẽ liệt kê tất cả các plugin và chức năng mà chúng xuất, nếu plugin của bạn không nằm trong danh sách, có thể không nằm trong đúng thư mục. Hãy chắc chắn rằng bạn đặt nó trong thư mục đúng hoặc sử dụng !addplugindir ...

+1

Cảm ơn bạn. Tôi đã thêm '! Addplugindir" $ {NSISDIR} \ Plugins "' vào đầu kịch bản và nó hoạt động như một nét duyên dáng! –

6

Tôi biết câu hỏi này có một câu trả lời được chấp nhận, nhưng đối với thông tin cho người sử dụng NSIS v3.x:

Các thư mục Plugin hiện có hai thư mục con, một cho ANSI và một cho UNICODE, vì vậy bạn cần phải sao chép các plugin của mình thành ${NSISDIR}\Plugins\x86-ansi\${NSISDIR}\Plugins\x86-unicode\ cho các phiên bản ANSI và UNICODE của các plugin plugin tương ứng.

Tôi đoán nếu bạn sử dụng cổng NSIS 64 bit, bạn cũng sẽ có các thư mục con \x64-ansi\\x64-unicode, nhưng tôi chưa kiểm tra cụ thể.

+0

Điều gì xảy ra nếu plugin chỉ có một dll? Làm thế nào để chúng ta biết đó là ANSI hay UNICODE? –

+1

Bạn sẽ phải kiểm tra với người sáng tạo của plugin, tôi đoán vậy. Nó không dễ dàng để nói từ các tập tin riêng của mình. –