Files
qhmes/yy-admin-master/YY.Admin/publish.cmd
2026-05-18 17:31:18 +08:00

142 lines
3.1 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
setlocal enabledelayedexpansion
echo ========================================
echo YY.Admin 应用程序发布脚本
echo ========================================
echo.
REM 显示当前目录
echo 当前目录: %cd%
echo.
REM 检查是否在项目目录中
if not exist "YY.Admin.csproj" (
echo [错误] 当前目录没有找到项目文件 YY.Admin.csproj
echo 请确保在项目根目录运行此脚本
echo 预期项目文件: YY.Admin.csproj
echo.
REM 尝试在上级目录查找
echo 正在搜索项目文件...
dir /s /b *.csproj 2>nul
echo.
pause
exit /b 1
)
REM 检查 .NET SDK 是否可用
dotnet --version >nul 2>&1
if errorlevel 1 (
echo [错误] 未找到 .NET SDK 或未安装
echo 请安装 .NET SDK 并确保 dotnet 命令可用
echo.
pause
exit /b 1
)
REM 显示项目信息
echo 项目文件: YY.Admin.csproj
echo.
REM 清理发布目录
if exist "publish" (
echo [1/4] 清理旧发布文件...
rmdir /s /q "publish"
if errorlevel 1 (
echo [错误] 无法清理发布目录,可能有文件被占用
echo 请关闭所有可能占用文件的程序后重试
echo.
pause
exit /b 1
)
) else (
echo [1/4] 创建发布目录...
mkdir "publish" >nul 2>&1
)
REM 发布应用程序
echo [2/4] 正在发布应用程序...
dotnet publish -c Release -r win-x64 -o "publish" --self-contained true -p:PublishSingleFile=true
if errorlevel 1 (
echo [错误] 应用程序发布失败!
echo 请检查项目配置和错误信息
echo.
pause
exit /b 1
)
REM 菜单与业务数据在 SQLite项目根下常为最新最全的一份dotnet publish 默认不会带上
if exist "Admin.NET.db" (
copy /Y "Admin.NET.db" "publish\" >nul
echo 已复制 Admin.NET.db与项目根一致含菜单等配置
)
if exist "Slave.db" (
copy /Y "Slave.db" "publish\" >nul
echo 已复制 Slave.db
)
REM 创建 Updates 目录并复制版本文件
echo [3/4] 配置自动更新文件...
if not exist "publish\Updates" mkdir "publish\Updates"
if exist "version.xml" (
copy "version.xml" "publish\Updates\" >nul
echo 版本文件已复制
) else (
echo 警告: 未找到 version.xml 文件,自动更新功能可能无法正常工作
echo 请在项目根目录创建 version.xml 文件
)
REM 复制其他必要文件(如果有)
if exist "AppSettings.json" (
copy "AppSettings.json" "publish\" >nul 2>&1
echo 配置文件已复制
)
if exist "Resources" (
xcopy "Resources" "publish\Resources" /E /I /Y >nul 2>&1
echo 资源文件已复制
)
REM 显示发布结果
echo [4/4] 发布完成!
echo.
echo ========================================
echo 发布摘要:
echo ========================================
echo 发布目录: %cd%\publish
echo.
REM 显示生成的主要文件
set "exeFile="
for %%f in (publish\*.exe) do set "exeFile=%%f"
if defined exeFile (
echo 主要文件:
echo !exeFile!
echo.
echo 文件大小:
for %%f in (!exeFile!) do echo %%~zf 字节
) else (
echo [警告] 未找到可执行文件
)
echo.
echo 目录内容:
dir publish /B
echo.
echo ========================================
echo 下一步操作:
echo 1. 测试发布的应用: 双击 publish\!exeFile! 运行测试
echo 2. 打包分发: 将整个 publish 目录打包分发
echo 3. 配置自动更新: 更新服务器上的 version.xml 文件
echo ========================================
echo.
echo.
echo 发布流程完成!
pause