Claude Code managed to get Adobe Lightroom working on Linux
Claude Code 成功让 Adobe Lightroom 在 Linux 上运行
Adobe Lightroom CC on Linux via Wine Status: ✅ Working as of 2026-05-16, Wine 11.8 staging, Lightroom CC 9.3.1. This repo documents how to install and run Adobe Lightroom CC (the cloud-syncing photo app, sometimes called “Lightroom Desktop” — NOT Lightroom Classic) on Linux with Wine. Adobe Lightroom CC 在 Linux 上通过 Wine 的运行状态: ✅ 截至 2026 年 5 月 16 日,在 Wine 11.8 staging 和 Lightroom CC 9.3.1 版本下运行正常。本仓库记录了如何在 Linux 上通过 Wine 安装并运行 Adobe Lightroom CC(即云同步照片应用,有时被称为“Lightroom Desktop”——而非 Lightroom Classic)。
What you get
- The full Creative Cloud desktop app working under Wine (sign in, apps panel, install other Adobe apps from the catalog)
- Lightroom CC launching, showing the cloud-synced photo library, and the Edit module rendering with all the panels (Light, Color, Effects, Detail, Optics, Geometry, …)
- The Remove / Heal tool working — brush, mask, apply (as of 2026-05-16; this needed an extra Media Foundation patch over the earlier drafts of this guide — see GUIDE.md section 6.5)
你能获得什么
- 完整的 Creative Cloud 桌面应用可在 Wine 下运行(支持登录、应用面板、从目录安装其他 Adobe 应用)。
- Lightroom CC 可正常启动,显示云同步的照片库,编辑模块可渲染所有面板(光效、颜色、效果、细节、光学、几何等)。
- “移除/修复”(Remove / Heal)工具可正常使用——包括画笔、蒙版和应用功能(截至 2026 年 5 月 16 日;此功能需要在本指南早期草稿的基础上额外打上 Media Foundation 补丁——详见 GUIDE.md 第 6.5 节)。
What still doesn’t work See KNOWN_ISSUES.md. Short version: a couple of specific dialogs (like “What’s New”) can crash, and some advanced GPU-accelerated features may not be 100% — but the core editing workflow works. 哪些功能尚不可用 请参阅 KNOWN_ISSUES.md。简而言之:少数特定对话框(如“新功能介绍”)可能会崩溃,部分高级 GPU 加速功能可能无法 100% 完美运行——但核心编辑工作流是可用的。
Prereqs
- 64-bit Linux distro, kernel 6.x or newer
- Wine 11.8 staging or newer (wine —version should say wine-11.8 (Staging) or similar)
- winetricks 20240105 or newer
- An NVIDIA, AMD or Intel GPU with Vulkan drivers (we tested NVIDIA, but DXVK works on all three)
- A valid Adobe Creative Cloud subscription that includes Lightroom CC
- About 10 GB of free disk for the prefix + Adobe install
- mingw-w64 for building the stub DLLs (sudo apt install mingw-w64)
- build-essential, git, and wine build deps if you want to rebuild the patched d2d1.dll from source instead of using our prebuilt one
前置条件
- 64 位 Linux 发行版,内核 6.x 或更新版本。
- Wine 11.8 staging 或更新版本(
wine --version应显示 wine-11.8 (Staging) 或类似信息)。 - winetricks 20240105 或更新版本。
- 带有 Vulkan 驱动的 NVIDIA、AMD 或 Intel GPU(我们测试了 NVIDIA,但 DXVK 在三者上均可工作)。
- 有效的包含 Lightroom CC 的 Adobe Creative Cloud 订阅。
- 约 10 GB 的剩余磁盘空间用于存放 prefix 和 Adobe 安装文件。
- 用于构建存根 DLL 的 mingw-w64 (
sudo apt install mingw-w64)。 - 如果你想从源码重新构建已打补丁的 d2d1.dll 而不是使用我们预构建的版本,则需要 build-essential、git 和 wine 构建依赖项。
Quick start
git clone https://github.com/sander110419/lightroom-cc-on-linux.git
cd lightroom-cc-on-linux
./scripts/setup.sh # ~30 min, mostly downloads
Then download ACCCx*.zip from https://creativecloud.adobe.com/apps/download/creative-cloud (signed in to your Adobe account), drop it in installers/, and run:
./scripts/install-cc.sh
./scripts/install-lightroom.sh
./scripts/run-lightroom.sh
快速开始
git clone https://github.com/sander110419/lightroom-cc-on-linux.git
cd lightroom-cc-on-linux
./scripts/setup.sh # 约 30 分钟,主要是下载过程
然后从 https://creativecloud.adobe.com/apps/download/creative-cloud 下载 ACCCx*.zip(需登录你的 Adobe 账户),将其放入 installers/ 文件夹,并运行:
./scripts/install-cc.sh
./scripts/install-lightroom.sh
./scripts/run-lightroom.sh
How it works See GUIDE.md for the full walkthrough — every fix explained, what wine gap it works around, and how to roll it back. The six non-obvious pieces are:
- DXVK dummy composition swapchain so WebView2 (Adobe’s Electron UI shell) can render at all.
- Disable AdobeGrowthSDK.dll — Adobe’s A/B testing library calls the unimplemented SetThreadpoolTimerEx and crashes the whole CC process tree.
- Patched d2d1.dll that registers the CLSID_D2D1ColorManagement builtin effect that Lightroom needs. Build instructions in stubs/sources/.
- Patched mfplat.dll with a MFCreateSampleCopierMFT forwarder so the Remove / Heal tool stops crashing. Note: the patched DLL must be dropped into two locations — system32/ and the Adobe-bundled copy at Program Files/Adobe/Adobe Lightroom CC/mfplat.dll, because Adobe ships its own that preempts wine’s.
- Tiny stub DLLs for NDFAPI.DLL, wkscli.dll, and ext-ms-win-uiacore-l1-1-2.dll (wine 11.8 doesn’t ship them but Lightroom static-imports them).
- Lowercase symlinks for the Adobe-bundled DLLs so wine’s case-sensitive PE loader can find them.
工作原理 请参阅 GUIDE.md 获取完整演练——解释了每一个修复方案、它绕过了哪些 Wine 的缺陷,以及如何回滚。其中六个非显而易见的要点是:
- DXVK 虚拟合成交换链,使 WebView2(Adobe 的 Electron UI 外壳)能够正常渲染。
- 禁用 AdobeGrowthSDK.dll——Adobe 的 A/B 测试库调用了未实现的 SetThreadpoolTimerEx,导致整个 CC 进程树崩溃。
- 打过补丁的 d2d1.dll,用于注册 Lightroom 所需的 CLSID_D2D1ColorManagement 内置效果。构建说明位于 stubs/sources/ 中。
- 打过补丁的 mfplat.dll,带有 MFCreateSampleCopierMFT 转发器,从而修复“移除/修复”工具的崩溃问题。注意:打过补丁的 DLL 必须放入两个位置——system32/ 以及 Program Files/Adobe/Adobe Lightroom CC/mfplat.dll 下的 Adobe 自带副本,因为 Adobe 提供的版本会优先于 Wine 的版本。
- 用于 NDFAPI.DLL、wkscli.dll 和 ext-ms-win-uiacore-l1-1-2.dll 的微型存根 DLL(Wine 11.8 未提供这些文件,但 Lightroom 静态导入了它们)。
- 为 Adobe 自带的 DLL 创建小写符号链接,以便 Wine 对大小写敏感的 PE 加载器能够找到它们。
How this repo was built This entire repository — the scripts, the stub DLL sources, the patched DLLs, the docs, the guide, and this README — was researched, written, and verified by Claude Opus 4.7 working autonomously. Specifically the model claude-opus-4-7 via the Claude Code CLI agent. The human contributor (sander110419) set the goal (“get Lightroom CC working on Linux, then publish a reproducible recipe”) and answered occasional clarification questions; Claude did the rest.
本仓库是如何构建的 整个仓库——包括脚本、存根 DLL 源码、打过补丁的 DLL、文档、指南以及这份 README——均由 Claude Opus 4.7 自主研究、编写并验证。具体是通过 Claude Code CLI 代理使用 claude-opus-4-7 模型完成的。人类贡献者 (sander110419) 设定了目标(“让 Lightroom CC 在 Linux 上运行,并发布可复现的方案”)并回答了偶尔的澄清问题;其余工作均由 Claude 完成。
The agent’s working loop:
- Read crash dumps, Wine logs, Adobe binaries (with winedump, objdump, raw PE parsing in Python).
- Diff export tables of every relevant mfplat.dll in the system — wine’s builtin, Proton’s, Adobe’s bundled copy — against the imports winegstreamer delay-loads, to pinpoint the single missing function (MFCreateSampleCopierMFT).
- Patch the binary directly (see scripts/patch_mfplat.py): appended a new PE section with a fresh export directory containing all original exports plus a forwarder to mf.MFCreateSampleCopierMFT.
- Verify in a running Lightroom by taking screenshots with import from ImageMagick, locating UI elements algorithmically from pixel detection (Pillow), driving the mouse with xdotool to click the Remove tool, and observing whether the popup appeared vs. a crash dump showed up in ~/AppData/LocalLow/Adobe/CRLogs/.
- When clicks missed by a few pixels (icon coordinate detection was off-by-one for several iterations), the agent re-took the screenshot, re-ran the detector, adjusted, and retried — all autonomously.
- Discover via failed verification that the patched system32/mfplat.dll wasn’t being loaded at all because Adobe ships its own mfplat.dll in the Lightroom install directory and Windows DLL search order prefers the app directory. Copied the patched DLL into Adobe’s install directory, re-launched, clicked through the Remove tool flow, confirmed by screenshot that “Remove the way you want” appeared, “Try it now” clicked into the brush UI, brush stroke registered, “Remove” button applied without crashing.
- Document what worked, saved memory notes for the next session so the Adobe-bundled-DLL gotcha is recorded as a generally transferable lesson (other Adobe apps may have the same issue).
代理的工作循环:
- 读取崩溃转储、Wine 日志、Adobe 二进制文件(使用 winedump、objdump 以及 Python 中的原始 PE 解析)。
- 对比系统中所有相关 mfplat.dll(Wine 内置版、Proton 版、Adobe 自带版)的导出表与 winegstreamer 延迟加载的导入表,从而精确定位到缺失的唯一函数 (MFCreateSampleCopierMFT)。
- 直接修补二进制文件(见 scripts/patch_mfplat.py):附加了一个新的 PE 节,其中包含一个新的导出目录,该目录包含所有原始导出项以及指向 mf.MFCreateSampleCopierMFT 的转发器。
- 在运行中的 Lightroom 中进行验证:使用 ImageMagick 截图,通过像素检测 (Pillow) 算法定位 UI 元素,使用 xdotool 驱动鼠标点击“移除”工具,并观察是弹出了窗口还是在 ~/AppData/LocalLow/Adobe/CRLogs/ 中出现了崩溃转储。
- 当点击偏差几个像素时(图标坐标检测在几次迭代中存在误差),代理会自动重新截图、重新运行检测器、调整并重试——全程自主完成。
- 通过验证失败发现,系统级的 system32/mfplat.dll 根本没有被加载,因为 Adobe 在 Lightroom 安装目录中自带了 mfplat.dll,而 Windows 的 DLL 搜索顺序优先考虑应用目录。于是将打过补丁的 DLL 复制到 Adobe 安装目录,重新启动,点击“移除”工具流程,通过截图确认“Remove the way you want”提示出现,“Try it now”成功进入画笔 UI,画笔笔触被记录,“Remove”按钮应用后未发生崩溃。
- 记录有效方案,并为下一次会话保存内存笔记,以便将“Adobe 自带 DLL”这一陷阱记录为可通用的经验(其他 Adobe 应用可能存在同样的问题)。
There is no LLM hand-waving in the binaries themselves: every patched DLL in stubs/binaries/ is the actual bit-for-bit copy that the agent verified works in the Lightroom prefix on disk at publish time. The md5s in GUIDE.md match the bytes in this repo. 📖 The full chronological build history — every step every Claude session took, every dead end, every diff, every screenshot-driven UI verification — is in history_methodology.md.
二进制文件本身没有任何 LLM 的“虚构”成分:stubs/binaries/ 中的每一个已打补丁的 DLL 都是代理在发布时验证过可在磁盘 Lightroom prefix 中正常工作的实际二进制副本。GUIDE.md 中的 MD5 值与本仓库中的字节完全匹配。📖 完整的按时间顺序排列的构建历史——Claude 每一个会话的每一步、每一个死胡同、每一个差异对比、每一次基于截图的 UI 验证——都在 history_methodology.md 中。