#!/bin/bash # Tauri + Chromium 自动化打包脚本 # 用于快速构建包含内置Chrome浏览器的exe文件 set -e # 遇到错误立即退出 echo "🚀 开始构建 Tauri + Chromium 应用..." # 检查环境 echo "📋 检查环境..." command -v node >/dev/null 2>&1 || { echo "❌ 需要安装 Node.js"; exit 1; } command -v cargo >/dev/null 2>&1 || { echo "❌ 需要安装 Rust"; exit 1; } command -v npx >/dev/null 2>&1 || { echo "❌ 需要安装 npm/npx"; exit 1; } echo "✅ 环境检查通过" # 安装依赖 echo "📦 安装项目依赖..." npm install # 准备Chromium浏览器 echo "🌐 下载并配置 Chromium..." npm run prepare-browsers # 设置环境变量 export PLAYWRIGHT_BROWSERS_PATH="$(pwd)/browsers" # 构建应用 echo "🔨 构建应用..." if [[ "$OSTYPE" == "linux-gnu"* ]]; then echo "🐧 构建 Linux AppImage..." npm run tauri:build:linux elif [[ "$OSTYPE" == "darwin"* ]]; then echo "🍎 构建 macOS .app (Apple Silicon)..." npm run tauri:build:macos elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then echo "🪟 构建 Windows exe..." npm run tauri:build:windows else echo "❌ 不支持的操作系统: $OSTYPE" exit 1 fi echo "✅ 构建完成!" # 显示输出位置 if [[ "$OSTYPE" == "linux-gnu"* ]]; then OUTPUT_DIR="src-tauri/target/release/bundle/appimage/" OUTPUT_FILE="*.AppImage" elif [[ "$OSTYPE" == "darwin"* ]]; then OUTPUT_DIR="src-tauri/target/release/bundle/dmg/" OUTPUT_FILE="*.dmg" elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then OUTPUT_DIR="src-tauri/target/release/bundle/msi/" OUTPUT_FILE="*.msi" fi echo "" echo "📁 输出位置: $OUTPUT_DIR" echo "📦 生成文件: $OUTPUT_FILE" echo "" echo "🎉 打包成功!应用已包含内置Chromium浏览器,可以独立运行。" # 可选:显示文件大小 if [[ -d "$OUTPUT_DIR" ]]; then echo "" echo "📊 文件信息:" ls -lh "$OUTPUT_DIR" | grep -E "\.(exe|app|AppImage|msi|dmg)$" fi