謝謝 大家提供方向
目前是在原VB6內新增 FORM 內容 配合網路檔FastCopy.exe 成功自動更新
Private Const App_Name = "SYERP"
Private Const ExePath = "\IP\refresh"
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 '判
Form1.Show
Unload Me
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
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"
s4 = FileDateTime(s1)
s2 = "TNT"
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 '如果 '然後再
If CDate(s2) > CDate(s4) Then '日期
FileCopy ExePath + MidExeName + ".EXE", s3
s1 = Shell(s3 + " " + ExePath + "," + App_Name + ".EXE", vbNormalFocus)
'本地
End
End If
End Sub
執行中的程式應該無法被替換掉吧..
一般來說都是先執行一個 update 程式,執行之後先去檢查是否有檔案需要更新
若沒有需要更新的話,就執行主程式
若有需要更新的話,將檔案下載並覆蓋掉,完成後再執行主程式
MS Windows設計,執行中的檔案沒辦法被更新,要設計成比對完->呼叫更新程式->自我了斷->更新程式判斷主程式已結束->更新程式進行更新->更新程式呼叫abc.exe->更新程式自我了斷。
就像LINE電腦版一樣,
不過他最近都不會自動更新,
但是每次都自我了斷 @@,
我每次只能使用1分鐘就會自我了斷了...
這麼慘,還好我用Linux沒有電腦版只能用chrome外掛。附帶一提,Linux可以直接覆蓋執行中的檔案,就沒有這種麻煩。
我也是最近開始用 Ubuntu 桌面版,windows已經沒在開機了,工作上跟娛樂需求完全滿足,只是一些應用程式要找一下(好處是多半是免費的還滿好用的)
https://www.webteach.tw/?p=2184