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 onFile "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
; SectionEndSection -PostWriteUninstaller "$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打印机驱动" SEC02SetOutPath "$INSTDIR"SetOverwrite onFile /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_GROUPDelete "$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.onInitMessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2Abort
FunctionEndFunction un.onUninstSuccessHideWindowMessageBox 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下的可执行的安装程序。

NSIS 之初体验 制作打印机i5100windows安装程序相关推荐

  1. 我的Go+语言初体验--Go+之环境安装与程序编码初体验

    一.Go+ 简介 对于 Go+ 工程而言: Go+ 将支持所有 Go 功能(包括部分支持 cgo): Go+ 提供了更简单优雅的语法,比 Go 更接近自然语言: Go+ 易于学习,不必在一开始就处理工 ...

  2. 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置amp;总结

    一.前言及简单介绍 听到"派"或者是看到这幅图片.难免让你想到眼下大名鼎鼎的"树莓派". 而香蕉派(Banana Pi. 论坛上也有人称它香蕉皮)是一款国产的比 ...

  3. iOS7初体验(1)——第一个应用程序HelloWorld

    iOS7 Beta已经发布了,迫不及待地下载了iOS 7及Xcode 5并体验了一下.先做一个简单的Hello World看看都有哪些变化吧. 1. 启动Xcode5-DP: 2. 从菜单选择File ...

  4. 如何将spyder打包成exe_exe程序打包成安装文件,自己的程序制作成一键安装程序...

    我们自己编写的程序已经可以在本地运行了,如果要变成像qq那样的安装包该怎么做呢? 这里需要借助打包工具来进行,我使用的是VNISEdit软件,该软件免费且简单高效,下面来看下如何打包成安装程序. 1 ...

  5. Deepin系统初体验指南:从安装到开发环境配置

    深度操作系统(Deepin)是目前国内最流行和活跃的 Linux 发行版,一直以"免除新手痛苦.节约老手时间"为口号. 这篇文章落笔于 2020 年 10 月,此年,深之度正式发布 ...

  6. CentOS 初体验十三:yum 安装 tomcat

    转载请注明出处http://blog.csdn.net/zhaoyanjun6/article/details/79131856 本文出自[赵彦军的博客] 前言 对于一个新安装的 centos 系统来 ...

  7. CentOS 初体验三: Yum 安装、卸载软件

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78894974 本文出自[赵彦军的博客] 一:Yum 简介 Yum(全称为 Yell ...

  8. CentOS 初体验一:VMWare 安装 CentOS

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78785684 本文出自[赵彦军的博客] 一:安装 VMware 虚拟机 1.下载 ...

  9. mpvue初体验-用vue开发小程序

    写在前面 昨天晚上刚刚开源的mpvue引起了不少前端er们的注意,下图是一个简单的对比(感谢 @胡成全 为本文提供的对比图). 话不多说,我们现在感受一下如何使用mpvue开发小程序.(以下内容参照m ...

最新文章

  1. 360数科发布2020全年财报:全年收入上涨47.1%,科技为运营效率提供第一动力
  2. linux运行dock打包的镜像,Linux部署之Docker方式部署项目
  3. FZ35恒流电子负载检测测试
  4. FPGA详细芯片结构
  5. PHPExcel常用方法汇总
  6. 腾讯最大规模裁撤中层干部,让贤年轻人
  7. concat合并的数组会有顺序么_JS数组 Array
  8. java image类的值_关于在java中保存image类型的字段的问题
  9. 关于range方法,如果你觉得python很简单就错了
  10. remove()方法
  11. sizeof运算符运算结果小汇
  12. design php 如何使用ant_Ant Design Pro如何调用接口 | Ant Design Pro渲染数据 绑定数据...
  13. 微信小程序如何引用其他js文件
  14. 9款优秀的代码比对工具
  15. 《原神》游戏设计分析
  16. OpenCL优化案例研究 (4)
  17. 【Markdown 数学公式】markdown常用公式写法
  18. 七上八下猜数字_《脑筋急转弯》
  19. Cisco 2960交换机密码恢复
  20. 装X神器,让你的grafana看板变得炫酷起来

热门文章

  1. AS608光学指纹识别模块 智能锁/考勤门禁开发/指纹采集模块
  2. 串口调试助手 发送16进制与现实16进制数据
  3. 大学模电实验合集丨实验六 比例求和运算电路
  4. 【CQgame】[幸运方块 v1.1.3] [Lucky_Block v1.1.3]
  5. 洛谷P1314 聪明的质检员(二分)
  6. 使用 Sa-Token 解决 WebSocket 握手身份认证
  7. 计算机密码学试题,现代密码学试卷(含答案)
  8. MQTT构筑运营平台与游戏端的交互通道
  9. linux 服务器下安装Anaconda---(CentOS7)
  10. CMTS、EPON和EoC的封装方式比较