【发布时间】:2018-09-27 17:46:58
【问题描述】:
我已经为此工作了几个月,但没有真正成功。 我拼凑了来自不同来源的代码,这就是我所拥有的。
有时它按预期工作,有时应用程序只是冻结,有时它更新 4 次。
我有一个 5 分钟的计时器间隔,用于检查更新是否可用,以及是否有更新和重新启动。简单吧?
应用程序是网络部署的,有时用户会让应用程序运行数周而不退出。发布更新后,它们可能会因为新功能或数据库更改而出错。
为什么会有如此不同的结果?
这是表单加载事件...
Me.Timer2.Interval = 300000 Me.Timer2.Start()
这是 Timer_Tick 事件...
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
If CheckForUpdateDue() Then
My.Forms.PopupLoading.Show()
My.Forms.PopupLoading.Label1.Text = "Project is Updating Please Wait..."
My.Forms.PopupLoading.Refresh()
Dim ad As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
ad.Update()
My.Settings.Save()
My.Forms.PopupLoading.Close()
My.Forms.Popup_Restarting.Show()
Application.Restart()
End If
End Sub
这里是 CheckForUpdateDue 函数...
Private Function CheckForUpdateDue() As Boolean
Dim isUpdateDue As Boolean = False
If ApplicationDeployment.IsNetworkDeployed Then
Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
If AD.CheckForUpdate() Then
isUpdateDue = True
End If
End If
CheckForUpdateDue = isUpdateDue
End Function
【问题讨论】:
-
您能否检查更新,调用一个批处理文件,等待 5 秒后重新启动应用程序,关闭应用程序,然后让 Click-Once 完成工作?
-
或另一个具有应用程序/数据库版本的表,如果版本错误,则强制应用程序关闭?
标签: vb.net deployment clickonce auto-update intranet