绿色包保存
This commit is contained in:
18
build/NPQS9100.bat
Normal file
18
build/NPQS9100.bat
Normal file
@@ -0,0 +1,18 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
|
||||
REM 获取当前批处理文件所在目录
|
||||
cd /d "%~dp0"
|
||||
|
||||
REM 检查是否有管理员权限
|
||||
net session >nul 2>&1
|
||||
if %errorlevel% == 0 (
|
||||
REM 已有管理员权限,直接启动
|
||||
start "" "NPQS9100.exe"
|
||||
exit
|
||||
) else (
|
||||
REM 没有管理员权限,使用 PowerShell 以管理员身份启动(隐藏窗口)
|
||||
powershell -WindowStyle Hidden -Command "Start-Process '%~dp0NPQS9100.exe' -Verb RunAs"
|
||||
exit
|
||||
)
|
||||
|
||||
46
build/README-升级回滚.txt
Normal file
46
build/README-升级回滚.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
========================================
|
||||
NPQS-9100 升级与回滚说明
|
||||
========================================
|
||||
|
||||
一、升级步骤(超简单!)
|
||||
----------------------------------------
|
||||
1. 双击 upgrade.bat(首次会自动创建 upgrade 文件夹)
|
||||
2. 将升级文件放入 upgrade/ 目录:
|
||||
- app.asar (前端升级包 - 文件)
|
||||
- app.asar.unpacked\ (前端升级包 - 文件夹)
|
||||
- entrance.jar (后端升级包)
|
||||
3. 再次双击 upgrade.bat 开始升级
|
||||
4. 等待完成后重启应用
|
||||
|
||||
二、回滚步骤
|
||||
----------------------------------------
|
||||
如果升级后出现问题:
|
||||
1. 双击 rollback.bat
|
||||
2. 选择是否回滚数据库(谨慎!)
|
||||
3. 等待完成后重启应用
|
||||
|
||||
三、重要提示
|
||||
----------------------------------------
|
||||
✓ 升级前会自动备份到 backup/ 目录
|
||||
✓ 数据库会自动备份到 mysql/data_backup/
|
||||
✓ 升级日志保存在 logs/upgrade.log
|
||||
✓ 多次升级时,backup/ 保存最后一次升级前的版本
|
||||
|
||||
四、紧急情况
|
||||
----------------------------------------
|
||||
如果脚本无法运行,请手动操作:
|
||||
|
||||
【恢复前端】
|
||||
copy /Y backup\app.asar resources\app.asar
|
||||
xcopy backup\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y
|
||||
|
||||
【恢复后端】
|
||||
copy /Y backup\entrance.jar resources\extraResources\java\entrance.jar
|
||||
|
||||
【恢复数据库】(慎用!)
|
||||
xcopy mysql\data_backup mysql\data\ /E /I /Y
|
||||
|
||||
========================================
|
||||
详细文档请参考:doc/绿色包升级指南.md
|
||||
========================================
|
||||
|
||||
29
build/app.manifest
Normal file
29
build/app.manifest
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="*"
|
||||
name="NPQS9100"
|
||||
type="win32"
|
||||
/>
|
||||
<description>NPQS-9100自动检测平台</description>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows 10 and Windows 11 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
||||
59
build/build.bat
Normal file
59
build/build.bat
Normal file
@@ -0,0 +1,59 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo 清理并重新打包
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
echo [1/4] 删除 out 目录...
|
||||
cd /d "%~dp0.."
|
||||
if exist out (
|
||||
rmdir /s /q out 2>nul
|
||||
if exist out (
|
||||
echo 删除失败,请手动删除 out 目录
|
||||
pause
|
||||
exit /b 1
|
||||
) else (
|
||||
echo out 目录已删除
|
||||
)
|
||||
) else (
|
||||
echo out 目录不存在
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [2/4] 构建前端代码...
|
||||
call npm run build-frontend
|
||||
if %errorlevel% neq 0 (
|
||||
echo 前端构建失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo 前端代码构建完成
|
||||
echo.
|
||||
|
||||
echo [3/4] 构建 electron 代码...
|
||||
call npm run build-electron
|
||||
if %errorlevel% neq 0 (
|
||||
echo electron 构建失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo electron 代码构建完成
|
||||
echo.
|
||||
|
||||
echo [4/4] 打包 Windows 版本(包含代码加密)...
|
||||
call npm run build-w
|
||||
if %errorlevel% neq 0 (
|
||||
echo 打包失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo.
|
||||
|
||||
echo ========================================
|
||||
echo 打包完成!
|
||||
echo 输出目录: out\win-unpacked\
|
||||
echo ========================================
|
||||
echo.
|
||||
pause
|
||||
|
||||
69
build/diagnose-startup.bat
Normal file
69
build/diagnose-startup.bat
Normal file
@@ -0,0 +1,69 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo NPQS9100 启动诊断工具
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
echo [1] 检查运行中的进程...
|
||||
echo.
|
||||
echo NPQS9100 进程:
|
||||
tasklist | findstr /i "NPQS9100.exe"
|
||||
if %errorlevel% neq 0 echo 未找到
|
||||
echo.
|
||||
|
||||
echo MySQL 进程:
|
||||
tasklist | findstr /i "mysqld.exe"
|
||||
if %errorlevel% neq 0 echo 未找到
|
||||
echo.
|
||||
|
||||
echo Java 进程:
|
||||
tasklist | findstr /i "java.exe"
|
||||
if %errorlevel% neq 0 echo 未找到
|
||||
echo.
|
||||
|
||||
echo [2] 检查端口占用...
|
||||
echo.
|
||||
echo 3306 端口:
|
||||
netstat -ano | findstr ":3306" | findstr "LISTENING"
|
||||
if %errorlevel% neq 0 echo 未占用
|
||||
echo.
|
||||
|
||||
echo 18092 端口:
|
||||
netstat -ano | findstr ":18092" | findstr "LISTENING"
|
||||
if %errorlevel% neq 0 echo 未占用
|
||||
echo.
|
||||
|
||||
echo 7777 端口:
|
||||
netstat -ano | findstr ":7777" | findstr "LISTENING"
|
||||
if %errorlevel% neq 0 echo 未占用
|
||||
echo.
|
||||
|
||||
echo [3] 查看最新日志...
|
||||
echo.
|
||||
set LOGDIR=%APPDATA%\NQPS9100\logs
|
||||
echo 日志目录: %LOGDIR%
|
||||
if exist "%LOGDIR%" (
|
||||
echo.
|
||||
echo 最新日志文件:
|
||||
dir /b /o-d "%LOGDIR%\*.log" 2>nul
|
||||
echo.
|
||||
) else (
|
||||
echo 日志目录不存在
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [4] 检查 MySQL 服务...
|
||||
sc query mysql9100 >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo MySQL 服务存在
|
||||
sc query mysql9100 | findstr "STATE"
|
||||
) else (
|
||||
echo MySQL 服务不存在
|
||||
)
|
||||
echo.
|
||||
|
||||
echo ========================================
|
||||
echo 诊断完成
|
||||
echo ========================================
|
||||
pause
|
||||
@@ -1,85 +1,33 @@
|
||||
==========================================
|
||||
NPQS9100 MySQL 免安装版使用说明
|
||||
NPQS9100 MySQL 数据库
|
||||
==========================================
|
||||
|
||||
一、快速开始
|
||||
目录说明
|
||||
----------------------------------------
|
||||
1. 启动 MySQL:
|
||||
双击运行: startup.bat
|
||||
(注意:不要关闭窗口,关闭会停止MySQL)
|
||||
|
||||
2. 首次使用,如需重置密码和权限:
|
||||
双击运行: reset-root-password.bat
|
||||
|
||||
3. 停止 MySQL:
|
||||
双击运行: stop.bat
|
||||
bin/ - MySQL 可执行文件
|
||||
data/ - 数据库数据目录
|
||||
share/ - 共享资源文件
|
||||
my.ini - MySQL 配置文件
|
||||
|
||||
|
||||
二、连接信息
|
||||
服务管理
|
||||
----------------------------------------
|
||||
主机: 127.0.0.1 (或 localhost)
|
||||
MySQL 服务由主应用自动管理:
|
||||
- 应用启动时自动启动
|
||||
- 应用关闭时自动停止
|
||||
- 默认端口:3306(如被占用会自动切换)
|
||||
|
||||
|
||||
连接信息
|
||||
----------------------------------------
|
||||
主机: 127.0.0.1
|
||||
端口: 3306
|
||||
用户: root
|
||||
密码: njcnpqs
|
||||
字符集: utf8mb4
|
||||
|
||||
|
||||
三、脚本说明
|
||||
----------------------------------------
|
||||
startup.bat - 启动 MySQL 服务
|
||||
stop.bat - 正常停止 MySQL 服务
|
||||
reset-root-password.bat - 重置root密码和权限(解决1130错误)
|
||||
kill-running-port.bat - 智能清理应用实际使用的端口(自动识别3306/3307/...)
|
||||
my.ini - MySQL 配置文件
|
||||
.running-port - 运行时端口记录(自动生成,勿删除)
|
||||
|
||||
bin/ - MySQL 可执行文件
|
||||
data/ - 数据库数据目录
|
||||
share/ - 共享资源
|
||||
|
||||
⚠️ 安全说明:
|
||||
- 应用自动停止MySQL时,只会停止应用自己启动的MySQL进程
|
||||
- 不会影响您电脑上安装的其他MySQL服务
|
||||
- kill-running-port.bat 会读取 .running-port 文件,精确清理实际使用的端口
|
||||
- 如果3306被占用,应用会自动使用3307,kill-running-port.bat 会智能识别
|
||||
|
||||
⚙️ 停止机制:
|
||||
- 应用关闭时会自动使用 mysqladmin shutdown 优雅停止MySQL
|
||||
- 如果优雅停止失败,会自动尝试强制停止
|
||||
- 整个停止过程最多12秒,确保MySQL完全关闭
|
||||
|
||||
⭐ 端口智能管理:
|
||||
- 应用启动时自动检测可用端口(3306 → 3307 → 3308...)
|
||||
- 启动成功后会记录实际端口到 .running-port 文件
|
||||
- 使用 kill-running-port.bat 可自动清理正确的端口
|
||||
|
||||
|
||||
四、注意事项
|
||||
----------------------------------------
|
||||
1. 启动后不要关闭命令行窗口,关闭窗口会停止 MySQL
|
||||
2. 正常停止请使用 stop.bat
|
||||
3. 如果出现 1130 或密码错误,运行 reset-root-password.bat
|
||||
4. 如果端口被占用无法启动,运行 kill-3306.bat
|
||||
5. 默认密码是 njcnpqs,不要随意修改
|
||||
|
||||
|
||||
五、常见问题
|
||||
----------------------------------------
|
||||
Q: 连接提示 1130 错误或密码错误?
|
||||
A: 运行 reset-root-password.bat 重置权限
|
||||
|
||||
Q: 启动失败或端口被占用?
|
||||
A: 运行 kill-running-port.bat 清理端口(自动识别正确端口)
|
||||
|
||||
Q: 如何重置密码?
|
||||
A: 运行 reset-root-password.bat(密码会重置为 njcnpqs)
|
||||
|
||||
Q: 数据在哪里?
|
||||
A: 所有数据库数据在 data/ 目录下
|
||||
|
||||
|
||||
==========================================
|
||||
南京灿能电气自动化有限公司
|
||||
2025
|
||||
==========================================
|
||||
|
||||
|
||||
34
build/extraResources/mysql/init_pwd.bat
Normal file
34
build/extraResources/mysql/init_pwd.bat
Normal file
@@ -0,0 +1,34 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
cd /d %~dp0
|
||||
|
||||
taskkill /F /IM mysqld.exe 2>nul
|
||||
timeout /t 2 /nobreak >nul
|
||||
|
||||
rmdir /s /q data 2>nul
|
||||
mkdir data
|
||||
|
||||
echo 初始化数据库...
|
||||
bin\mysqld.exe --defaults-file=my.ini --initialize-insecure --console
|
||||
|
||||
echo 启动 MySQL...
|
||||
start /B bin\mysqld.exe --defaults-file=my.ini
|
||||
timeout /t 8 /nobreak >nul
|
||||
|
||||
echo 设置密码...
|
||||
bin\mysql.exe -h 127.0.0.1 -P 3306 -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'njcnpqs'; CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY 'njcnpqs'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;"
|
||||
|
||||
if %errorlevel% NEQ 0 (
|
||||
echo 第一次失败,重试...
|
||||
timeout /t 3 /nobreak >nul
|
||||
bin\mysql.exe -h localhost -P 3306 -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'njcnpqs'; CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY 'njcnpqs'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;"
|
||||
)
|
||||
|
||||
taskkill /F /IM mysqld.exe 2>nul
|
||||
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 完成!密码: njcnpqs
|
||||
echo ==========================================
|
||||
pause
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
color 0C
|
||||
title 清理NPQS9100 MySQL端口占用
|
||||
cls
|
||||
echo ==========================================
|
||||
echo 清理 NPQS9100 MySQL 端口占用
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
REM 获取MySQL目录(脚本所在目录)
|
||||
set MYSQL_HOME=%~dp0
|
||||
cd /d "%MYSQL_HOME%"
|
||||
|
||||
REM 读取实际运行的端口
|
||||
set PORT_FILE=.running-port
|
||||
set MYSQL_PORT=
|
||||
|
||||
if exist "%PORT_FILE%" (
|
||||
set /p MYSQL_PORT=<"%PORT_FILE%"
|
||||
echo [√] 检测到运行记录:端口 %MYSQL_PORT%
|
||||
echo.
|
||||
) else (
|
||||
echo [!] 未找到运行记录文件,使用默认端口 3306
|
||||
echo.
|
||||
set MYSQL_PORT=3306
|
||||
)
|
||||
|
||||
echo [1] 检查端口 %MYSQL_PORT% 占用情况...
|
||||
echo.
|
||||
|
||||
REM 查找占用该端口的连接
|
||||
netstat -ano | findstr ":%MYSQL_PORT%" > "%TEMP%\mysql_port.txt"
|
||||
|
||||
if %errorlevel% equ 0 (
|
||||
echo 发现以下端口 %MYSQL_PORT% 连接:
|
||||
echo ----------------------------------------
|
||||
type "%TEMP%\mysql_port.txt"
|
||||
echo ----------------------------------------
|
||||
echo.
|
||||
|
||||
echo [2] 提取进程ID并结束进程...
|
||||
echo.
|
||||
|
||||
REM 提取所有LISTENING状态的PID
|
||||
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr "LISTENING"') do (
|
||||
if not "%%a"=="0" (
|
||||
echo 正在结束进程 PID: %%a
|
||||
taskkill /F /PID %%a 2>nul
|
||||
if errorlevel 1 (
|
||||
echo [失败] 无法结束进程 %%a
|
||||
) else (
|
||||
echo [成功] 已结束进程 %%a
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
REM 如果还有其他状态的连接,也尝试结束
|
||||
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT%" ^| findstr /V "LISTENING"') do (
|
||||
if not "%%a"=="0" (
|
||||
echo 正在结束进程 PID: %%a
|
||||
taskkill /F /PID %%a 2>nul
|
||||
if errorlevel 1 (
|
||||
echo [已结束或无权限] 进程 %%a
|
||||
) else (
|
||||
echo [成功] 已结束进程 %%a
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
echo.
|
||||
echo [3] 清理完成
|
||||
|
||||
REM 等待2秒让进程完全释放
|
||||
timeout /t 2 /nobreak >nul
|
||||
|
||||
echo.
|
||||
echo [4] 再次检查端口 %MYSQL_PORT%...
|
||||
netstat -ano | findstr ":%MYSQL_PORT%"
|
||||
if errorlevel 1 (
|
||||
echo [√] 端口 %MYSQL_PORT% 已完全释放
|
||||
|
||||
REM 删除端口记录文件
|
||||
if exist "%PORT_FILE%" (
|
||||
del "%PORT_FILE%"
|
||||
echo [√] 已清理端口记录文件
|
||||
)
|
||||
) else (
|
||||
echo [!] 仍有连接存在(可能是TIME_WAIT状态,会自动释放)
|
||||
)
|
||||
|
||||
) else (
|
||||
echo [√] 没有发现占用端口 %MYSQL_PORT% 的进程
|
||||
|
||||
REM 删除端口记录文件
|
||||
if exist "%PORT_FILE%" (
|
||||
del "%PORT_FILE%"
|
||||
echo [√] 已清理端口记录文件
|
||||
)
|
||||
)
|
||||
|
||||
REM 清理临时文件
|
||||
if exist "%TEMP%\mysql_port.txt" del "%TEMP%\mysql_port.txt"
|
||||
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 清理完成
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo 说明:
|
||||
echo - 此脚本只清理 NPQS9100 应用使用的 MySQL 端口
|
||||
echo - 不会影响您电脑上的其他 MySQL 服务
|
||||
echo.
|
||||
pause
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
color 0B
|
||||
title Reset MySQL Root Password
|
||||
cls
|
||||
echo ==========================================
|
||||
echo Reset MySQL Root Password
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo This script will reset root password and grant 127.0.0.1 access
|
||||
echo.
|
||||
echo IMPORTANT: Close any running MySQL windows first!
|
||||
echo.
|
||||
pause
|
||||
|
||||
set MYSQL_HOME=%cd%
|
||||
set password=njcnpqs
|
||||
|
||||
echo.
|
||||
echo [1] Stopping MySQL...
|
||||
taskkill /F /IM mysqld.exe >nul 2>&1
|
||||
timeout /t 2 >nul
|
||||
echo Done.
|
||||
|
||||
echo.
|
||||
echo [2] Creating init file...
|
||||
(
|
||||
echo ALTER USER IF EXISTS 'root'@'localhost' IDENTIFIED BY '%password%';
|
||||
echo CREATE USER IF NOT EXISTS 'root'@'127.0.0.1' IDENTIFIED BY '%password%';
|
||||
echo GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
|
||||
echo CREATE USER IF NOT EXISTS 'root'@'%%' IDENTIFIED BY '%password%';
|
||||
echo GRANT ALL PRIVILEGES ON *.* TO 'root'@'%%' WITH GRANT OPTION;
|
||||
echo FLUSH PRIVILEGES;
|
||||
) > "%MYSQL_HOME%\reset-init.sql"
|
||||
echo Done.
|
||||
|
||||
echo.
|
||||
echo [3] Starting MySQL with init-file...
|
||||
echo This will take about 30 seconds...
|
||||
echo.
|
||||
|
||||
cd /d "%MYSQL_HOME%"
|
||||
"%MYSQL_HOME%\bin\mysqld.exe" --defaults-file="%MYSQL_HOME%\my.ini" --init-file="%MYSQL_HOME%\reset-init.sql" --console
|
||||
|
||||
REM The above command runs in foreground and will exit when you press Ctrl+C
|
||||
|
||||
echo.
|
||||
echo MySQL has stopped.
|
||||
echo.
|
||||
if exist "%MYSQL_HOME%\reset-init.sql" del "%MYSQL_HOME%\reset-init.sql"
|
||||
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo Password reset completed!
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo Connection info:
|
||||
echo Host: 127.0.0.1
|
||||
echo Port: 3306
|
||||
echo User: root
|
||||
echo Password: %password%
|
||||
echo.
|
||||
echo Now you can run startup.bat to start MySQL normally
|
||||
echo.
|
||||
pause
|
||||
|
||||
BIN
build/icons/icon-original-backup.png
Normal file
BIN
build/icons/icon-original-backup.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
BIN
build/icons/icon-square-256.png
Normal file
BIN
build/icons/icon-square-256.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 120 KiB |
BIN
build/icons/icon-square-512.png
Normal file
BIN
build/icons/icon-square-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 368 KiB |
81
build/remove-mysql-service.bat
Normal file
81
build/remove-mysql-service.bat
Normal file
@@ -0,0 +1,81 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
title 检查并清除 MySQL9100 服务
|
||||
color 0E
|
||||
|
||||
echo ========================================
|
||||
echo 检查并清除 MySQL9100 服务
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 检查是否有管理员权限
|
||||
net session >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo [错误] 需要管理员权限来操作 Windows 服务
|
||||
echo.
|
||||
echo 请右键点击此脚本,选择"以管理员身份运行"
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [✓] 已具有管理员权限
|
||||
echo.
|
||||
|
||||
REM 检查服务是否存在
|
||||
echo [1/4] 检查 mysql9100 服务是否存在...
|
||||
sc query mysql9100 >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo [✓] 发现 mysql9100 服务
|
||||
echo.
|
||||
|
||||
REM 显示服务状态
|
||||
echo [2/4] 服务状态信息:
|
||||
sc query mysql9100
|
||||
echo.
|
||||
|
||||
REM 停止服务
|
||||
echo [3/4] 正在停止 mysql9100 服务...
|
||||
sc stop mysql9100 >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo [✓] 服务已停止
|
||||
) else (
|
||||
echo [!] 服务可能已经停止或停止失败(继续删除)
|
||||
)
|
||||
|
||||
REM 等待服务完全停止
|
||||
timeout /t 2 /nobreak >nul
|
||||
echo.
|
||||
|
||||
REM 删除服务
|
||||
echo [4/4] 正在删除 mysql9100 服务...
|
||||
sc delete mysql9100
|
||||
if %errorlevel% equ 0 (
|
||||
echo [✓] 服务已成功删除
|
||||
echo.
|
||||
echo ========================================
|
||||
echo 清除完成!
|
||||
echo ========================================
|
||||
) else (
|
||||
echo [✗] 删除服务失败
|
||||
echo.
|
||||
echo 可能的原因:
|
||||
echo 1. 服务仍在运行中(请重启电脑后重试)
|
||||
echo 2. 权限不足
|
||||
echo 3. 服务被其他程序锁定
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo [!] 未发现 mysql9100 服务
|
||||
echo.
|
||||
echo 系统中没有名为 mysql9100 的服务,无需清除。
|
||||
)
|
||||
|
||||
echo.
|
||||
echo 提示:如果需要完全清理,还可以:
|
||||
echo 1. 删除 MySQL 数据目录(mysql/data)
|
||||
echo 2. 删除 MySQL 配置文件(mysql/my.ini)
|
||||
echo.
|
||||
pause
|
||||
143
build/rollback.bat
Normal file
143
build/rollback.bat
Normal file
@@ -0,0 +1,143 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo NPQS9100 回滚工具
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 【重要提示】
|
||||
echo 本工具用于回滚上次升级的内容
|
||||
echo 回滚后将恢复到升级前的状态
|
||||
echo.
|
||||
pause
|
||||
echo.
|
||||
|
||||
echo [1/5] 停止 NPQS9100 进程...
|
||||
taskkill /F /IM NPQS9100.exe 2>nul
|
||||
if %errorlevel% equ 0 (
|
||||
echo NPQS9100 已停止
|
||||
timeout /t 2 /nobreak >nul
|
||||
) else (
|
||||
echo NPQS9100 未运行
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [2/5] 检查备份文件...
|
||||
set hasBackup=0
|
||||
|
||||
if exist backup\app.asar (
|
||||
echo 发现前端备份(app.asar)
|
||||
set hasBackup=1
|
||||
)
|
||||
|
||||
if exist backup\app.asar.unpacked (
|
||||
echo 发现前端备份(app.asar.unpacked)
|
||||
set hasBackup=1
|
||||
)
|
||||
|
||||
if exist backup\entrance.jar (
|
||||
echo 发现后端备份
|
||||
set hasBackup=1
|
||||
)
|
||||
|
||||
if exist mysql\data_backup (
|
||||
echo 发现数据库备份
|
||||
set hasBackup=1
|
||||
)
|
||||
|
||||
if %hasBackup%==0 (
|
||||
echo 未发现任何备份文件!
|
||||
echo 无法执行回滚操作
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [3/5] 回滚前端...
|
||||
set frontendRollback=0
|
||||
|
||||
REM 回滚 app.asar
|
||||
if exist backup\app.asar (
|
||||
echo 正在恢复 app.asar...
|
||||
copy /Y backup\app.asar resources\app.asar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar 已回滚
|
||||
set frontendRollback=1
|
||||
) else (
|
||||
echo app.asar 回滚失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
REM 回滚 app.asar.unpacked
|
||||
if exist backup\app.asar.unpacked (
|
||||
echo 正在恢复 app.asar.unpacked...
|
||||
if exist resources\app.asar.unpacked (
|
||||
rmdir /s /q resources\app.asar.unpacked 2>nul
|
||||
)
|
||||
xcopy backup\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar.unpacked 已回滚
|
||||
set frontendRollback=1
|
||||
) else (
|
||||
echo app.asar.unpacked 回滚失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
if %frontendRollback%==0 (
|
||||
echo 无前端备份,跳过
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [4/5] 回滚后端...
|
||||
if exist backup\entrance.jar (
|
||||
echo 正在恢复 JAR 文件...
|
||||
copy /Y backup\entrance.jar resources\extraResources\java\entrance.jar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo 后端已回滚
|
||||
) else (
|
||||
echo 后端回滚失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo 无后端备份,跳过
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [5/5] 回滚数据库...
|
||||
if exist mysql\data_backup (
|
||||
echo 是否回滚数据库?(数据库回滚会丢失升级后的数据!)
|
||||
echo [Y] 是 [N] 否
|
||||
choice /C YN /N /M "请选择:"
|
||||
if errorlevel 2 (
|
||||
echo 已跳过数据库回滚
|
||||
) else (
|
||||
echo 正在回滚数据库...
|
||||
if exist mysql\data (
|
||||
rmdir /s /q mysql\data 2>nul
|
||||
)
|
||||
xcopy mysql\data_backup mysql\data\ /E /I /Y /Q >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo 数据库已回滚
|
||||
) else (
|
||||
echo 数据库回滚失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
) else (
|
||||
echo 无数据库备份,跳过
|
||||
)
|
||||
echo.
|
||||
|
||||
echo ========================================
|
||||
echo 回滚完成!
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 您现在可以启动 NPQS9100 了
|
||||
echo.
|
||||
pause
|
||||
|
||||
227
build/upgrade.bat
Normal file
227
build/upgrade.bat
Normal file
@@ -0,0 +1,227 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
echo ========================================
|
||||
echo NPQS9100 升级工具
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
REM 检查并创建 upgrade 目录
|
||||
if not exist upgrade (
|
||||
mkdir upgrade
|
||||
echo 【首次使用】已自动创建 upgrade 目录
|
||||
echo.
|
||||
echo 请将升级文件放入 upgrade 目录:
|
||||
echo - app.asar (前端升级包 - 文件)
|
||||
echo - app.asar.unpacked\ (前端升级包 - 文件夹)
|
||||
echo - entrance.jar (后端升级包)
|
||||
echo.
|
||||
echo 放置完成后,重新运行本脚本即可升级
|
||||
echo.
|
||||
pause
|
||||
exit /b 0
|
||||
)
|
||||
|
||||
REM 检查是否有升级文件
|
||||
set hasUpgrade=0
|
||||
if exist upgrade\app.asar set hasUpgrade=1
|
||||
if exist upgrade\app.asar.unpacked set hasUpgrade=1
|
||||
if exist upgrade\entrance.jar set hasUpgrade=1
|
||||
|
||||
if %hasUpgrade%==0 (
|
||||
echo 【提示】upgrade 目录为空!
|
||||
echo.
|
||||
echo 请将升级文件放入 upgrade 目录:
|
||||
echo - app.asar (前端升级包 - 文件)
|
||||
echo - app.asar.unpacked\ (前端升级包 - 文件夹)
|
||||
echo - entrance.jar (后端升级包)
|
||||
echo.
|
||||
echo 放置完成后,重新运行本脚本即可升级
|
||||
echo.
|
||||
pause
|
||||
exit /b 0
|
||||
)
|
||||
|
||||
echo 【检测到升级文件】
|
||||
if exist upgrade\app.asar echo - 前端升级(asar文件): upgrade\app.asar
|
||||
if exist upgrade\app.asar.unpacked echo - 前端升级(unpacked文件夹): upgrade\app.asar.unpacked\
|
||||
if exist upgrade\entrance.jar echo - 后端升级: upgrade\entrance.jar
|
||||
echo.
|
||||
echo 【重要提示】
|
||||
echo 1. 升级前会自动备份当前版本
|
||||
echo 2. 如升级失败可运行 rollback.bat 回滚
|
||||
echo 3. 数据库会自动备份到 mysql\data_backup\
|
||||
echo.
|
||||
pause
|
||||
echo.
|
||||
|
||||
echo [1/6] 停止 NPQS9100 进程...
|
||||
taskkill /F /IM NPQS9100.exe 2>nul
|
||||
if %errorlevel% equ 0 (
|
||||
echo NPQS9100 已停止
|
||||
timeout /t 2 /nobreak >nul
|
||||
) else (
|
||||
echo NPQS9100 未运行
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [2/6] 备份当前版本(用于回滚)...
|
||||
if not exist backup mkdir backup
|
||||
|
||||
REM 备份前端(app.asar 和 app.asar.unpacked)
|
||||
if exist resources\app.asar (
|
||||
echo 正在备份前端 app.asar...
|
||||
if not exist backup mkdir backup
|
||||
copy /Y resources\app.asar backup\app.asar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar 备份完成
|
||||
) else (
|
||||
echo app.asar 备份失败
|
||||
)
|
||||
)
|
||||
|
||||
if exist resources\app.asar.unpacked (
|
||||
echo 正在备份前端 app.asar.unpacked...
|
||||
if exist backup\app.asar.unpacked (
|
||||
rmdir /s /q backup\app.asar.unpacked 2>nul
|
||||
)
|
||||
xcopy resources\app.asar.unpacked backup\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar.unpacked 备份完成
|
||||
) else (
|
||||
echo app.asar.unpacked 备份失败
|
||||
)
|
||||
)
|
||||
|
||||
REM 备份后端
|
||||
if exist resources\extraResources\java\entrance.jar (
|
||||
echo 正在备份后端...
|
||||
copy /Y resources\extraResources\java\entrance.jar backup\entrance.jar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo 后端备份完成
|
||||
) else (
|
||||
echo 后端备份失败
|
||||
)
|
||||
)
|
||||
|
||||
REM 备份数据库
|
||||
if exist mysql\data (
|
||||
echo 正在备份数据库...
|
||||
if exist mysql\data_backup (
|
||||
rmdir /s /q mysql\data_backup 2>nul
|
||||
)
|
||||
xcopy mysql\data mysql\data_backup\ /E /I /Y /Q >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo 数据库备份完成
|
||||
) else (
|
||||
echo 数据库备份失败,请手动备份后继续
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [3/6] 记录版本信息...
|
||||
if not exist backup\version.txt (
|
||||
echo 备份时间: %date% %time% > backup\version.txt
|
||||
echo 升级前版本备份 >> backup\version.txt
|
||||
) else (
|
||||
echo 上次备份时间: %date% %time% >> backup\version.txt
|
||||
)
|
||||
echo 版本信息已记录
|
||||
echo.
|
||||
|
||||
echo [4/6] 升级前端...
|
||||
set frontendUpgraded=0
|
||||
|
||||
REM 升级 app.asar
|
||||
if exist upgrade\app.asar (
|
||||
echo 正在替换 app.asar...
|
||||
copy /Y upgrade\app.asar resources\app.asar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar 升级完成
|
||||
set frontendUpgraded=1
|
||||
) else (
|
||||
echo app.asar 升级失败,正在回滚...
|
||||
if exist backup\app.asar (
|
||||
copy /Y backup\app.asar resources\app.asar >nul 2>&1
|
||||
echo 已回滚到升级前版本
|
||||
)
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
REM 升级 app.asar.unpacked
|
||||
if exist upgrade\app.asar.unpacked (
|
||||
echo 正在替换 app.asar.unpacked...
|
||||
if exist resources\app.asar.unpacked (
|
||||
rmdir /s /q resources\app.asar.unpacked 2>nul
|
||||
)
|
||||
xcopy upgrade\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo app.asar.unpacked 升级完成
|
||||
set frontendUpgraded=1
|
||||
) else (
|
||||
echo app.asar.unpacked 升级失败,正在回滚...
|
||||
if exist backup\app.asar.unpacked (
|
||||
rmdir /s /q resources\app.asar.unpacked 2>nul
|
||||
xcopy backup\app.asar.unpacked resources\app.asar.unpacked\ /E /I /Y /Q >nul 2>&1
|
||||
echo 已回滚到升级前版本
|
||||
)
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
if %frontendUpgraded%==0 (
|
||||
echo 无前端升级包,跳过
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [5/6] 升级后端...
|
||||
if exist upgrade\entrance.jar (
|
||||
echo 正在替换 JAR 文件...
|
||||
copy /Y upgrade\entrance.jar resources\extraResources\java\entrance.jar >nul 2>&1
|
||||
if %errorlevel% equ 0 (
|
||||
echo 后端升级完成
|
||||
) else (
|
||||
echo 后端升级失败,正在回滚...
|
||||
if exist backup\entrance.jar (
|
||||
copy /Y backup\entrance.jar resources\extraResources\java\entrance.jar >nul 2>&1
|
||||
echo 已回滚到升级前版本
|
||||
)
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo 无后端升级包,跳过
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [6/6] 记录升级日志...
|
||||
if not exist logs mkdir logs
|
||||
echo ========================================== >> logs\upgrade.log
|
||||
echo 升级时间: %date% %time% >> logs\upgrade.log
|
||||
if exist upgrade\dist (
|
||||
echo 升级内容: 前端 >> logs\upgrade.log
|
||||
)
|
||||
if exist upgrade\entrance.jar (
|
||||
echo 升级内容: 后端 >> logs\upgrade.log
|
||||
)
|
||||
echo ========================================== >> logs\upgrade.log
|
||||
echo 升级日志已记录
|
||||
echo.
|
||||
|
||||
echo ========================================
|
||||
echo 升级完成!
|
||||
echo ========================================
|
||||
echo.
|
||||
echo 【提示】
|
||||
echo 1. 如需回滚,请运行 rollback.bat
|
||||
echo 2. 升级文件已使用,可删除 upgrade 目录
|
||||
echo.
|
||||
echo 您现在可以启动 NPQS9100 应用。
|
||||
echo.
|
||||
pause
|
||||
|
||||
|
||||
Reference in New Issue
Block a user