理解 Wine、Proton、Bottles 的边界与协作关系,为不同场景做出正确选择。
技术谱系:演化全景#
graph TD
subgraph "上游 (1993-)"
WINE["Wine — Windows API 兼容层"]
end
subgraph "商业版"
CX["CrossOver — CodeWeavers 商业支持"]
end
subgraph "游戏分支 (2018-)"
PROTON["Proton — Valve Steam Play"]
PROTON_GE["Proton-GE — 社区增强版"]
PROTON_CACHY["Proton-CachyOS — CPU 优化构建"]
end
subgraph "管理层"
BOTTLES["Bottles — GUI 前缀管理"]
LUTRIS["Lutris — 游戏启动器 + 社区脚本"]
end
subgraph "组件层"
DXVK["DXVK"]
VKD3D["VKD3D-Proton"]
end
WINE --> CX
WINE --> PROTON
PROTON --> PROTON_GE
PROTON --> PROTON_CACHY
WINE -.->|Runner 调用| BOTTLES
PROTON_GE -.->|需核对 umu 集成| BOTTLES
PROTON -.->|集成| DXVK
PROTON -.->|集成| VKD3D
PROTON_GE -.->|受支持的 umu 后端| LUTRIS
WINE -.->|Runner 调用| LUTRIS关键认知:
- Wine 是核心兼容引擎上游之一。Proton 同时集成 DXVK、VKD3D-Proton、运行时、媒体与其他项目;不能把整个 Proton 的每一行代码都追溯为 Wine。部分改进可回到上游,但需按具体提交核对。
- Proton 是面向 Steam 游戏生态的 Wine 集成与补丁集合,包含专用运行环境。非游戏程序可能可运行,但不是其主要支持目标。Proton 的补丁可能引入非游戏应用的兼容性 bug。
- Proton-GE/CachyOS 是社区维护的不同构建与补丁组合,所含 DXVK/VKD3D、硬件适配和游戏修复取决于具体 release;不能绕过游戏反作弊策略,但不为稳定运行 Office/Photoshop 设计。
- Bottles 和 Lutris 是管理器,不参与 API 翻译,只是封装命令行接口。
引擎与管理器的三层模型#
┌──────────────────────────────────────┐
│ 管理层 (Bottles / Lutris) │ ← 用户交互、配置可视化、快照
│ ┌────────────────────────────────┐ │
│ │ 运行器层 (Wine / Proton-GE) │ │ ← API 翻译、进程管理
│ │ ┌──────────────────────────┐ │ │
│ │ │ 图形层 (DXVK / VKD3D) │ │ │ ← DirectX → Vulkan 翻译
│ │ └──────────────────────────┘ │ │
│ └────────────────────────────────┘ │
│ 操作系统 (Linux Kernel) │
└──────────────────────────────────────┘类比
| 角色 | 比喻 |
|---|---|
| Wine | 通用发动机 — 能跑各种车,需自行调校 |
| Proton | 赛车发动机 — 为速度(帧率)设计,其他场景未必好用 |
| Bottles | 整车 — 发动机装好,给你方向盘和仪表盘 |
场景选择矩阵#
按用途选工具
| 使用场景 | 推荐引擎 | 推荐管理方式 | 说明 |
|---|---|---|---|
| Steam 游戏(库内) | Proton / Proton-GE | Steam 内置 | Steam 管理运行环境与每游戏兼容数据;仍可能需要游戏专项配置 |
| 非 Steam 游戏 (.exe) | 支持该游戏的 Wine runner 或 GE-Proton | Wine 管理器;GE 走 umu 集成 | 分离配置不等于安全隔离 |
| 办公软件 (Office 等) | 已验证的 Wine runner | Bottles | 需要 .NET/VC Runtime 完整依赖链 |
| 设计软件 (Photoshop) | 已验证的 Wine runner | Bottles | 每软件独立 Bottle,避免 DLL 冲突 |
| 老旧 Windows 工具 | 兼容目标应用的架构与 Wine runner | Bottles | 32 位程序未必要求纯 win32 Prefix;按 WoW64/构建与依赖核对 |
| 游戏模组 (ReShade 等) | 与模组兼容的 Wine/Proton 版本 | Bottles / Steam | 核对 DLL 优先级、游戏版本与模组要求,不依赖未经核验的版本承诺 |
| 开发测试 (CI/CD) | Wine (nix 管理) | 命令行 | 无 GUI 环境,需脚本化 |
决策流程图
graph TD
A{"这是一个游戏吗?"} -->|是| B{"在 Steam 库里吗?"}
A -->|否| C["用 已验证的 Wine runner — 通过 Bottles 管理"]
B -->|是| D["用官方 Proton — Steam 自动配置"]
B -->|否| E{"需要特定游戏修复?"}
E -->|是| F["检查游戏支持,再用 GE-Proton — Steam 外核对 umu 后端"]
E -->|否| G["用支持目标游戏的 Wine runner — 通过管理器维护"]
D --> H{"过场动画黑屏?"}
H -->|是| I["换 Proton-GE"]
H -->|否| J["保持官方 Proton"]原则
游戏用 Proton(生态),应用用 Wine(通用性),管理用 Bottles(效率)。
版本与支持范围怎样对照#
不要把稳定版、开发版、社区滚动版与管理器名称放进同一个“最新稳定版”栏。建立版本记录时分别查看:
| 组件 | 需要记录的身份 | 不能由名称直接推断的能力 |
|---|---|---|
| Wine | 发布/开发版本、发行包构建、补丁与架构 | 新 WoW64、NTSYNC、Wayland 是否在该构建实际可用 |
| 官方 Proton | Steam 选中的确切版本和 runtime | 当前游戏、GPU、媒体、反作弊是否支持 |
| GE-Proton | 官方 release、校验来源与下载的附加 DLL | 超分、帧生成、特定游戏修复是否生效;Steam 外是否走 umu |
| Bottles runner | 名称、组件 manifest 与具体版本 | Soda/Caffe 等当前默认、Wine 基底与补丁范围 |
| DXVK/VKD3D | runner 实际携带版本、驱动要求 | Vulkan 功能、光追、性能与多 GPU 路径 |
原材料中的 2025–2026 对照表没有足够发布证据支撑“最新”结论。WineHQ 发布页本次访问受限,具体 Wine 11.x 状态不作确认;官方 Proton 与 GE README 的核对也只说明访问时的项目文档,所选旧 release 仍应读其自身说明。
版本更新会修改前缀或下载新的组件。保留可回退的 runner 和关闭状态前缀备份,按同一应用场景验证;单次成功不能替代长期稳定性或安全支持。
来源与核验边界#
以下参考定义相关机制与支持范围。安装、构建、激活、前缀状态与实际应用行为需要按目标环境分别核验;示例命令没有附带任何主机运行成功的结论。
参考与延伸
根据技术笔记重新整理,示例使用通用名称。