Outlook加载项ClickOnce更新设置

时间:2011-08-18 11:25:23

标签: c# clickonce outlook-addin

我正在尝试使用ClickOnce部署Outlook加载项。 在设置更新选项时,我注意到Outlook添加项目的选项少于Win Forms项目。例如,我无法指定所需的最低版本。这是为什么?另外,我想:

  1. 启用手动更新
  2. 询问用户他是否想要更新(如果不需要)。
  3. 1)我尝试使用System.Deployment.Application和CheckForDetailedUpdate()函数,但即使更新成功也存在安装问题:如果我重启我的插件它会从Outlook中消失,如果我不老虽然通过UNC路径进一步更新表明已成功完成更新,但版本仍陷入Outlook(并且表现得很奇怪)。

    2)定期发布没有添加Mage或MageUI的特殊选项本身,但加载项似乎更新而不询问用户。谷歌搜索有点暗示人们正试图做相反的事情,所以我有点疑惑,为什么它默认不提示更新。

    我尝试使用MageUI编辑从Visual Studio生成的清单,但它为应用程序清单生成无效的XML(?! - 它在“dependentAssembly”节点中错过了“assemblyIdentity”节点),并且当我从VS生成的原始清单中添加丢失的节点时(并在之后更新并签名),安装抱怨组装哈希无效。

    如何根据上述要求部署Outlook加载项?

1 个答案:

答案 0 :(得分:6)

VSTO应用程序(Office加载项)仅支持ClickOnce的某些位。你可以尝试添加代码并进行程序化更新,但微软的ClickOnce领导表示它并不是真正意图使用,部分内容可能无效。 (不,没有详细说明哪些部分 - 你必须做一些试验和错误)。

另请注意,vsto部署的工作和运行方式是:Outlook检出vsto应用程序,并将dll(s)复制到阴影位置并使用Outlook加载。更新vsto应用程序时,它会在单击一次缓存中更新它,但不会在Outlook中更新。当您关闭Outlook并重新打开它时,它会找到新版本,将其复制到阴影位置并加载它。您无法重新启动vsto位并让它执行任何操作。用户必须重新启动Outlook。

这是启动Office应用程序时执行更新的原因之一。它会查找新版本,必要时进行更新,然后将其加载到Outlook中并使用它。

话虽如此,另一种实现目标的方法是编写一个可以更新加载项的Windows窗体应用程序。基本上部署一个winforms应用程序,除了通过clickonce调用vsto应用程序之外,第一次没有显示任何内容(process.start是你的朋友)。然后你可以让outlook外接程序调用winforms app看看是否有更新,如果有,它可以提示更新win窗体应用程序,然后卸载并重新安装办公室加载项或更新它