Outlook加载项ClickOnce更新设置

Dam*_*mir 5 c# clickonce outlook-addin

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

  1. 启用手动更新
  2. 问用户他是否想要更新(如果不需要).

1)我尝试使用System.Deployment.Application和CheckForDetailedUpdate()函数,但即使更新成功,安装它也有问题:如果我重新启动我的插件它会从Outlook中消失,如果我没有旧版本卡在Outlook中(和虽然通过UNC路径进一步更新表明已成功完成更新,但行为很奇怪.

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

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

如何部署具有上述要求的Outlook加载项?

Rob*_*Net 6

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

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

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

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