你1.0里做了查找更新的功能么?通常比如做一段連到更新服務器,驗證下最新版本信息比如服務器目錄下放個記錄版本號和新版位置的txt,有了就用單寫的更新程序更新(不能更新正在運行的自己的關系)。至于沒做這部分而要讓原來的1.0自己“感應”到那是天方夜譚了。
成都創新互聯公司成立于2013年,是專業互聯網技術服務公司,擁有項目成都網站設計、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元下陸做網站,已為上家服務,為下陸各地企業和個人服務,聯系電話:18982081108
自動升級?提供個思路供你參考。
獨立編寫升級模塊,編譯為單獨文件,并且在主程序中通過事件或方法以調用外部程序的方式調用。
可另創二進制文件記錄,本機軟件版本號及版本日期。升級模塊內有與網絡文件日期或版本號比較的代碼。比較結果發現已經更新提示后由用戶選擇是否更新,更新時直接覆蓋。當然,更人性化的可以讓用戶選擇新功能安裝。
文件位置?一般可以通過注冊表確認。開始學時,可以直接記錄到一個文件里,更新時取出來就是了。
具體程序實現如下:
在應用程序工程MyApp中的部分代碼如下:
Option Explicit
'編譯后的應用程序名稱,注意沒有后綴 .EXE,本例為MYAPP
Private Const App_Name = "MyApp"
'最新的應用程序存放的路徑,本例為:服務器 NtServer01 共享目錄 Refresh
Private Const ExePath = "\\NtServer01\Refresh\"
'中介程序名稱,注意沒有后綴 .EXE,本例為 FastCopy
Private Const MidExeName = "FastCopy"
'應用程序入口
Private Sub Form_Load()
If UCase(Trim(App.EXEName)) UCase(Trim(App_Name)) Then
MsgBox "必須將訂單管理系統的名稱更改為: " + App_Name
End
End If
'判斷是否有最新版本的應用程序,如有則自動更新
Call ExeRefresh
'下面為訂單管理系統的正常操作 略 ... ....
End Sub
'版本檢查及更新過程
Private Sub ExeRefresh()
'定義四個臨時字符串變量
Dim s1 As String
Dim s2 As String
Dim s3 As String
Dim s4 As String
On Error Resume Next
'將本地應用程序MyApp.EXE的全路徑名存入 s1
'將本地中介程序FastCopy.exe的全路徑名存入 s3
s1 = "TNT"
If Len(App.Path) 3 Then
s1 = App.Path + "\" + Trim(App_Name) + ".exe"
s3 = App.Path + "\" + MidExeName + ".EXE"
Else
s1 = App.Path + Trim(App_Name) + ".exe"
s3 = App.Path + MidExeName + ".EXE"
End If
s4 = "TNT"
'將本地應用程序MyApp.EXE文件的修改時間存入 s4
s4 = FileDateTime(s1)
s2 = "TNT"
'將網絡上應用程序MyApp.EXE文件的修改時間存入 s2
s2 = FileDateTime(ExePath + App_Name + ".EXE")
If s2 = "TNT" Then
MsgBox "沒有找到最新的可執行文件:" + ExePath + App_Name + ".EXE" _
+ vbCrLf + vbCrLf + "原因1:存放最新EXE的服務器或者工作站沒有打開;" _
+ vbCrLf + "原因2:存放最新EXE的路徑錯誤或者EXE文件不存在;" _
+ vbCrLf + "請將此情況通知程序員." + vbCrLf + vbCrLf _
+ vbCrLf + "按確定按鈕后,將繼續運行本地EXE文件.", vbCritical, "提示"
End If
If s2 = "TNT" Or s4 = "TNT" Then Exit Sub
'如果網絡上應用程序MyApp.EXE文件的修改時間,大于本地MyApp.EXE文件的修改時間
'然后再運行本地MyApp.EXE ,中介程序退出后,整個更新過程結束.
If CDate(s2) CDate(s4) Then
'將網絡上的中介程序FastCopy.exe復制到本地,這樣可防止本地無中介程序時無法進行更新
FileCopy ExePath + MidExeName + ".EXE", s3
'則運行中介程序FastCopy.exe ,將最新的MyApp.EXE 復制到本地
s1 = Shell(s3 + " " + ExePath + "," + App_Name + ".EXE", vbNormalFocus)
'本地應用程序MyApp.EXE 終止運行,否則已經更新的MyApp.EXE無法覆蓋本地的MyApp.EXE .
End
End If
End Sub
將以上程序編譯為:MyApp.exe 存儲在共享目錄中.
問題補充:在中介程序工程 FastCopy 中的代碼如下:
向工程中增加一個窗體Form1 ,向Form1中添加一個定時器 Timer1 , 增加一個標簽控件 Label1 ,其 Caption 為 "應用程序正在更新",并調整窗體大小.
Option Explicit
Private sPath As String '用于存儲服務器上的共享目錄
Private sName As String '用于存儲應用程序名
Private Sub Form_Load()
Dim s As String
'從應用程序的命令行參數中取得數據
s = Trim(Command())
Dim p As Integer
p = InStr(1, s, ",")
If p 0 Then
'取得儲服務器上的共享目錄
sPath = Mid(s, 1, p - 1)
'取得應用程序名
sName = Mid(s, p + 1, Len(s) - p)
'定時器延時6秒,保證本地舊版應用程序退出運行
Timer1.Interval = 6000
Else
'參數錯誤則退出
MsgBox "Error", vbCritical, ""
Unload Me
End
End If
End Sub
s=trim(command())
'取得命令行參數
應該是這個形式:FastCopy.exe
網絡目錄名,文件名
's的返回值是
網絡目錄名,文件名
如:“\\liang\,myadd.exe"
'然后為了區分開目錄名和文件名,就查找","號
p=instr(1,s,",")
'如果找到就分別取“,”前面的目錄和后面的應用程序名。
分享名稱:vb.net程序自更新 更新vbios
轉載來于:http://vcdvsql.cn/article16/hejigg.html
成都網站建設公司_創新互聯,為您提供定制開發、品牌網站設計、ChatGPT、品牌網站制作、外貿建站、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯