Files
readflow/scripts/build-windows.sh
大麦 5c3e7ccbfd
Some checks failed
Release Build / Build Windows (push) Failing after 3m18s
Release Build / Build Linux (push) Failing after 33s
Release Build / Build macOS (push) Has been cancelled
docs: 添加 Windows 交叉编译脚本和 Gitea Actions 配置指南
- scripts/build-windows.sh: Windows 交叉编译脚本
- docs/GITEA_ACTIONS.md: Gitea Actions Runner 配置指南

使用方式:
1. 配置 Gitea Actions Runner (参考 docs/GITEA_ACTIONS.md)
2. 或手动运行 ./scripts/build-windows.sh --upload
2026-03-10 16:10:51 +08:00

160 lines
3.6 KiB
Bash
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.
#!/bin/bash
# Windows 交叉编译脚本
# 使用 x86_64-w64-mingw32 工具链
set -e
echo "🚀 ReadFlow Windows 交叉编译脚本"
echo "=================================="
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查是否安装了 mingw 工具链
check_mingw() {
if command -v x86_64-w64-mingw32-gcc &> /dev/null; then
log_info "MinGW 工具链已安装"
return 0
else
log_error "MinGW 工具链未安装"
log_info "请运行以下命令安装:"
echo " brew install mingw-w64 # macOS"
echo " sudo apt-get install mingw-w64 # Linux"
return 1
fi
}
# 添加 Windows 目标
add_target() {
log_info "添加 Windows 目标..."
rustup target add x86_64-pc-windows-gnu
}
# 编译
build() {
log_info "开始编译 Windows 版本..."
# 设置交叉编译器
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc
# 编译
cargo build --release --target x86_64-pc-windows-gnu
log_info "编译完成!"
}
# 打包
package() {
log_info "打包 Windows 版本..."
local version="0.2.0"
local build_dir="target/x86_64-pc-windows-gnu/release"
local package_dir="dist/readflow-${version}-windows-x86_64"
mkdir -p "${package_dir}"
# 复制可执行文件
cp "${build_dir}/readflow.exe" "${package_dir}/"
# 创建 README
cat > "${package_dir}/README.txt" << EOF
ReadFlow v${version} for Windows
快速开始:
1. 解压到任意目录
2. 双击运行 readflow.exe
功能:
- EPUB/MOBI/Markdown/PDF 阅读
- 20+ 编程语言语法高亮
- 双语翻译对照
- 笔记与书签系统
- 插件系统
- 主题商店
技术支持damai@foshanhuiya.com
Gitea: http://192.168.120.110:4000/damai/readflow
EOF
# 创建 ZIP
cd dist
zip -r "readflow-${version}-windows-x86_64.zip" "readflow-${version}-windows-x86_64/"
cd ..
log_info "打包完成dist/readflow-${version}-windows-x86_64.zip"
}
# 上传到 Release
upload_release() {
log_info "上传到 Gitea Release..."
local version="0.2.0"
local token="884162096b7f331c6fb236217d00a9452e34d4aa"
local file="dist/readflow-${version}-windows-x86_64.zip"
# 获取 Release ID
local release_id=$(curl -s "http://192.168.120.110:4000/api/v1/repos/damai/readflow/releases/tags/v${version}" \
-H "Authorization: token ${token}" | jq -r '.id')
if [ "$release_id" == "null" ] || [ -z "$release_id" ]; then
log_error "Release v${version} 不存在"
return 1
fi
log_info "Release ID: ${release_id}"
# 上传文件
curl -L -X POST "http://192.168.120.110:4000/api/v1/repos/damai/readflow/releases/${release_id}/assets?name=readflow-${version}-windows-x86_64.zip" \
-H "Authorization: token ${token}" \
-H "Content-Type: application/zip" \
--data-binary @"${file}"
log_info "上传完成!"
}
# 主函数
main() {
log_info "开始 Windows 交叉编译..."
# 检查工具链
if ! check_mingw; then
log_warn "跳过编译,请安装 MinGW 后重试"
exit 1
fi
# 添加目标
add_target
# 编译
build
# 打包
package
# 上传 (可选)
if [ "$1" == "--upload" ]; then
upload_release
fi
log_info "🎉 Windows 打包完成!"
log_info "文件位置dist/readflow-0.2.0-windows-x86_64.zip"
}
# 运行
main "$@"