Files
qhmes/yy-admin-master/YY.Admin/publish.cmd

132 lines
2.8 KiB
Batchfile

@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 创建 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