ClickOnce应用程序跳过要求更新(如果选择了skip,则跳过失败)

我更新了我的ClickOnce应用程序,然后当用户运行时,系统会询问他们是否要安装新版本。

我在一个高度控制的环境中工作。 当有更新可用时,必须安装(旧版本无法确保向后兼容数据库)。

另一种选择是如果按下跳过则运行失败(也可以正常工作)。

我需要一些方法来阻止他们运行旧版本的应用程序。

本文将回答您的问题。 我指的是你的文章,而不只是发布一个答案,因为文章中的所有内容都值得了解。

http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx

以下是文章的相关摘录:

强制ClickOnce更新

ClickOnce的一大卖点是自动更新。 关于更新,我得到的一个常见问题是“如何强制更新用户?”

关于强制用户更新,有三件事需要了解:

1)如果您的应用程序是在线应用程序,您的用户将始终运行最新版本; 每次访问应用程序时都会下载在线应用程序。 因此,对于在线应用程序,默认情况下会进行强制更新。

2)如果您的应用程序是已安装的应用程序,则可以使用MinimumRequiredVersion属性强制更新。 如果使用Visual Studio发布应用程序,则可以从“更新”对话框中设置此属性。

3)最后要注意的是,如果您的应用程序是已安装的应用程序(并且您尚未设置MinimumRequiredVersion属性),则ClickOnce将仅在用户从“开始”菜单快捷方式启动应用程序时提示“可用更新”对话框。 也就是说,如果应用程序是已安装的应用程序,并且用户从URL启动应用程序,则ClickOnce会强制进行更新。


我还发现了另一篇好文章:

ClickOnce:为智能客户端部署带来轻松和可靠性

这对我来说很有用。 将以下内容添加到项目文件中:

true $(ApplicationVersion) 

请注意, ApplicationVersion在项目文件中不能具有类似1.0.0.*的值,并且应该在构建时递增以使自动更新生效。

如果使用TeamCity ,要增加版本号,请转到项目的“ 构建配置”页面并设置以下系统属性

 system.ApplicationVersion = %build.number% 

你也可以让MSBuild按时间增加版本,如下所示:

 true $([System.DateTime]::Now.ToString(yyyyMMdd)) $([System.DateTime]::Now.ToString(mmss)) 1.0.$(BuildNumber).$(RevisionNumber) $(ApplicationVersion) 

通过取消选中我的工作原理是应用程序应该检查更新 ,并且应用程序开始更新而不会在两个版本之后提示用户。

在此输入图像描述

除了David的回答 ,只需在项目中安装AutoUpdateProjectsMinimumRequiredClickOnceVersion nuget包 。 一旦您的项目设置为检查更新并使用最低要求版本,这将处理确保所需的最低版本始终与您当前的版本匹配(即用户将始终被迫更新到最新版本)。

要在客户端上强制更新,必须将最小版本字段设置为等于当前正在部署的版本,这将强制更新而不是“跳过”选项。