我有一个用 VB 编写的程序,我将其发布到网络驱动器。我正在网络上的另一台服务器上运行该应用程序。
一切运行良好,我现在的目标是在应用程序已更新时向用户显示一个对话框。
用于检查这一点的代码如下所示。
If ApplicationDeployment.IsNetworkDeployed Then
Dim deployment As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
If deployment.CheckForUpdate() Then
Dim currentVersion As Version = deployment.CurrentVersion
Dim updatedVersion As Version = deployment.UpdatedVersion
lbl_mes_text.Text = "Client Version [" & updatedVersion.ToString() & "] is now available. " &
vbCrLf &
"Current Version [" & currentVersion.ToString() & "] " &
vbCrLf &
"Please exit the dialog and login again."
If (Not pnl_New_Dialog.Visible) Then pnl_New_Dialog.Visible = True
End If
End If
所以我知道它工作正常,因为当我发布新版本时,CheckForUpdate() 确实返回 true,并且我得到了弹出窗口。
问题是我想说的弹出窗口的字符串
“客户端版本 [新版本] 现已推出。当前版本 [当前版本]”
这样用户可以看到新版本和当前版本的版本号。我遇到的问题是两个版本都填充了当前版本,我的弹出窗口如下所示。
我正在尝试让弹出窗口的[新版本]部分显示最新版本。对于所附图片,最新版本是 0.0.0.52,但它只显示 .51 版本。
好吧,我明白了。它并不像人们想象的那么直观。
在获取版本之前,您必须调用
deployment.Update()
方法。
Dim deployment As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
If deployment.CheckForUpdate() Then
If (Not pnl_New_Dialog.Visible) Then
deployment.Update()
Dim currentVersion As Version = deployment.CurrentVersion
Dim updatedVersion As Version = deployment.UpdatedVersion
lbl_mes_text.Text = "Client Version [" & updatedVersion.ToString() & "] is now available. " &
vbCrLf &
"Current Version [" & currentVersion.ToString() & "] " &
vbCrLf &
"Please exit the dialog and login again."
pnl_New_Dialog.Visible = True
End If
End If