如何让自定义Word加载项仅支持Word桌面版?
让Word加载项仅支持桌面版的解决方案
要让你的加载项仅针对Word桌面版(Windows/Mac),同时通过Office商店认证,需要结合清单配置、版本限制和兜底检查三个层面操作,具体步骤如下:
1. 在manifest.xml中限制支持的平台
直接在<Hosts>节点中为每个Host指定仅支持桌面平台,这样Office商店会自动过滤Web版用户,不会将你的加载项推送给他们。修改后的配置如下:
<Hosts> <!-- 仅支持Windows和Mac桌面版Word --> <Host Name="Document" Platform="Windows" /> <Host Name="Document" Platform="Mac" /> </Hosts>
这是满足认证团队要求的核心操作——从元数据中移除Web端支持。
2. 补充Office版本要求
由于context.document.shapes属于WordApiDesktop 1.2 API集,需要指定支持该API的最低Office版本,避免旧版桌面用户安装后无法使用。在<Requirements>中添加<OfficeAppVersion>节点:
<Requirements> <Sets> <Set Name="WordApi" MinVersion="1.9"/> </Sets> <!-- Windows版最低版本(对应WordApiDesktop 1.2) --> <OfficeAppVersion MinVersion="16.0.11629.0"/> </Requirements>
- Windows版Office:需2019或365版本1809及以上(对应版本号16.0.11629.0)
- Mac版Office:需2019或365版本16.29及以上(对应版本号可设为16.29.0)
3. 运行时兜底检查(符合认证要求)
虽然通过清单限制了平台,但仍建议在加载项启动时做快速检查,确保当前环境支持Shapes API,避免用户手动侧加载到Web版时出现崩溃。注意不能仅弹出提示,需优雅禁用功能并告知用户:
Office.onReady(async () => { try { await Word.run(async (context) => { // 检查Shapes API是否可用 const shapesExists = typeof context.document.shapes !== 'undefined'; await context.sync(); if (!shapesExists) { // 替换页面内容,告知用户不支持当前环境 document.getElementById('app-container').innerHTML = '<p style="padding:20px;">此加载项仅支持Word桌面版(Windows/Mac),请在对应环境中使用。</p>'; // 禁用所有功能按钮 document.querySelectorAll('.addin-action').forEach(btn => btn.disabled = true); } else { // 初始化加载项正常功能 initAddinFeatures(); } }); } catch (error) { // 处理初始化错误,同样告知用户环境不支持 document.getElementById('app-container').innerHTML = '<p style="padding:20px;">当前环境不支持此加载项,请使用Word桌面版。</p>'; } });
这种方式是兜底保障,而非主要限制手段,符合认证团队对兼容性的要求。
4. 商店提交时的元数据设置
在Office商店提交加载项时,进入“目标平台”设置页面,仅勾选Windows和Mac,取消勾选Web端选项。这会和manifest中的配置形成双重保障,确保Web版用户无法搜索到你的加载项。
内容的提问来源于stack exchange,提问作者Manuel Rauber
相关产品推荐
相关产品推荐

