当前位置: 首页 > article >正文

NSIS 创建一键安装程序

nsis 安装redis 、mysql 、jdk navicat、 notepad++、

使用NSIS 创建一键安装程序 分为两步

  1. 下载 NSIS
  2. 编写 一键安装代码

1.16脚本

; 请求管理员权限运行安装程序
RequestExecutionLevel admin

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "矿压5.2一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"

SetCompressor lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库


; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "C:\Users\Administrator\Desktop\bitbug_favicon.ico"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

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

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

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

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Auto_Install.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show

; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"



; 安装 notepad 的部分
Section "Install notepad"
	; 设置 MySQL 的输出路径
	SetOutPath $INSTDIR\notepad

	; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
	; 复制 MySQL 免安装文件到安装目录
	File /r "notepadd\*.*"

	 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'

SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
	; 设置 Navicat15 的输出路径
	SetOutPath $INSTDIR\Navicat15

	; 假设你的 Navicat15 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
	; 复制 Navicat15 免安装文件到安装目录
	File /r "Navicat15\*.*"

	 ; 运行 Navicat15 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'

SectionEnd


; 安装 resp 的部分
Section "Install resp"
	; 设置 resp 的输出路径
	SetOutPath $INSTDIR\resp


	File /r "resp\*.*"

	 ; 运行 Navicat15 安装程序
    ExecWait '"$INSTDIR\resp\resp.exe" /s'

SectionEnd


; 安装函数
Function Kuangya
    
	; 设置 JDK 的输出路径
	SetOutPath $INSTDIR\prod-api

	; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
	; 复制 JDK 免安装文件到安装目录
	File /r "prod-api\*.*"


    ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
    
	 ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 服务。"


	 ; 启动 矿压5.2 服务
    ExecWait '"$SYSDIR\sc.exe" start ruoyi-admin'
    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 服务已成功安装并启动。"
FunctionEnd


; 安装节
Section "Kuangya"
    Call Kuangya
SectionEnd



; 安装函数
Function Kuangya_nginx
    
	; 设置 JDK 的输出路径
	SetOutPath $INSTDIR\nginx

	; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
	; 复制 JDK 免安装文件到安装目录
	File /r "nginx\*.*"


    ExecWait '$INSTDIR\nginx\nginx-server.exe install'
    
	 ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
	
	 ; 启动 矿压5.2 服务
    ExecWait '"$SYSDIR\sc.exe" start nginx-service'
    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 nginx 服务已成功安装并启动。"
FunctionEnd


; 安装节
Section "Kuangya_nginx"
    Call Kuangya_nginx
SectionEnd

1.15 redis 并启动安装脚本

; 请求管理员权限运行安装程序
RequestExecutionLevel admin

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"

SetCompressor lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库


; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

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

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

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

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Redis.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show


; 安装程序名称
Name "Redis 安装程序"
OutFile "RedisInstaller.exe"


; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"

; 安装部分
Section "安装 Redis"
    SetOutPath $INSTDIR\Redis
    ; 复制 Redis 文件(假设 Redis 安装文件在 RedisFiles 目录下)
    File /r "Redis\*.*"

    SetOverwrite ifnewer

    ; 安装 Redis 服务
    ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install "$INSTDIR\Redis\redis.windows-service.conf" --service-name "Redis" --loglevel verbose'
    ; 启动 Redis 服务
    ExecWait '"$SYSDIR\sc.exe" start Redis'
    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "Redis 服务已成功安装并启动。"
SectionEnd



安装jdk 脚本 免安装版jdk

; 安装 JDK 的部分
Section "Install JAVA"
	; 设置 JDK 的输出路径
	SetOutPath $INSTDIR\JAVA

	; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
	; 复制 JDK 免安装文件到安装目录
	File /r "JAVA\*.*"

	; 配置 JAVA_HOME 环境变量
	ExecWait 'setx JAVA_HOME "$INSTDIR\JAVA\jdk" /M'

	; 配置 PATH 环境变量
	; 首先获取当前的 PATH 环境变量
	ReadEnvStr $0 PATH
	StrCpy $1 "$INSTDIR\JAVA\jdk\bin"
	StrCpy $2 "$0;$1"
	ExecWait 'setx PATH "$2" /M'

	; 显示 JDK 安装完成消息
	MessageBox MB_OK "JDK 已安装,环境变量已配置。"
SectionEnd

exe 安装脚本


; 安装 notepad 的部分
Section "Install notepad"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\notepad

; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "notepad\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'


SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15

; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "Navicat15\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'


SectionEnd

jar 、 naginx 安装



; 安装函数
Function Kuangya
    
	; 设置 JDK 的输出路径
	SetOutPath $INSTDIR\prod-api

	; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
	; 复制 JDK 免安装文件到安装目录
	File /r "prod-api\*.*"


    ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
    
	 ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 服务。"


	 ; 启动 矿压5.2 服务
    ExecWait '"$SYSDIR\sc.exe" start ruoyi-admin'
    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 服务已成功安装并启动。"
FunctionEnd


; 安装节
Section "Kuangya"
    Call Kuangya
SectionEnd



; 安装函数
Function Kuangya_nginx
    
	; 设置 JDK 的输出路径
	SetOutPath $INSTDIR\nginx

	; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
	; 复制 JDK 免安装文件到安装目录
	File /r "nginx\*.*"


    ExecWait '$INSTDIR\nginx\nginx-server.exe install'
    
	 ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
	
	 ; 启动 矿压5.2 服务
    ExecWait '"$SYSDIR\sc.exe" start nginx-service'
    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 nginx 服务已成功安装并启动。"
FunctionEnd


; 安装节
Section "Kuangya_nginx"
    Call Kuangya_nginx
SectionEnd


以下为代码示例

; 请求管理员权限运行安装程序
RequestExecutionLevel admin

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "admin"

SetCompressor lzma

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

; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

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

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

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

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show











; 安装 MySQL 的部分
Section "Install MySql"
	; 设置 MySQL 的输出路径
	SetOutPath $INSTDIR\MySql

	; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
	; 复制 MySQL 免安装文件到安装目录
	File /r "MySql\*.*"

	; 配置 MYSQL_HOME 环境变量
	ExecWait 'setx MYSQL_HOME "$INSTDIR\MySql" /M'

	; 配置 PATH 环境变量
	ReadEnvStr $3 PATH
	StrCpy $4 "$INSTDIR\MySql\bin"
	StrCpy $5 "$3;$4"
	ExecWait 'setx PATH "$5" /M'

	; 显示 MySQL 安装完成消息
	MessageBox MB_OK "MySQL 已安装,环境变量已配置。"


	; 初始化 MySQL 数据目录
	ExecWait '"$INSTDIR\MySql\bin\mysqld" --initialize-insecure --datadir="$INSTDIR\data"'


	; 等待一段时间,确保 MySQL 服务启动成功(可根据实际情况调整等待时间)
	Sleep 5000


    ; 初始化数据库
    ExecWait '"$INSTDIR\MySql\bin\mysql.exe" -u root -p kdzt123456. < "$INSTDIR\MySql\Sql\kdzt.sql"'
    IfErrors errorOccurred success

    success:
        MessageBox MB_OK "数据库已成功初始化并执行 SQL 文件。"

    errorOccurred:
        MessageBox MB_ICONSTOP "初始化数据库或执行 SQL 文件时出现错误,请检查错误日志。"

noSQLFile:
    MessageBox MB_ICONSTOP "指定的 SQL 文件不存在。"


SectionEnd


; 安装节
Section "安装 Redis"
    ; 创建安装目录
	SetOutPath $INSTDIR\Redis

    ; 复制 Redis 可执行文件及相关文件
    File /r "Redis\*.*"
   
    SetOverwrite ifnewer

    ; 安装 Redis 服务
    SetOutPath $INSTDIR
    ExecWait '"$INSTDIR\Redis - windows - service - install.exe" --service - name "RedisService" --port 6379'
    ; 启动 Redis 服务
    ExecWait '"$SYSDIR\sc.exe" start RedisService'
SectionEnd



; 卸载节
Section "卸载 Redis"
    ; 停止 Redis 服务
    ExecWait '"$SYSDIR\sc.exe" stop RedisService'
    ; 卸载 Redis 服务
    ExecWait '"$INSTDIR\redis - windows - service - uninstall.exe" --service - name "RedisService"'
    ; 删除 Redis 安装目录
    RMDir /r $INSTDIR
SectionEnd

; 安装 notepad 的部分
Section "Install notepad"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\notepad

; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "notepadd\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'


SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15

; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "Navicat15\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'


SectionEnd



; 安装函数
Function Kuangya
    
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\prod-api

; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"


    ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
    IfErrors errorOccurred success

    success:
        MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 服务。"
        Goto endFunction

    errorOccurred:
        MessageBox MB_ICONSTOP "使用 使用WinSW 安装 矿压5.2 服务时出现错误,请检查错误日志。"


endFunction:
FunctionEnd


; 安装节
Section "Kuangya"
    Call Kuangya
SectionEnd



; 安装函数
Function Kuangya_nginx
    
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\nginx

; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"


    ExecWait '$INSTDIR\nginx\nginx-server.exe install'
    IfErrors errorOccurred success

    success:
        MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
        Goto endFunction

    errorOccurred:
        MessageBox MB_ICONSTOP "使用 使用WinSW 安装 矿压5.2 nginx 服务时出现错误,请检查错误日志。"


endFunction:
FunctionEnd


; 安装节
Section "Kuangya_nginx"
    Call Kuangya_nginx
SectionEnd

REdis

; 请求管理员权限运行安装程序
RequestExecutionLevel admin

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"

SetCompressor lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库





; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

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

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

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

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Redis.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show


; 安装程序名称
Name "Redis 安装程序"
OutFile "RedisInstaller.exe"


; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"

; 安装部分
Section "安装 Redis"
    ; 创建安装目录
    CreateDirectory $INSTDIR\Redis

    ; 复制 Redis 文件(假设 Redis 安装文件在 RedisFiles 目录下)
    File /r "Redis\*.*"
    SetOutPath $INSTDIR\Redis
    SetOverwrite ifnewer

    ; 复制 Redis 配置文件(假设 redis.conf 在脚本同级目录)
    File "Redis\redis.windows-service.conf"
    SetOutPath $INSTDIR\Redis
    SetOverwrite ifnewer

    ; 安装 Redis 服务
    ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install "$INSTDIR\Redis\redis.windows-service.conf" --service-name "Redis" --loglevel verbose'


    ; 启动 Redis 服务
    ExecWait '"$SYSDIR\sc.exe" start Redis'



    ; 显示成功信息
    MessageBox MB_OK|MB_ICONINFORMATION "Redis 服务已成功安装并启动。"
SectionEnd

http://www.kler.cn/a/508063.html

相关文章:

  • 2025.1.16——六、BabySQL 双写绕过|联合注入
  • Python GUI Pyside6 实例笔记
  • 联通用户管理系统(一)
  • redis 分布式重入锁
  • 深度学习中的卷积和反卷积(四)——卷积和反卷积的梯度
  • 80_Redis内存策略
  • Neo4j图数据库学习(二)——SpringBoot整合Neo4j
  • 《AIGC:开启智能创作新时代》
  • 145.《redis原生超详细使用》
  • 2024春秋杯冬季赛-Misc部分WP
  • Red Hat8:搭建FTP服务器
  • 基于单片机的智能生态鱼缸的设计
  • 异步任务与定时任务
  • 二百八十三、Java——IDEA中通过快捷键查看某一类的定义位置
  • Linux下的dev,sys和proc(TODO)
  • OpenCV阈值
  • 【C语言】_内存拷贝函数memcpy与memmove
  • Matplotlib基础
  • 【Elasticsearch】搜索类型介绍,以及使用SpringBoot实现,并展现给前端
  • 深度学习基础--GRU学习笔记(李沐《动手学习深度学习》)
  • 如何用ChatGPT玩转知识图谱?
  • NLP意图识别数据集处理流程
  • PyTorch 神经协同过滤 (NCF) 推荐系统教程
  • 【 MySQL 学习3】查询
  • 当当网书籍信息爬虫
  • 【教程】windows下使用docker部署hyperf框架