2010-05-06 80 views
3

我们使用ClickOnce其中检查和对应用程序的启动程序执行更新部署WPF应用程序。除了用户对我们的“你想更新?”选择“否”的情况之外,这通常表现完美。提示。在这种情况下,下次用户启动应用程序(一致)时,ClickOnce框架的“可用更新”对话框将启动,并提供更新或跳过选项。这不会导致技术问题,但会让用户感到困惑,因为它可能会看到两个完全不同样式的对话框。 (如果用户选择跳到ClickOnce对话框,则应用程序将启动并呈现我们自己的“Update Available”对话框)。任何想法为什么ClickOnce框架对话框在这种情况下显示?谢谢。配置为执行更新ClickOnce应用程序编程仍然有时显示的ClickOnce更新可用提示

回答

7

在“更新”对话框(它位于“发布”选项卡中)中,是否已取消选中用于检查更新的框?

[编辑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))。

+0

我们没有使用Visual Studio发布,我使用MSBuild设置了一个自动发布。 GenerateDeploymentManifest任务指定Install =“true”,UpdateEnabled =“false”,并且不指定UpdateMode,在这种情况下这应该是不相关的。谢谢。 – 2010-05-06 21:35:00

+0

好的,明白了。我一直看到这个报告(与w/Visual Studio相同)。我会看看我是否可以重新创建它,并查看是否可以重新创建它。如果可以的话,我会提交一个bug并与ClickOnce产品团队讨论。我会回报... – RobinDotNet 2010-05-07 17:25:46

+0

嗨,罗宾,你是否设法复制这个?这是ClickOnce中的错误吗?如果有一种解决方案,我们真的希望在上线之前实施它。谢谢。 – 2010-05-23 21:18:11

0

CheckForUpdateCheckForDetailedUpdate应该用参数false调用方法。

这些方法的文档intellisense令人困惑。

相关问题