NSIS 之初体验 制作打印机i5100windows安装程序

1.简介

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS 的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。

2.NSIS下载地址

https://nsis.sourceforge.io/Download

3.运行NSIS程序,选择Compile nsi scripts,编写biims.nsi脚本.

# 本地程序安装脚本

!define PRODUCT_NAME "BIIMS"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_WEB_SITE "http://cbd.bnu.edu.cn/console"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
SetCompressor /SOLID lzma
SetCompressorDictSize 32

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"

; MUI
!define MUI_ABORTWARNING
!define MUI_UNABORTWARNING
; ----- 当前文件同级下的exe.ico图标 -----
!define MUI_ICON "exe.ico"
!define MUI_UNICON "exe.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.jpg"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "welcome.jpg"
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "鼠标移到组件上可查看相应说明"

; Welcome
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 开始菜单设置页面
# var ICONS_GROUP
#!define MUI_STARTMENUPAGE_NODISABLE
#!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${PRODUCT_NAME}"
#!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
#!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
#!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
#!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
#!define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_NAME}.exe"
#!define MUI_FINISHPAGE_RUN_NOTCHECKED ;默认不选中 '运行程序' 复选框
#!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Readme.txt"
#!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED ;默认不选中 '自述文件' 复选框
#!define MUI_FINISHPAGE_LINK "【某某某平台】"
#!define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}"
#!insertmacro MUI_PAGE_FINISH

; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
!insertmacro MUI_LANGUAGE "English"

; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-- 输入文件程序名 --
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails hide ;设置是否显示安装详细信息
ShowUnInstDetails hide
BrandingText "作者:路飞"

Section "!主程序" SEC01
SectionIn RO ;必选组件灰色
  SetOutPath "$INSTDIR"
  SetOverwrite on
  File "Readme.txt"
  File "TSCLIB.dll"
  File "TSCLIB.lib"
  File "biims.exe"
  File /r "jre"


; 创建开始菜单快捷方式
;  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;  CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"
;  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
;  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"
;  !insertmacro MUI_STARTMENU_WRITE_END
SectionEnd

; 安装.NET Framework
;Section "Microsoft .NET Framework 2.0" SEC02
;  File "DotNet.exe"
;  ExecWait '"DotNet.exe" /q:a /c:"install.exe /q"'
;SectionEnd

; Section -AdditionalIcons
;   !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
;   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\项目主页.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
;   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\卸载.lnk" "$INSTDIR\uninst.exe"
;   !insertmacro MUI_STARTMENU_WRITE_END
; SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PRODUCT_NAME}.exe"
  WriteRegStr ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_NAME}.exe"
  WriteRegStr ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
SectionEnd


# 写注册表,自定义网络协议
#Section -Post
#  WriteRegStr HKCR "biims" "" "URL:AutoHotKey biims Protocol"
#  WriteRegStr HKCR "biims" "URL Protocol" ""
#  WriteRegStr HKCR "biims\DefaultIcon" "" "biims.exe,1"
#  WriteRegStr HKCR "biims\shell\open\command" "" "$INSTDIR\biims.exe %1"
#SectionEnd

#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#

Section "i5100-300打印机驱动" SEC02
  SetOutPath "$INSTDIR"
  SetOverwrite on
  File /r "i5100"
  SetOutPath "$INSTDIR\i5100\Installer"
  ExecWait '"BradyInstallerSetup.exe" /q'
  SetOutPath "$INSTDIR"
SectionEnd

#Section "BBP12打印机驱动" SEC03
# SetOutPath "$INSTDIR\"
# SetOverwrite on
#  File /r "bbp12"
#  SetOutPath "$INSTDIR\bbp12"
#  ExecWait '"DriverWizard.exe" /q'
#  SetOutPath "$INSTDIR"
#SectionEnd



; 区段组件描述
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${
    
    SEC01} "必备组件"
  !insertmacro MUI_DESCRIPTION_TEXT ${
    
    SEC02} "项目使用i5100-300打印机打印防冻标签,如果确认已经安装,则不必勾选。"
  !insertmacro MUI_DESCRIPTION_TEXT ${
    
    SEC03} "项目使用BBP12打印机打印普通标签,如果确认已经安装,则不必勾选。"

!insertmacro MUI_FUNCTION_DESCRIPTION_END

/******************************
 *  以下是安装程序的卸载部分  *
 ******************************/

Section Uninstall
  ; !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
  Delete "$INSTDIR\uninst.exe"

;  Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
  
;  SetShellVarContext current ;当前用户开始菜单
;  Delete "$SMPROGRAMS\$ICONS_GROUP\卸载.lnk"
;  Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk"
;  Delete "$SMPROGRAMS\$ICONS_GROUP\欢迎访问作者主页.lnk"
;  RMDir /r "$SMPROGRAMS\$ICONS_GROUP"
;    SetShellVarContext all ;全部用户开始菜单
;  Delete "$SMPROGRAMS\$ICONS_GROUP\卸载.lnk"
;  Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME}.lnk"
;  Delete "$SMPROGRAMS\$ICONS_GROUP\欢迎访问作者主页.lnk"
  
  ; RMDir /r "$SMPROGRAMS\$ICONS_GROUP"

  RMDir /r "$INSTDIR"

  DeleteRegKey ${
    
    PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  DeleteRegKey HKCR "biims"
  SetAutoClose false
SectionEnd

#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
  Abort
FunctionEnd

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd

4.由于脚本自定义加载一些了文件,所以要将exe.ico、Readme.txt、welcome.jpg、TSCLIB.dll、TSCLIB.lib、jre文件目录、i5100驱动包、以及由launch4j生成的biims.exe程序复制到与biims.nsi脚本文件同级目录下,编译后会在当前文件下生成Setup.exe可运行的windows下的可执行的安装程序。

在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_40974235/article/details/120282128