build-exe.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. # Tauri + Chromium 自动化打包脚本
  3. # 用于快速构建包含内置Chrome浏览器的exe文件
  4. set -e # 遇到错误立即退出
  5. echo "🚀 开始构建 Tauri + Chromium 应用..."
  6. # 检查环境
  7. echo "📋 检查环境..."
  8. command -v node >/dev/null 2>&1 || { echo "❌ 需要安装 Node.js"; exit 1; }
  9. command -v cargo >/dev/null 2>&1 || { echo "❌ 需要安装 Rust"; exit 1; }
  10. command -v npx >/dev/null 2>&1 || { echo "❌ 需要安装 npm/npx"; exit 1; }
  11. echo "✅ 环境检查通过"
  12. # 安装依赖
  13. echo "📦 安装项目依赖..."
  14. npm install
  15. # 准备Chromium浏览器
  16. echo "🌐 下载并配置 Chromium..."
  17. npm run prepare-browsers
  18. # 设置环境变量
  19. export PLAYWRIGHT_BROWSERS_PATH="$(pwd)/browsers"
  20. # 构建应用
  21. echo "🔨 构建应用..."
  22. if [[ "$OSTYPE" == "linux-gnu"* ]]; then
  23. echo "🐧 构建 Linux AppImage..."
  24. npm run tauri:build:linux
  25. elif [[ "$OSTYPE" == "darwin"* ]]; then
  26. echo "🍎 构建 macOS .app (Apple Silicon)..."
  27. npm run tauri:build:macos
  28. elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
  29. echo "🪟 构建 Windows exe..."
  30. npm run tauri:build:windows
  31. else
  32. echo "❌ 不支持的操作系统: $OSTYPE"
  33. exit 1
  34. fi
  35. echo "✅ 构建完成!"
  36. # 显示输出位置
  37. if [[ "$OSTYPE" == "linux-gnu"* ]]; then
  38. OUTPUT_DIR="src-tauri/target/release/bundle/appimage/"
  39. OUTPUT_FILE="*.AppImage"
  40. elif [[ "$OSTYPE" == "darwin"* ]]; then
  41. OUTPUT_DIR="src-tauri/target/release/bundle/dmg/"
  42. OUTPUT_FILE="*.dmg"
  43. elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
  44. OUTPUT_DIR="src-tauri/target/release/bundle/msi/"
  45. OUTPUT_FILE="*.msi"
  46. fi
  47. echo ""
  48. echo "📁 输出位置: $OUTPUT_DIR"
  49. echo "📦 生成文件: $OUTPUT_FILE"
  50. echo ""
  51. echo "🎉 打包成功!应用已包含内置Chromium浏览器,可以独立运行。"
  52. # 可选:显示文件大小
  53. if [[ -d "$OUTPUT_DIR" ]]; then
  54. echo ""
  55. echo "📊 文件信息:"
  56. ls -lh "$OUTPUT_DIR" | grep -E "\.(exe|app|AppImage|msi|dmg)$"
  57. fi