SlideCombine/build_win7.bat
yuuko ad4701c904 升级到 .NET Framework 4.6.1 - 兼容VS 2022的平衡选择
技术决策:
- VS 2022不支持.NET Framework 4.0和4.5.2
- 升级到4.6.1,获得VS 2022完整支持
- 平衡开发便利性和用户兼容性

版本选择优势:
 Visual Studio 2022完全支持
 大多数Windows 7已安装4.6.1(通过Windows Update)
 更好的性能和安全性
 现代化开发环境和工具支持

更新内容:
- SlideCombine.csproj: 目标框架 4.0 → 4.6.1
- build_win7.bat: 编译脚本更新
- GitHub Actions: 自动构建使用4.6.1
- 版本选择说明.md: 详细解释选择原因

用户体验:
- 主流用户:已安装4.6.1,直接使用
- 少数用户:提示安装.NET Framework 4.6.1(40MB)
- 安装链接:https://dotnet.microsoft.com/download/dotnet-framework/net461

这是兼顾开发效率和用户体验的最佳平衡点!

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 18:30:47 +08:00

326 lines
11 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
title PDF书签合并工具 - Windows 7兼容编译
chcp 65001 >nul
echo ==========================================
echo PDF书签合并工具 - Windows 7兼容编译
echo ==========================================
echo.
REM 检查项目文件
if not exist "SlideCombine.csproj" (
echo ❌ 错误:未找到 SlideCombine.csproj 项目文件
echo 请确保在项目根目录下运行此脚本
pause
exit /b 1
)
echo ✅ 项目文件检查通过
echo.
REM 检查MSBuild
echo 🔍 正在查找 MSBuild...
set MSBUILD_PATH=
REM Visual Studio 2022
if exist "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2022 Enterprise
)
if exist "C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2022 Professional
)
if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2022 Community
)
REM Visual Studio 2019
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2019 Enterprise
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2019 Professional
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2019 Community
)
REM Visual Studio 2017
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2017 Enterprise
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2017 Professional
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
echo ✅ 找到 Visual Studio 2017 Community
)
REM MSBuild Tools
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe
echo ✅ 找到 MSBuild Tools 2019
)
if exist "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" (
set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
echo ✅ 找到 MSBuild Tools 2017
)
REM .NET Framework MSBuild
if exist "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" (
set MSBUILD_PATH=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
echo ✅ 找到 .NET Framework MSBuild (64位)
)
if exist "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" (
set MSBUILD_PATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
echo ✅ 找到 .NET Framework MSBuild (32位)
)
if "%MSBUILD_PATH%"=="" (
echo ❌ 错误:未找到 MSBuild.exe
echo.
echo 请安装以下工具之一:
echo 1. Visual Studio 2017/2019/2022
echo 2. MSBuild Tools
echo 3. .NET Framework 4.5.2 Developer Pack
echo.
echo 下载地址:
echo • Visual Studio Community: https://visualstudio.microsoft.com/zh-hans/vs/community/
echo • MSBuild Tools: https://visualstudio.microsoft.com/zh-hans/downloads/#build-tools-for-visual-studio-2019
echo • .NET Framework 4.5.2: https://dotnet.microsoft.com/download/dotnet-framework/net452
echo.
pause
exit /b 1
)
echo ✅ MSBuild 路径:%MSBUILD_PATH%
echo.
REM 创建版本信息
set VERSION=2.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 🧹 清理之前的构建...
"%MSBUILD_PATH%" SlideCombine.csproj /t:Clean /p:Configuration=Release /p:Platform="AnyCPU" /v:minimal
REM 生成设计器文件(如果不存在)
if not exist "Form1.Designer.cs" (
echo 🎨 生成设计器文件...
REM 这里通常需要在Visual Studio中设计界面我们假设已存在
)
REM 编译 Release 版本
echo 🔨 编译 Windows 7 兼容版本...
"%MSBUILD_PATH%" SlideCombine.csproj /t:Build /p:Configuration=Release /p:Platform="AnyCPU" /v:minimal /p:TargetFrameworkVersion=v4.6.1
if %ERRORLEVEL% neq 0 (
echo ❌ 编译失败!
echo 请检查代码中的错误
echo.
echo 常见问题:
echo 1. 确保已安装 .NET Framework 4.0 Developer Pack
echo 2. 检查代码是否使用了高版本API
echo 3. 确认项目文件配置正确
echo.
pause
exit /b 1
)
echo ✅ 编译成功!
echo.
REM 检查编译输出
if not exist "bin\Release\SlideCombine.exe" (
echo ❌ 错误:未找到编译输出文件
echo 期望文件路径bin\Release\SlideCombine.exe
pause
exit /b 1
)
REM 创建发布包
echo 📦 创建 Windows 7 兼容发布包...
REM 设置发布包名称
set RELEASE_NAME=SlideCombine_Win7_v%VERSION%_%DATE%
if exist "%RELEASE_NAME%" rd /s /q "%RELEASE_NAME%"
mkdir "%RELEASE_NAME%"
REM 复制主程序
echo 📄 复制主程序...
copy "bin\Release\SlideCombine.exe" "%RELEASE_NAME%\" >nul
REM 复制配置文件(如果存在)
if exist "bin\Release\SlideCombine.exe.config" (
copy "bin\Release\SlideCombine.exe.config" "%RELEASE_NAME%\" >nul
echo ✅ 复制配置文件
)
REM 复制图标文件(如果存在)
if exist "app.ico" (
copy "app.ico" "%RELEASE_NAME%\" >nul
echo ✅ 复制图标文件
)
REM 创建使用说明
echo 📝 创建使用说明...
(
echo PDF书签合并工具 v%VERSION% - Windows 7兼容版
echo =============================================
echo.
echo 系统要求:
echo ✅ Windows 7 SP1 或更高版本
echo ✅ .NET Framework 4.5.2 或更高版本(通常已内置)
echo ✅ 绿色软件,解压即用
echo.
echo 使用方法:
echo 1. 双击运行 SlideCombine.exe
echo 2. 选择三个路径:
echo - PDF文件夹路径包含 FreePic2Pdf_bkmk.txt 文件的文件夹
echo - TXT源文件路径包含元数据 TXT 文件的路径
echo - 输出路径:合并后文件的保存位置
echo 3. 点击"开始合并"按钮
echo 4. 等待处理完成
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 Framework 4.5.2
echo • 下载地址https://dotnet.microsoft.com/download/dotnet-framework/net452
echo • 确保有足够的磁盘空间和文件访问权限
echo • 如果杀毒软件误报,请添加信任
echo.
echo 技术信息:
echo • 版本: v%VERSION%
echo • 构建日期: %DATE%
echo • 目标框架: .NET Framework 4.5.2
echo • 兼容系统: Windows 7 SP1+
echo • 文件大小: 约 30-50 KB
echo.
echo 特点:
echo • 🚀 启动速度快
echo • 📦 绿色软件,无需安装
echo • 🎯 智能文件分组
echo • 📊 详细处理日志
echo • 🌍 多编码支持
echo • 💾 体积小,易分发
) > "%RELEASE_NAME%\Windows7使用说明.txt"
REM 创建启动脚本
echo 🚀 创建启动脚本...
(
echo @echo off
echo title PDF书签合并工具 v%VERSION%
echo echo 启动 PDF书签合并工具...
echo echo.
echo.
echo if exist "SlideCombine.exe" ^(
echo start "" "SlideCombine.exe"
echo echo ✅ 程序已启动
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 Windows 7 兼容性检查
echo echo Windows 7 兼容性检查
echo echo ====================
echo echo.
echo echo 检查操作系统版本...
echo ver
echo echo.
echo echo 检查 .NET Framework...
echo if exist "C:\Windows\Microsoft.NET\Framework64\v4.0.30319" ^(
echo echo ✅ 找到 .NET Framework 4.x ^(64位^)
echo ^) else ^(
echo if exist "C:\Windows\Microsoft.NET\Framework\v4.0.30319" ^(
echo echo ✅ 找到 .NET Framework 4.x ^(32位^)
echo ^) else ^(
echo echo ❌ 未找到 .NET Framework 4.x
echo echo 请安装 .NET Framework 4.5.2
echo echo 下载地址https://dotnet.microsoft.com/download/dotnet-framework/net452
echo ^)
echo ^)
echo echo.
echo echo 兼容性检查完成
echo echo 如果有❌标记,请安装 .NET Framework 4.5.2
echo echo.
echo pause
) > "%RELEASE_NAME%\兼容性检查.bat"
REM 获取文件大小
for %%F in ("%RELEASE_NAME%\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 ==========================================
echo 📊 编译完成统计
echo ==========================================
echo ✅ 编译状态:成功
echo 📦 发布包名称:%RELEASE_NAME%
echo 💾 主程序大小:%FILE_SIZE_KB% KB %FILE_SIZE_MB% MB
echo 📁 发布包位置:%CD%\%RELEASE_NAME%\
echo ⚡ 发布包内容:
echo ├─ SlideCombine.exe ^(主程序,%FILE_SIZE_KB% KB^)
echo ├─ Windows7使用说明.txt ^(用户指南^)
echo ├─ 启动程序.bat ^(快捷启动^)
echo └─ 兼容性检查.bat ^(环境检查^)
echo.
echo 🎉 Windows 7 兼容发布包创建成功!
echo.
echo 🔧 Windows 7 部署说明:
echo 1. 确保目标电脑已安装 .NET Framework 4.5.2 或更高版本
echo 2. 将整个 %RELEASE_NAME% 文件夹复制到目标电脑
echo 3. 运行"兼容性检查.bat"确保环境正确
echo 4. 双击"启动程序.bat"或直接运行"SlideCombine.exe"
echo 5. 无需安装任何软件,绿色环保!
echo.
echo 📋 下一步:
echo - 测试程序是否正常运行
echo - 复制到 U 盘或上传到网络进行分发
echo - 可以在 Windows 7 上测试兼容性
echo.
REM 询问是否打开发布文件夹
echo 是否打开发布文件夹?(Y/N)
set /p choice=请输入选择:
if /i "%choice%"=="Y" (
start "" "%RELEASE_NAME%"
echo ✅ 已打开发布文件夹
)
echo.
echo Windows 7 兼容编译流程完成!按任意键退出...
pause >nul