如何使用VB.NET项目强制客户端在启动时更新应用程序?

时间:2012-07-05 08:51:00

标签: vb.net visual-studio-2008 clickonce

我们使用Visual Studio 2008在VB.NET中编写了一个项目,该项目将安装在17台客户端计算机上。

我们正在启动该项目并遇到了一个问题。

我们已在Visual Studio中创建了一个安装程序,并在客户端计算机上运行了setup.exe。一切正常,但如果同时我们发布另一个更新,在启动时,用户会收到一条通知,说明该项目的新版本可用。

以下是图片的链接,因为我没有足够的声誉来上传图片: http://postimage.org/image/7l7w6u841/

问题是弹出的消息框有一个“确定”和“取消”按钮,如果用户意外点击“取消”,他们的程序将不会被更新,这意味着他们将运行一个旧的版本,它可以导致问题。

我的问题是:有没有办法强制用户在启动时更新项目,几乎就像“你要么更新还是不能登录”这类东西?

感谢您的时间和任何帮助将不胜感激

费尔

2 个答案:

答案 0 :(得分:4)

如果您使用的是ClickOnce,可以通过指定所需的最低版本

来完成
在某些情况下,您可能希望要求用户运行应用程序的更新版本。例如,您可能会更改外部资源(如Web服务),这会阻止应用程序的早期版本正常工作。在这种情况下,您可能希望根据需要标记更新,并阻止用户运行早期版本。 要根据需要标记更新,请在“应用程序更新”对话框中单击“为此应用程序指定最低要求的版本”,然后指定发布版本(“主要”,“次要”,“构建”,“修订版”),该版本指定可以应用程序的最低版本号。安装。有关更多信息,请参阅应用程序更新对话框。

http://msdn.microsoft.com/en-us/library/s22azw1e(v=vs.100).aspx(向下滚动到需要更新

答案 1 :(得分:2)

最简单的方法可能是:

  • 在服务器上提供有关最新版本号的信息
  • 让应用程序在登录前检查此内容
  • 失败的请求应使用正在运行的版本号
  • 让应用程序将此值与正在运行的版本进行比较,并禁止登录(如果更大)

修改

这是一些伪代码,假设最新版本号为http://somewhe.re/version.txt

//Application start

System.Reflection.AssemblyName an=new System.Reflection.AssemblyName(System.Reflection.Assembly.GetExecutingAssembly().FullName);
Version current_version=an.Version;

String httptext;
Version server_version=current_version;
try {
  httptext=//Result from http://somewhe.re/version.txt
  server_version=new Version(httptext);
} catch {}

if (server_version>current_version) {
  //You must update!
}