Bài viết này sẽ hướng dẫn các bạn tự tạo trình cài đặt cho phần mềm và ứng dụng với phần mềm NSIS để đóng gói nhanh chóng theo kịch bản.
Giới thiệu sơ qua về NSIS (Nullsoft Scriptable Install System) được phát triển bởi Nullsoft (cha đẻ của Winamp) phát hành lần đầu vào năm 2002. Đây là phần mềm tạo ra trình cài đặt dựa trên script-driven dành cho Microsoft Windows và được hỗ trợ bởi Nullsoft. Nó được nhiều công ty lớn sử dụng như Google, Ubisoft, McAfee, v.v.
Để chuẩn bị đóng gói phần mềm, trước tiên bạn cần có sẵn chương trình mà bạn đã build (chẳng hạn chương trình đã build ra thư mục output, bin,v.v). Tiếp theo, các bạn làm theo hướng dẫn sau:
Bước 1: Mở thư mục Documents (This PC->Documents) trên PC và tạo thư mục NSIS
Bước 2: Từ thư mục NSIS tạo thư mục mang tên chương trình hoặc ứng dụng của bạn
Bước 3: Từ thư mục “tên chương trình“ mà bạn đã tạo, bạn cần tạo 2 thư mục tên lần lượt là: app, assets và 2 tập tin license.txt và setup.nsi.
Bước 4: Sao chép đầy đủ tập tin mà phần mềm mà bạn build vào trong thư mục app. Chẳng hạn, bên dưới là chương trình tôi đã sao chép vào thư mục app.
Bước 5: Trong thư mục assets, bạn tạo 2 tệp ảnh .bmp bao gồm head.bmp (150×57 pixels) và welcome.bmp (164×314 pixels). Hai tệp này sẽ được sử dụng trong trình cài đặt, bạn có thể tạo nó bằng Paint và lưu tệp tin .bmp với định dạng 24-bit.
Tập tin welcome.bmp sẽ được sử dụng khi bắt đầu trình cài đặt:
Tập tin head.bmp sẽ nằm trên đầu trình cài đặt
Ngoài ra, trong thư mục assets bạn cũng có thể dán tập tin icon (.ico) của phần mềm vào đây.
Đây là kết quả sau khi tôi đã tạo hai tệp .bmp
Bước 6: Mở tập tin license.txt và soạn nội dung license cho phần mềm hoặc ứng dụng của bạn.
Bước 7: Đây là bước quan trọng nhất, bạn dung Notepad, Notepad++ hoặc bất kì trình soạn thảo nào khác và mở tập tin setup.nsi lên. Sau đó bạn copy script bên dưới và dán vào setup.nsi của bạn.
Để giảm thiểu thời gian để bạn tạo trình cài đặt nên mình đã soạn sẵn script bên dưới để bạn thực hiện nhanh hơn.
Unicode True ;-------------------------------- ; Includes !include "MUI2.nsh" !include "logiclib.nsh" !include "FileFunc.nsh" ;-------------------------------- ; Custom defines !define NAME "AgsmentIII" !define APPFILE "AgsmentIII.exe" !define VERSION "1.0.0" !define SLUG "${NAME} v${VERSION}" ;-------------------------------- ; General Name "${NAME}" OutFile "${NAME} Setup.exe" InstallDir "$PROGRAMFILES\${NAME}" InstallDirRegKey HKCU "Software\${NAME}" "" RequestExecutionLevel admin ;-------------------------------- ; UI ;!define MUI_ICON "assets\captura.ico" !define MUI_HEADERIMAGE !define MUI_WELCOMEFINISHPAGE_BITMAP "assets\welcome.bmp" !define MUI_HEADERIMAGE_BITMAP "assets\head.bmp" !define MUI_ABORTWARNING !define MUI_WELCOMEPAGE_TITLE "${SLUG} Setup" ;-------------------------------- ; Pages ; Installer pages !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "license.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ; Set UI language !insertmacro MUI_LANGUAGE "English" ;-------------------------------- ;-------------------------------- ; Section - Install App Section "-hidden app" SectionIn RO SetOutPath "$INSTDIR" File /r "app\*.*" WriteRegStr HKCU "Software\${NAME}" "" $INSTDIR WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;-------------------------------- ; Section - Shortcut Section "Desktop Shortcut" DeskShort CreateShortCut "$DESKTOP\${NAME}.lnk" "$INSTDIR\${APPFILE}" CreateShortcut "$SMPROGRAMS\${NAME}.lnk" "$INSTDIR\${APPFILE}" SectionEnd ;-------------------------------- ; Descriptions ;Language strings LangString DESC_DeskShort ${LANG_ENGLISH} "Create Shortcut on Dekstop." ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${DeskShort} $(DESC_DeskShort) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ; Remove empty parent directories Function un.RMDirUP !define RMDirUP '!insertmacro RMDirUPCall' !macro RMDirUPCall _PATH push '${_PATH}' Call un.RMDirUP !macroend ; $0 - current folder ClearErrors Exch $0 ;DetailPrint "ASDF - $0\.." RMDir "$0\.." IfErrors Skip ${RMDirUP} "$0\.." Skip: Pop $0 FunctionEnd ;-------------------------------- ; Section - Uninstaller Section "Uninstall" ;Delete Shortcut Delete "$DESKTOP\${NAME}.lnk" # second, remove the link from the start menu Delete "$SMPROGRAMS\${NAME}.lnk" ;Delete Uninstall Delete "$INSTDIR\Uninstall.exe" ;Delete Folder RMDir /r "$INSTDIR" ${RMDirUP} "$INSTDIR" DeleteRegKey /ifempty HKCU "Software\${NAME}" SectionEnd
Bước 8: Sau khi đã sao chép và dán mã trên vào setup.nsi. Bây giờ cần tiến hành sửa các thành phần quan trọng trong kịch bản trên cho phù hợp với chương trình của bạn.
Nhìn vào ảnh bên dưới, tại khu vực 1 bạn chỉ cần sửa 3 thành phần NAME, APPFILE, vầ VERSION.
Trong đó:
- NAME: Là tên trình cài đặt của bạn, đây cũng là tạo ra khi thi tạo Shortcut.
- APPFILE: Là tên tệp tin thực thi chương trình của bạn trong thư mục app bạn đã sao chép.
- VERSION: Là mã phiên bản cho trình cài đặt hoặc phần mềm của bạn
Tiếp theo, tại khu vực số 2 bạn có thể để mặc định hoặc nếu bạn có thêm icon thì bỏ dấu “;” trước dòng MUI_ICON và sửa captura.ico thành tên icon của bạn.
Bước cuối cùng: Tiến hành dùng script này để đóng gói chương trình của bạn.
Đảm bảo máy tính bạn đã cài đặt phần mềm NSIS. Nếu chưa có bạn có thể tải về và cài đặt tại đây: https://nsis.sourceforge.io/Download
Sau khi đã cài đặt phần mềm NSIS, bạn tiến hành click chuột phải tại tệp tin setup.nsi và chọn Compile NSIS Script để đóng gói chương trình của bạn.
Dưới đây là kết quả sau khi đóng gói chương trình thành công, tệp tin cài đặt chương trình của bạn đã được tạo ra.
Bây giờ, bạn đã đóng gói phần mềm của mình thành công với NSIS. Việc còn lại là bạn dùng tệp tin này để xuất bản và phát hành đến người dùng. Mình chúc các bạn thành công!
Tải về thư mục NSIS DEMO tại đây: https://www.mediafire.com/file/6rjsb2e23nktrlt/NSIS.rar/file
Truy cập đường đãn sau để tìm hiểu kỹ hơn về Script trên: https://gist.github.com/nhannt201/b7b5f122c189557fda88ed6376844442
Bài viết này có tham khảo các nguồn sau:
- Gist. 2021. How to create a Windows application Installer with NSIS · GitHub. [ONLINE] Available at: https://gist.github.com/mattiasghodsian/a30f50568792939e35e93e6bc2084c2a. [Accessed 11 July 2021].
- NSIS Wiki. 2020. Simple tutorials – NSIS. [ONLINE] Available at: https://nsis.sourceforge.io/Simple_tutorials. [Accessed 11 July 2021].
- NSIS Wiki. 2021. Add uninstall information to Add/Remove Programs – NSIS. [ONLINE] Available at: https://nsis.sourceforge.io/Add_uninstall_information_to_Add/Remove_Programs. [Accessed 11 July 2021].
- to Wikimedia projects , C., 2003. Nullsoft Scriptable Install System – Wikipedia. [online] Available at: https://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System. [Accessed 11 July 2021].