2025年3月24日 星期一 甲辰(龙)年 月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 行业软件

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

时间:03-17来源:作者:点击数:53

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 "https://soft.cdsy.xyz"
  • !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下的可执行的安装程序。

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门