我以前见过这样的东西。我认为发生的事情是,当应用程序启动时,ClickOnce不检查更新,这是您设置的。当你运行应用程序时,更新检查以编程方式完成,并且找到更新并且可能设置了标志。然后应用程序关闭而不更新,但标志仍然被设置。下一次启动应用程序ClickOnce仍然不检查更新,但因为有一个标志设置有更新可用,它会提示用户查看他们是否想要获取更新。我猜这是设计。
关于跳过更新的第二点,在有另一个更新之前不会再提示您。我相信这是有计划的,如果你想回去做更新,你需要去应用程序的ClickOnce安装页面。
理想情况下,您希望能够执行的操作与使用Application Deployment API以编程方式跳过使用ClickOnce对话框时发生的相同。我已经快速浏览了可用的公共方法,但我看不到任何有关跳过的内容,但也许您可以找到某些内容。
编辑
只是再看看API。你是否调用CheckForUpdate()或CheckForDetailedUpdate()而不使用布尔参数?如果是这样,你所得到的提示的原因是因为我说的是更新检查被存储:
如果的checkForUpdate发现有可用的更新,并且用户 选择不安装它,ClickOnce的会提示用户在下次运行应用程序时,可以使用更新 。没有 的方法来禁用此提示。 (如果应用程序是必需的 更新的ClickOnce将安装它,而不提示。)
相反,你想打电话给你使用的是有假的布尔值的方法,布尔标志决定一个对话框,应显示给用户。
persistUpdateCheckResult类型:System.Boolean 如果为false,更新将被默默地应用并不会显示对话框。
当你说你编程方式检查,您使用的是API CheckForDetailedUpdate? – Nikki9696
我使用CheckForUpdateAsync –