Hướng dẫn đóng gói phần mềm với NSIS (Nullsoft Scriptable Install System)

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.

Giao diện NSIS bản mới nhất 2020

Để 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, assets2 tập tin license.txt và setup.nsi.

Sau khi thực hiện 3 bước trên, thư mục của bạn sẽ có dạng như thế này. Trong ảnh “AgsmentIII” là tên chương trình của bạn.

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.

Sao chép chương trình của bạn vào trong 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)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.

head.bmp (150×57 pixels) và welcome.bmp (164×314 pixels)

Tập tin welcome.bmp sẽ được sử dụng khi bắt đầu trình cài đặt:

welcome.bmp sử dụng cho trình cài đặt

Tập tin head.bmp sẽ nằm trên đầu trình cài đặt

head.bmp sử dụng cho 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

2 tệp ảnh .bmp

Bước 6: Mở tập tin license.txt 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

Phần mềm NSIS

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.

Đóng gói chương trình với NSIS

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.

Đóng gói chương trình thành công

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:

  1. 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].
  2. NSIS Wiki. 2020. Simple tutorials – NSIS. [ONLINE] Available at: https://nsis.sourceforge.io/Simple_tutorials. [Accessed 11 July 2021].
  3. 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].
  4. 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].

 

Bình luận Facebook