85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# 多平台编译与打包指南
|
||
|
||
在 Windows 系统下,由于 PyInstaller 的工作机制是直接打包当前平台的 Python 解析器和系统动态库,**它不支持交叉编译**(即在 Windows 本机无法编译出 macOS 的 `.app` 苹果程序,也无法直接打包 Linux 的 `.deb` 或 `.rpm` 安装包)。
|
||
|
||
为了解决这个问题,并在一台电脑上实现 4 端程序(Windows `.exe`、macOS `.app`、Debian/Ubuntu `.deb`、RedHat/Fedora `.rpm`)的统一打包,我们已经在项目中配置了 **GitHub Actions 自动化流水线**。
|
||
|
||
---
|
||
|
||
## 🚀 推荐方案:使用 GitHub Actions 自动打包 4 端程序
|
||
|
||
我们已经在项目中创建了自动化打包脚本:[.github/workflows/build.yml](file:///.github/workflows/build.yml)。
|
||
|
||
您只需将代码托管在 GitHub 仓库中,GitHub 就会为您调用免费的 Windows、macOS 和 Linux 虚拟服务器,一键自动构建出所有安装包!
|
||
|
||
### 操作步骤:
|
||
1. **首次配置并推送代码到 GitHub 仓库** (在本地项目终端运行):
|
||
```bash
|
||
# 关联远程 GitHub 仓库,并将其命名为 github (实现双仓库并存)
|
||
git remote add github https://github.com/hero920103/cursorlogin.git
|
||
|
||
# 将本地的 master 分支推送到 GitHub
|
||
git push -u github master
|
||
```
|
||
2. **推送 Tag 触发 4 端自动打包** (后续每次需要打包发布时,直接运行下面两行):
|
||
```bash
|
||
# 1. 本地打上版本 tag
|
||
git tag vx.x.x
|
||
|
||
# 2. 将 tag 单独推送到 github 触发云端自动构建
|
||
git push github vx.x.x
|
||
```
|
||
3. GitHub Actions 收到 Tag 后会自动触发构建,云端会启动三个环境:
|
||
- 💻 **Windows**:编译出 `CursorTokenLogin.exe`
|
||
- 🍏 **macOS**:编译出 `CursorTokenLogin-macOS.zip` (内含 `.app` 应用程序)
|
||
- 🐧 **Linux**:编译出 Linux 运行文件,并自动打包为 `cursortokenlogin.deb` 和 `cursortokenlogin.rpm`
|
||
4. **下载成品**:构建完成后(耗时约 3~5 分钟),GitHub 会自动在您的仓库右侧 **Releases** 栏目中生成一个名为 `v1.0.0` 的发布页,进入即可直接下载编译好的 4 个包!
|
||
|
||
---
|
||
|
||
## 🛠️ 本地手动构建说明(Windows/Linux/Mac)
|
||
|
||
如果您不想使用 GitHub 托管,也可以在本地不同的系统环境中分别运行打包:
|
||
|
||
### 1. 编译 Windows 程序 (`.exe`)
|
||
在 Windows 命令行中运行:
|
||
```bash
|
||
python -m PyInstaller build.spec --clean
|
||
```
|
||
|
||
### 2. 编译 macOS 程序 (`.app`)
|
||
在 macOS 终端中运行:
|
||
```bash
|
||
python -m PyInstaller build.spec --clean
|
||
```
|
||
*(编译生成 `.app` 文件目录,拷贝分发前建议压缩为 `.zip`)*
|
||
|
||
### 3. 编译 Linux 安装包 (`.deb` / `.rpm`)
|
||
在 Ubuntu / Debian 终端下,可以使用以下命令快速打包:
|
||
```bash
|
||
# 1. 编译 Linux 原生可执行文件
|
||
python -m PyInstaller build.spec --clean
|
||
|
||
# 2. 组织 DEB 包目录结构并打包
|
||
mkdir -p deb-package/DEBIAN
|
||
mkdir -p deb-package/usr/bin
|
||
cp dist/CursorTokenLogin deb-package/usr/bin/cursortokenlogin
|
||
chmod +x deb-package/usr/bin/cursortokenlogin
|
||
|
||
# 创建 control 配置文件
|
||
cat <<EOF > deb-package/DEBIAN/control
|
||
Package: cursortokenlogin
|
||
Version: 1.0.0
|
||
Architecture: amd64
|
||
Maintainer: Yunzer
|
||
Description: Cursor Token Login Helper
|
||
EOF
|
||
|
||
# 生成 deb 安装包
|
||
dpkg-deb --build deb-package cursortokenlogin.deb
|
||
|
||
# 3. 使用 alien 将 deb 包转换为 rpm 包
|
||
sudo apt-get install alien
|
||
sudo alien --to-rpm --scripts cursortokenlogin.deb
|
||
```
|