配置为执行更新ClickOnce应用程序编程仍然有时显示的ClickOnce更新可用提示
我们使用ClickOnce其中检查和对应用程序的启动程序执行更新部署WPF应用程序。除了用户对我们的“你想更新?”选择“否”的情况之外,这通常表现完美。提示。在这种情况下,下次用户启动应用程序(一致)时,ClickOnce框架的“可用更新”对话框将启动,并提供更新或跳过选项。这不会导致技术问题,但会让用户感到困惑,因为它可能会看到两个完全不同样式的对话框。 (如果用户选择跳到ClickOnce对话框,则应用程序将启动并呈现我们自己的“Update Available”对话框)。任何想法为什么ClickOnce框架对话框在这种情况下显示?谢谢。配置为执行更新ClickOnce应用程序编程仍然有时显示的ClickOnce更新可用提示
在“更新”对话框(它位于“发布”选项卡中)中,是否已取消选中用于检查更新的框?
[编辑6/18/2010]这里有一些我认为可以解决您的问题的更多信息。
的CheckForUpdate()
和CheckForDetailedUpdate()
方法持续更新检查到磁盘的结果。下次应用程序运行时,ClickOnce机制会发现有更新可用,并提示用户使用不需要的窗口。
显然在更新过程分为两个步骤:
- 步骤1 - 检查更新的部署位置,坚持什么发现到当地的ClickOnce更新缓存中的信息。
- 步骤2 - 检查本地的ClickOnce更新缓存,并与更新窗口提示用户是否有更新的指示。
取消选中“应用程序应该检查更新”选项似乎只会导致ClickOnce跳过步骤1.步骤2仍然会发生。
CheckForUpdate()
和CheckForDetailedUpdate()
方法与步骤1具有相同的效果 - 数据持久化到磁盘,因此下次运行应用程序时,步骤2会看到更新并显示更新窗口。
诀窍是防止CheckForUpdate()
和CheckForDetailedUpdate()
从坚持这个信息到磁盘。这可以通过使用该参数化过载(CheckForUpdate(bool persistUpdateCheckResult)
或CheckForDetailedUpdate(bool persistUpdateCheckResult)
)设置为false
参数来完成(即,CheckForUpdate(false)
或CheckForDetailedUpdate(false)
)。
CheckForUpdate
或CheckForDetailedUpdate
应该用参数false
调用方法。
这些方法的文档intellisense
令人困惑。
我们没有使用Visual Studio发布,我使用MSBuild设置了一个自动发布。 GenerateDeploymentManifest任务指定Install =“true”,UpdateEnabled =“false”,并且不指定UpdateMode,在这种情况下这应该是不相关的。谢谢。 – 2010-05-06 21:35:00
好的,明白了。我一直看到这个报告(与w/Visual Studio相同)。我会看看我是否可以重新创建它,并查看是否可以重新创建它。如果可以的话,我会提交一个bug并与ClickOnce产品团队讨论。我会回报... – RobinDotNet 2010-05-07 17:25:46
嗨,罗宾,你是否设法复制这个?这是ClickOnce中的错误吗?如果有一种解决方案,我们真的希望在上线之前实施它。谢谢。 – 2010-05-23 21:18:11