C# ClickOnce应用程序跳过请求更新(如果选择了skip,则启动失败)

C# ClickOnce应用程序跳过请求更新(如果选择了skip,则启动失败),c#,visual-studio-2008,clickonce,.net-3.5,visual-studio-2008-sp1,C#,Visual Studio 2008,Clickonce,.net 3.5,Visual Studio 2008 Sp1,我更新了ClickOnce应用程序,当用户运行时,系统会询问他们是否要安装新版本 我在一个高度受控的环境中工作。当更新可用时,必须安装更新(旧版本不能确保与数据库向后兼容) 另一个选项是,如果按skip,则运行失败(也可以正常运行) 我需要一些方法来阻止他们运行旧版本的应用程序。本文回答了您的问题。我指的是这篇文章,而不是仅仅给出答案,因为这篇文章中的所有内容都值得了解 以下是文章的相关摘录: 强制ClickOnce更新 它的一大卖点是 ClickOnce是自动更新。什么之中的一个 我在这方面

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

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

另一个选项是,如果按skip,则运行失败(也可以正常运行)


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

本文回答了您的问题。我指的是这篇文章,而不是仅仅给出答案,因为这篇文章中的所有内容都值得了解

以下是文章的相关摘录:

强制ClickOnce更新

它的一大卖点是 ClickOnce是自动更新。什么之中的一个 我在这方面遇到的常见问题 更新的意思是“我如何才能强制 用户的最新信息?”

有三件事需要知道 关于强制用户更新:

1) 如果你的申请是在线的 应用程序,您的用户将始终 运行最新版本;在线 的 每次都会下载应用程序 该应用程序已被访问。因此 通过在线应用程序,您可以 默认情况下强制更新

2) 如果您的应用程序是已安装的 应用程序,您可以通过 使用MinimumRequiredVersion 属性如果你发布你的 使用VisualStudio的应用程序,您可以 可以从更新中设置此属性 对话

3) 最后要注意的是,如果 您的应用程序已安装 应用程序(并且您尚未设置 MinimumRequiredVersion属性) ClickOnce将向用户提示 仅当 用户从中启动应用程序 开始菜单快捷方式。也就是说,如果 应用程序是已安装的 应用程序和用户启动 来自URL的应用程序,单击一次 强制更新


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


取消勾选应用程序应检查更新,应用程序在两个版本后开始更新,而不提示用户


要在客户端上强制更新,您必须将最小版本字段设置为您正在部署的当前版本,这将强制更新whout“skip”选项。

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

<UpdateRequired>true</UpdateRequired>
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion>
您还可以使用以下内容使MSBuild按时间递增版本:

<UpdateRequired>true</UpdateRequired>
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber>
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber>
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion>
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion>
true
$([System.DateTime]::Now.ToString(yyyyMMdd))
$([System.DateTime]::Now.ToString(mmss))
1.0.$(建筑编号)。$(修订编号)
$(应用程序版本)

此外,只需在项目中安装。一旦您将项目设置为检查更新并使用最低要求版本,这将确保最低要求版本始终与当前版本匹配(即,用户的版本将始终被强制更新为最新版本)。

回答得好!非常感谢。谢谢你的回答,非常有帮助!:)还有一点需要注意的是,sayedhashimi.com链接已断开。我已经记录了在使用方法2时自动更新MinimumRequiredVersion属性的过程。我现在创建了一个NuGet软件包,该软件包自动处理我在上面的评论中提到的所有设置/安装。NuGet软件包位于,这篇博文对此进行了详细解释()。这是另一个站点上第一个链接的缓存内容-只有使用Clickonce API在代码中处理更新时,这才有效:是的,我的代码在程序中处理更新。如果程序集有更新的版本,我将重新加载代码
<UpdateRequired>true</UpdateRequired>
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber>
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber>
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion>
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion>