防止在打开文档时出现 VSTO Office 自定义安装程序提示

Prevent VSTO Office Customisation installer prompt from appearing when Opening a document

我已经为自定义模板开发了 VSTO 4.0 文档自定义,它工作正常并使用 ClickOnce 安装。

但是,我的要求之一是生成的文档,即生成的 .docx 文件,与我组织外部的用户共享,我不希望 VSTO 提示他们安装自定义.

外部用户应该能够在没有任何 VSTO 提示的情况下打开文档并将其视为普通的 Word 文档,当文档被外部用户保存并发回时,我可以打开文档和VSTO 自定义将按预期工作。

这是一个可用性场景,我的组织和外部组织需要协作处理文档,但我不能指望外部组织安装 VSTO 自定义。他们通常只会插入文字、图片并添加评论。

有什么方法可以实现这种情况吗?

顺便说一句,在现阶段使用 Office 365 的 Web 插件不是一个可行的选择,因为某些自定义要求无法使用 Word Javascript API.

您需要先从 VSTO 文档中删除 link,然后才能将其提供给外部人员使用。当文档返回时,您可以 link 将自定义返回给它。

有一整个MSDN article on the topic, as well as a blog article

简而言之,有两种方法可以完成此操作:在打开的文档中或在关闭的文档中。

  1. 运行 Document.RemoveCustomization 方法,例如,可以将其分配给功能区自定义中的按钮。这会将存储在自定义文档属性中的 links 删除到 VSTO 代码(这是文档本身在打开时查找代码的方式),以及任何缓存数据。

  2. 使用ServerDocument.RemoveCustomization方法,本质上做同样的事情。

    ServerDocument.RemoveCustomization(documentPath);

重新附加只能通过 ServerDocument.AddCustomization 完成,符合逻辑。

  string deployManifestPath = System.Environment.GetFolderPath(
                    Environment.SpecialFolder.Desktop) 
                    + @"\Publish\WordDocument1.vsto";
  Uri deploymentManifestUri = new Uri(deployManifestPath);
  ServerDocument.AddCustomization(documentPath, deploymentManifestUri);