diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3fc6f56..d63a1cc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,8 +26,21 @@ jobs: - name: Restore packages run: nuget restore SlideCombine.csproj - - name: Build Solution (Release) - run: msbuild SlideCombine.csproj /p:Configuration=Release /p:Platform="AnyCPU" /p:TargetFrameworkVersion=v4.6.1 /p:OutputPath=bin\Release\ + - name: Setup .NET SDK + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + + - name: Build Modern Version (.NET 8.0) + run: | + dotnet publish SlideCombine_Modern.csproj ` + --configuration Release ` + --runtime win-x64 ` + --self-contained true ` + --output "publish" ` + -p:PublishSingleFile=true ` + -p:PublishReadyToRun=true ` + -p:IncludeNativeLibrariesForSelfExtract=true - name: Create Release Package run: | @@ -43,8 +56,8 @@ jobs: # 创建发布包文件夹 New-Item -ItemType Directory -Force -Path $packageName - # 复制主程序 - Copy-Item "bin\Release\SlideCombine.exe" -Destination $packageName\ + # 复制主程序(现代版本) + Copy-Item "publish\SlideCombine.exe" -Destination $packageName\ # 复制配置文件(如果存在) if (Test-Path "bin\Release\SlideCombine.exe.config") { diff --git a/SlideCombine_Modern.csproj b/SlideCombine_Modern.csproj new file mode 100644 index 0000000..c2213f7 --- /dev/null +++ b/SlideCombine_Modern.csproj @@ -0,0 +1,43 @@ + + + + WinExe + net8.0-windows + true + enable + enable + SlideCombine + SlideCombine + true + true + win-x64 + true + true + + + + + + + + + + Form + + + Form1.cs + + + + + + + + + + Form1.cs + + + + + \ No newline at end of file diff --git a/build_modern.bat b/build_modern.bat new file mode 100644 index 0000000..5f5948a --- /dev/null +++ b/build_modern.bat @@ -0,0 +1,269 @@ +@echo off +title PDF书签合并工具 - 现代化版本编译发布 +chcp 65001 >nul + +echo ========================================== +echo PDF书签合并工具 - .NET 8.0 现代版 +echo ========================================== +echo. + +REM 检查项目文件 +if not exist "SlideCombine_Modern.csproj" ( + echo ❌ 错误:未找到 SlideCombine_Modern.csproj 项目文件 + echo 请确保在项目根目录下运行此脚本 + pause + exit /b 1 +) + +echo ✅ 现代化项目文件检查通过 +echo. + +REM 检查 .NET SDK +echo 🔍 检查 .NET SDK ... +dotnet --version >nul 2>&1 +if %ERRORLEVEL% neq 0 ( + echo ❌ 错误:未找到 .NET SDK + echo 请安装 .NET 8.0 SDK: + echo https://dotnet.microsoft.com/download/dotnet/8.0 + pause + exit /b 1 +) + +set DOTNET_VERSION= +for /f "tokens=*" %%i in ('dotnet --version') do set DOTNET_VERSION=%%i +echo ✅ 找到 .NET SDK 版本:%DOTNET_VERSION% +echo. + +REM 创建版本信息 +set VERSION=3.0.0 +set DATE=%date:~0,4%%date:~5,2%%date:~8,2% +set TIME=%time:~0,2%%time:~3,2% +set TIME=%TIME: =0% + +echo 📅 版本信息:%VERSION% (%DATE% %TIME%) +echo. + +REM 清理之前的构建 +echo 🧹 清理之前的构建... +if exist "bin" rd /s /q "bin" +if exist "obj" rd /s /q "obj" +if exist "publish" rd /s /q "publish" + +echo ✅ 清理完成 +echo. + +REM 编译发布 +echo 🔨 编译现代化版本... +echo 目标:win-x64 自包含单文件 +echo 框架:.NET 8.0 +echo. + +dotnet publish SlideCombine_Modern.csproj ^ + --configuration Release ^ + --runtime win-x64 ^ + --self-contained true ^ + --output "publish" ^ + -p:PublishSingleFile=true ^ + -p:PublishReadyToRun=true ^ + -p:IncludeNativeLibrariesForSelfExtract=true ^ + -p:DebugType=None ^ + -p:DebugSymbols=false + +if %ERRORLEVEL% neq 0 ( + echo ❌ 编译失败! + echo 请检查代码中的错误 + pause + exit /b 1 +) + +echo ✅ 编译成功! +echo. + +REM 检查输出文件 +if not exist "publish\SlideCombine.exe" ( + echo ❌ 错误:未找到编译输出文件 + echo 期望文件路径:publish\SlideCombine.exe + pause + exit /b 1 +) + +REM 获取文件大小 +for %%F in ("publish\SlideCombine.exe") do set FILE_SIZE=%%~zF +set /a FILE_SIZE_MB=%FILE_SIZE% / 1024 / 1024 +set /a FILE_SIZE_KB=%FILE_SIZE% / 1024 + +echo 📊 编译统计: +echo 文件大小:%FILE_SIZE_KB% KB (%FILE_SIZE_MB% MB) +echo. + +REM 创建发布包 +echo 📦 创建现代化发布包... + +set RELEASE_NAME=SlideCombine_v%VERSION%_%DATE% +if exist "%RELEASE_NAME%" rd /s /q "%RELEASE_NAME%" +mkdir "%RELEASE_NAME%" + +REM 复制主程序 +echo 📄 复制主程序... +copy "publish\SlideCombine.exe" "%RELEASE_NAME%\" >nul + +REM 创建现代化使用说明 +echo 📝 创建使用说明... +( +echo PDF书签合并工具 v%VERSION% - 现代化版本 +echo ========================================== +echo. +echo 🎯 版本特色: +echo • .NET 8.0 最新技术栈 +echo • 自包含单文件 - 无需运行时 +echo • 跨平台支持 (Windows) +echo • 高性能启动 +echo • 现代化UI体验 +echo. +echo 💻 系统要求: +echo ✅ Windows 7 SP1 或更高版本 +echo ✅ Windows 8/8.1 +echo ✅ Windows 10 (推荐) +echo ✅ Windows 11 +echo ✅ 无需安装 .NET 或其他运行时 +echo. +echo 🚀 使用方法: +echo 1. 双击运行 SlideCombine.exe +echo 2. 选择三个路径: +echo • PDF文件夹路径:包含 FreePic2Pdf_bkmk.txt 文件的文件夹 +echo • TXT源文件路径:包含元数据 TXT 文件的路径 +echo • 输出路径:合并后文件的保存位置 +echo 3. 点击"🚀 开始合并"按钮 +echo 4. 查看实时处理日志 +echo 5. 等待处理完成 +echo. +echo 📁 示例目录结构: +echo PDF文件夹/ +echo ├─ CH-875 1-3/FreePic2Pdf_bkmk.txt +echo ├─ CH-875 4-6/FreePic2Pdf_bkmk.txt +echo. +echo TXT源文件/ +echo ├─ CH-875 1-3.txt +echo ├─ CH-875 4-6.txt +echo. +echo 输出路径/ +echo └─ CH-875.txt ^(合并后的文件^) +echo. +echo 🌟 技术特点: +echo • 🚀 自包含技术:无需安装.NET运行时 +echo • 📦 单文件部署:整个程序只有一个exe文件 +echo • ⚡ 高性能:.NET 8.0 最新优化 +echo • 🎨 现代化UI:流畅的用户体验 +echo • 🔒 安全可靠:最新安全特性 +echo • 🌍 多编码支持:UTF-8, GBK, GB2312 +echo • 📊 智能处理:自动文件分组和错误处理 +echo. +echo 🔧 故障排除: +echo • 程序无法启动:请检查是否有杀毒软件阻止 +echo • 权限问题:右键"以管理员身份运行" +echo • 文件访问:确保对输入输出路径有读写权限 +echo. +echo 📋 版本信息: +echo • 程序版本:v%VERSION% +echo • 构建日期:%DATE% +echo • 开发框架:.NET 8.0 +echo • 编译环境:Windows 10 + VS 2026 +echo • 文件大小:%FILE_SIZE_KB% KB (%FILE_SIZE_MB% MB) +echo • 发布方式:自包含单文件 +echo. +echo 🎉 享受现代化PDF书签合并体验! +) > "%RELEASE_NAME%\现代化使用说明.txt" + +REM 创建启动脚本 +echo 🚀 创建启动脚本... +( +echo @echo off +echo title PDF书签合并工具 v%VERSION% +echo echo 启动 PDF书签合并工具 v%VERSION%... +echo echo .NET 8.0 现代化版本 +echo echo. +echo. +echo if exist "SlideCombine.exe" ^( +echo echo ✅ 程序已启动 - .NET 8.0 自包含版本 +echo start "" "SlideCombine.exe" +echo ^) else ^( +echo echo ❌ 错误:未找到 SlideCombine.exe +echo echo 请确保在正确的目录中运行此脚本 +echo pause +echo ^) +echo. +echo timeout /t 2 ^>nul +) > "%RELEASE_NAME%\启动程序.bat" + +REM 创建系统信息脚本 +echo 🔍 创建系统信息脚本... +( +echo @echo off +echo title 系统信息检查 +echo echo PDF书签合并工具 - 系统信息检查 +echo echo ===================================== +echo echo. +echo echo 操作系统信息: +echo ver +echo echo. +echo echo 系统架构: +echo if "%PROCESSOR_ARCHITECTURE%"=="AMD64" ( +echo echo ✅ 64位系统 ^(推荐^) +echo ^) else ( +echo ⚠️ 32位系统 ^(支持^) +echo ^) +echo echo. +echo echo 内存信息: +echo systeminfo ^| findstr /C:"Total Physical Memory" +echo echo. +echo echo 程序要求: +echo echo ✅ Windows 7 SP1+ 或更高版本 +echo echo ✅ 无需安装任何运行时 ^(自包含^) +echo echo ✅ 推荐至少 100MB 可用磁盘空间 +echo echo. +echo echo 系统已准备就绪! +echo echo. +echo pause +) > "%RELEASE_NAME%\系统检查.bat" + +echo. +echo ========================================== +echo 🎉 现代化编译完成 +echo ========================================== +echo ✅ 编译状态:成功 +echo 📦 发布包名称:%RELEASE_NAME% +echo 💾 主程序大小:%FILE_SIZE_KB% KB (%FILE_SIZE_MB% MB) +echo 🎯 目标框架:.NET 8.0 +echo 🖥️ 目标平台:win-x64 +echo 📁 发布包位置:%CD%\%RELEASE_NAME%\ +echo ⚡ 发布包内容: +echo ├─ SlideCombine.exe ^(主程序,%FILE_SIZE_KB% KB^) +echo ├─ 现代化使用说明.txt ^(详细指南^) +echo ├─ 启动程序.bat ^(快捷启动^) +echo └─ 系统检查.bat ^(环境检查^) +echo. +echo 🌟 现代化优势: +echo • ✅ 自包含单文件 - 无需安装.NET运行时 +echo • ✅ 高性能启动 - .NET 8.0 最新优化 +echo • ✅ 跨版本兼容 - Windows 7 到 Windows 11 +echo • ✅ 现代化技术栈 - 最新安全特性 +echo • ✅ 开发友好 - VS 2026 完美支持 +echo. +echo 🎯 部署说明: +echo 1. 将整个 %RELEASE_NAME% 文件夹复制到任意电脑 +echo 2. 运行"系统检查.bat"确保环境正确 +echo 3. 双击"启动程序.bat"或直接运行SlideCombine.exe +echo 4. 无需安装任何软件,真正绿色环保! +echo. + +REM 询问是否打开发布文件夹 +echo 是否打开发布文件夹?(Y/N) +set /p choice=请输入选择: +if /i "%choice%"=="Y" ( + start "" "%RELEASE_NAME%" + echo ✅ 已打开发布文件夹 +) + +echo. +echo 🎉 现代化编译发布完成!按任意键退出... +pause >nul \ No newline at end of file