VB.net 使用 Click Once 发布应用程序,如何获取更新版本

问题描述 投票:0回答:1

我有一个用 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,并且我得到了弹出窗口。

问题是我想说的弹出窗口的字符串

“客户端版本 [新版本] 现已推出。当前版本 [当前版本]”

这样用户可以看到新版本和当前版本的版本号。我遇到的问题是两个版本都填充了当前版本,我的弹出窗口如下所示。

PopUp Window

我正在尝试让弹出窗口的[新版本]部分显示最新版本。对于所附图片,最新版本是 0.0.0.52,但它只显示 .51 版本。

vb.net clickonce
1个回答
0
投票

好吧,我明白了。它并不像人们想象的那么直观。

在获取版本之前,您必须调用

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
© www.soinside.com 2019 - 2024. All rights reserved.