You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Office Add-in编程加载最新版本、缓存清理及ClickOnce部署方案咨询

关于Office Add-in自动更新与部署的三个问题解答

1. 能否通过编程方式自动刷新Admin Managed Add-in以加载最新版本?

很遗憾,目前没有办法通过编程直接触发Admin Managed Add-in的即时自动刷新。原因在于:

  • Admin Managed Add-in的更新逻辑由Office客户端后台控制,Office会定期(通常24小时左右)检查Admin中心推送的最新版本,这个检查流程属于客户端系统级操作,Add-in的JavaScript代码处于沙箱环境中,没有权限干预或触发该检查。
  • 即便是手动刷新Add-in列表的操作,也需要用户在Office的Add-ins管理界面主动触发,这个动作同样无法通过Add-in内的代码调用API实现。

不过可以做个折中方案:在任务窗格里加一个「检查更新」按钮,点击时通过你的后端服务判断当前Add-in版本是否为最新,如果不是,提示用户手动进入Add-ins界面点击刷新按钮,引导用户完成更新。

2. 能否通过任务窗格的JS代码清除Office缓存?

同样,Office JS API并没有提供程序化清除缓存的方法,而且受沙箱安全机制限制,Add-in的JS代码无法访问或操作Office客户端的缓存文件:

  • 桌面版Office的缓存文件存在系统本地路径(比如Windows的%LOCALAPPDATA%\Microsoft\Office\16.0\Wef\),JS代码没有权限访问这些系统级文件;
  • Web版Office的缓存依赖浏览器缓存,Add-in的JS也无法直接控制浏览器的缓存清除操作,只能引导用户手动执行。

如果需要强制加载最新版本,除了引导手动清缓存,还可以给Add-in的资源文件(JS、CSS等)添加版本号后缀(比如app.v2.js),这样新版本的资源URL不同,浏览器/Office客户端会自动加载新资源,不会使用缓存的旧版本。

3. 能否像VSTO那样用ClickOnce部署Office-js Add-in?

答案是否定的。ClickOnce是针对.NET桌面应用(比如VSTO)的部署技术,而Office-js Add-in是基于Web的应用,两者技术栈和运行环境完全不同:

  • Office-js Add-in运行在Office客户端内置的Web视图中,部署方式主要包括:Office商店公开部署、Admin中心集中部署(也就是你当前使用的方式)、手动侧加载(开发测试用);
  • 如果你需要类似ClickOnce的自动更新体验,Admin中心的集中部署其实已经是最接近的方案——Admin上传新版本后,Office客户端会在后台自动检查并更新,只是存在一定延迟。如果需要更即时的更新,只能引导用户手动触发刷新。

内容的提问来源于stack exchange,提问作者Kashif

火山引擎 最新活动