iT邦幫忙

0

[已解決] VB6 自寫主程式更新版本謝謝

vb6

我用VB6自寫一個小程式 abc.exe。將新版程式abc.exe置網路芳鄰\IP\abc資料夾
如USER電腦端執行abc.exe 會去網路芳鄰\IP\abc資料夾\abc.exe比對程式版本日期如日期較新會自動下載替換abc.exe
PS:請問可行嗎?
==============
謝謝 大家提供方向
目前是在原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

cpc0935 iT邦新手 2 級 ‧ 2018-02-09 11:28:45 檢舉
可行。
另一方法是將程式版本資訊寫在ini檔,主機及user端都有。做更新比對之用。
chare168 iT邦新手 5 級 ‧ 2018-02-09 11:33:17 檢舉
請問有範例 >>目前沒有方向
0
allenlwh
iT邦研究生 5 級 ‧ 2018-02-09 12:01:50
最佳解答
  1. abc.exe 內呼叫更新程式(autoupdate.exe)
    -->Shell '網路芳鄰\IP\abc資料夾\autoupdate.exe', vbHide
  2. abc.exe結束
    -->unload me
  3. 由autoupdate.exe 進行更新判斷,替換新版後,呼叫abc.exe,
    -->Shell '網路芳鄰\IP\abc資料夾\abc.exe', VbNormalFocus
  4. autoupdate.exe 結束
    -->unload me
0
danking
iT邦研究生 3 級 ‧ 2018-02-09 11:33:10

執行中的程式應該無法被替換掉吧..
一般來說都是先執行一個 update 程式,執行之後先去檢查是否有檔案需要更新
若沒有需要更新的話,就執行主程式
若有需要更新的話,將檔案下載並覆蓋掉,完成後再執行主程式

0
James
iT邦大師 7 級 ‧ 2018-02-09 11:38:16

MS Windows設計,執行中的檔案沒辦法被更新,要設計成比對完->呼叫更新程式->自我了斷->更新程式判斷主程式已結束->更新程式進行更新->更新程式呼叫abc.exe->更新程式自我了斷。

小魚 iT邦研究生 1 級 ‧ 2018-02-09 11:57:54 檢舉

就像LINE電腦版一樣,
不過他最近都不會自動更新,
但是每次都自我了斷 @@,
我每次只能使用1分鐘就會自我了斷了...
/images/emoticon/emoticon02.gif

James iT邦大師 7 級 ‧ 2018-02-09 12:30:08 檢舉

這麼慘,還好我用Linux沒有電腦版只能用chrome外掛。附帶一提,Linux可以直接覆蓋執行中的檔案,就沒有這種麻煩。

我也是最近開始用 Ubuntu 桌面版,windows已經沒在開機了,工作上跟娛樂需求完全滿足,只是一些應用程式要找一下(好處是多半是免費的還滿好用的)
https://www.webteach.tw/?p=2184

我要發表回答

立即登入回答