2

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

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

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

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

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

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

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

菲尔

4

2 回答 2

4

如果您使用 ClickOnce,可以通过指定最低要求版本来完成

有时您可能希望要求用户运行应用程序的更新版本。例如,您可能会对外部资源(如 Web 服务)进行更改,这会阻止早期版本的应用程序正常工作。在这种情况下,您可能希望将您的更新标记为需要并阻止用户运行早期版本。要将更新标记为需要,请在“应用程序更新”对话框中单击“指定此应用程序所需的最低版本”,然后指定发布版本(Major、Minor、Build、Revision),它指定了可以使用的应用程序的最低版本号被安装。有关详细信息,请参阅应用程序更新对话框。

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

于 2012-07-06T10:21:36.617 回答
3

最简单的方法可能是:

  • 在服务器上提供有关成为最新版本号的信息
  • 让应用程序在登录前检查此项
  • 失败的请求应该使用正在运行的版本号
  • 让应用程序将此值与正在运行的版本进行比较,如果更大则不允许登录

编辑

这是一些伪代码,假设最新版本号在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!
}
于 2012-07-05T08:56:05.990 回答