多应用适配实战:adobe-discord-rpc如何用manifest.xml模板生成器与独立Discord Application ID支撑10+款Adobe软件
【免费下载链接】adobe-discord-rpcDiscord Rich Presence extension for your adobe apps!项目地址: https://gitcode.com/gh_mirrors/ad/adobe-discord-rpc
adobe-discord-rpc 是一款为 Adobe 全家桶打造的Discord Rich Presence(丰富状态)扩展:打开 Photoshop、Premiere Pro 等软件时,你的 Discord 个人资料会自动显示"正在做什么、做到哪一步"。它最精妙的工程实践,是用一份manifest.xml 模板生成器统一声明 10+ 款 Adobe 宿主软件,并为每款软件配置独立的 Discord Application ID,从而实现"一个扩展、多端共存"。🎯
一、先看效果:Rich Presence 长什么样
安装后打开任意支持的 Adobe 软件,Discord 资料卡就会自动更新状态信息,例如当前文档名、合成/时间轴、渲染进度、图层数,还会带上对应的软件大图标与计时器。下面两张图分别来自 Discord 实际资料卡与状态预览:
二、核心机制一:manifest.xml 模板生成器如何"一键适配"多应用
CEP(Common Extensibility Platform)扩展安装时,Adobe 依赖manifest.xml判断"这个扩展能在哪些软件里运行"。手写 10 多份声明既繁琐又容易出错,adobe-discord-rpc 的做法是用脚本生成:
- 模板文件:
assets/templates/manifest.template.xml.js - 它读取宿主机表,为每款软件循环生成一段
<Extension>声明,包含:<Host Name="AEFT" />—— 声明目标宿主(AEFT=After Effects、PHXS=Photoshop、PPRO=Premiere Pro……)<ScriptPath>./host/AEFT.jsx</ScriptPath>—— 指向该宿主专属脚本<StartOn>事件(应用初始化、窗口激活、文档切换)—— 实现"启动即自动运行",无需手动点击
💡长尾要点:模板里<ExecutionEnvironment>的<HostList>用Version="[0.0,99.9]"区间声明兼容版本,一次覆盖 2018(CEP 8)到 2025 各版本,无需为每个 Adobe 版本单独适配。
也就是说:新增一款 Adobe 软件 = 宿主机表加一个 key + 写一份 jsx 脚本,manifest 由模板自动生成,适配成本被压到最低。
三、核心机制二:独立 Discord Application ID
Discord 的 Rich Presence 必须绑定一个 Application ID(决定状态卡片的大图标与活动标识)。项目没有"所有软件共用一个 ID",而是每款软件一个专属 ID,映射关系集中在src/rpc_client-src/client.js:
| 宿主代码 | Adobe 软件 | 专属 Application ID |
|---|---|---|
| PHSP / PHXS | Photoshop | 748586506888806460 |
| AEFT | After Effects | 748568089939148832 |
| PPRO | Premiere Pro | 748580494324662353 |
| AUDT | Audition | 750462631176830977 |
| ILST | Illustrator | 751430009716998144 |
| IDSN | InDesign | 753663267137912953 |
| AICY | InCopy | 756139390924750859 |
| FLPR | Animate | 756143118604173384 |
| DRWV | Dreamweaver | 756169802766221502 |
| PRLD | Prelude | 756139699051036797 |
| RUSH | Premiere Rush | 756158973241196595 |
| MEDIA_ENCODER | Media Encoder | 756149565429776453 |
运行时,入口src/rpc_client-src/index.js通过csInterface.getApplicationID()拿到当前所在宿主的代码(如在 Premiere Pro 中运行时返回PPRO),再从映射表取出对应 ID 初始化 Rich Presence 客户端(见src/rpc_client-src/rpc.js的login(),通过 IPC 连接 Discord 桌面端)。
🎨 独立 ID 带来的直接收益:每款软件可以上传自己的大图标(Ps/Ae/Pr…),Discord 状态卡"一眼认出你在用哪款 Adobe 软件",而不是一个通用的默认图。
四、宿主专属脚本:每款软件"各报各的状态"
模板把每款宿主路由到src/host/目录下的独立.jsx脚本(共 12 份),脚本只需实现统一约定的函数:state()、details()、smallImageKey()、smallImageText()、largeImageText()、partySize()、partyMax()。
举两个典型实现 📝:
- Photoshop(
src/host/PHXS.jsx):details 返回当前文档名;state 返回活动图层名;partySize/partyMax 统计当前图层序号与总图层数,展示为 "Layer 5 (1 of 32)"。 - After Effects(
src/host/AEFT.jsx):details 返回项目文件名;state 返回当前合成(含图层数);当检测到renderQueue.rendering时,party 字段变成渲染进度(第几项 / 共几项),并在 state 显示 "Rendering"。
主循环每秒(interval = 1000ms)轮询这些函数,只有内容变化时才调用rpc.setActivity()上报,避免无谓刷新。
五、最快安装方法(3 步上手)
- 下载 Release 中的扩展包,将
discord rpc文件夹解压到:- Windows:
C:\Program Files (x86)\Common Files\Adobe\CEP\extensions - macOS:
~/Library/Application Support/Adobe/CEP/extensions
- Windows:
- 打开调试模式(二选一):
- Windows 注册表:按版本选择
HKEY_CURRENT_USER\Software\Adobe\CSXS.9~12,新建字符串值PlayerDebugMode=1 - macOS 终端:
defaults write com.adobe.CSXS.12 PlayerDebugMode 1
- Windows 注册表:按版本选择
- 打开任意支持的 Adobe 软件 → 菜单栏
窗口 > 扩展 > Discord Rich Presence,状态即刻上线 ✅
📦 详细的官方安装文档见GUIDE.md,效果演示可参考下图:
⚠️ 小贴士:Apple Silicon(M 系列芯片)用户需通过 Rosetta 运行 Photoshop,并在"首选项"中开启 Legacy Extensions 后重启;Media Encoder、Acrobat、Lightroom Classic 暂不支持。
六、彩蛋:Cat 模式与配置系统
配置项模板定义在src/rpc_client-src/localstorage.js:Details / State / Timestamp / 大图标 等均可单独开关。此外还有一个catMode开关——打开后资料头像换成一只猫 🐱:
七、总结:这套架构为什么值得借鉴
| 设计 | 文件位置 | 解决的问题 |
|---|---|---|
| manifest.xml 模板生成器 | assets/templates/manifest.template.xml.js | 多宿主声明自动化,新增软件零重复劳动 |
| 宿主 → Application ID 映射表 | src/rpc_client-src/client.js | 每款软件独立 ID,图标与身份差异化 |
| 运行时宿主识别 | src/rpc_client-src/index.js | getApplicationID()自动匹配,无需用户配置 |
| 宿主专属脚本 | src/host/*.jsx | 每款软件读取自己的文档/合成/渲染状态 |
| 统一 RPC 客户端 | src/rpc_client-src/rpc.js | 断线 15 秒自动重连,状态增量上报 |
一套模板 + 一张映射表 + 一组同构脚本,adobe-discord-rpc 就把"适配 10+ 款 Adobe 软件"这件脏活变成了可复制的工程流程——这也是它作为多应用适配案例最值得普通开发者借鉴的地方。
【免费下载链接】adobe-discord-rpcDiscord Rich Presence extension for your adobe apps!项目地址: https://gitcode.com/gh_mirrors/ad/adobe-discord-rpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考