2011-08-18 70 views
5

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

  1. 启用手动更新
  2. 询问用户是否他甚至想更新(如果不需要的话)。

1)我尝试使用System.Deployment.Application和CheckForDetailedUpdate()函数,但即使更新成功,则在安装它的问题:如果我重新启动我的插件从Outlook中消失,如果我不老版在Outlook中卡住(表现奇怪),尽管通过UNC路径进一步更新表明更新已成功完成。

2)定期发布时没有添加Mage或MageUI本身的特殊选项,但加载项似乎在不询问用户的情况下进行更新。谷歌搜索有点反应,人们试图做相反的事情,所以我有点困惑,为什么它不提示默认更新。我试着编辑用MageUI从Visual Studio生成的清单,但它生成应用程序清单的无效XML(?! - 它错过了“dependentAssembly”节点中的“assemblyIdentity”节点),并且当我添加从原始清单生成的缺少节点VS(更新并在之后进行签名),安装会抱怨组件哈希无效。

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

回答

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应用程序,查看是否有更新,如果有更新,它可能会提示更新赢取窗体应用程序,然后卸载并重新安装Office加载项或更新它。

+1

似乎色带部分有点问题。而且几乎不是唯一的。谢谢你的回答,至少我知道我不应该再浪费时间去做那些不该做的事情。 – Damir

+0

@RobinDotNet这个答案今天仍然有效,大约5年?我开发了一个Excel插件(基于VSTO的应用程序,通过FTP发布并通过HTTP安装),Excel启动时的自动更新过程正常。但是,我一直在寻找一种方法,允许用户检查更新并通过在添加界面中单击按钮来应用更新。仍然无法实现这一目标?谢谢。 –