主題:如何達成【自動更新程式】~更換執行檔? 來源:範例程式:SupLDN 撰稿:小紀 版本:VB6 / VB5 / VB4-32 -------------------------------------------------------------------------------- 自動更新程式,可以簡略的分成二個範疇,說明如下:1、 從 Internet 上下載更新: 將較新版本的應用程式從 Internet 上下載後,再更換掉目前正在執行的應用程式. 目前很多軟體都有提供這樣的功能,例如:Pccillin 等掃毒軟體(如圖一)
(圖一)
2、 從網路磁碟機或磁片上下載更新: 較新版本的應用程式就在 Local 端的主機上或更新磁片上. 在小紀服務的集團,所有公司的應用系統,執行檔至少就有 200 個,這些執行檔都統一放在公司的主機中,程式如果有任何的修改或更新版本,也都直接放到主機上,之後,一旦使用者在 Client 端重新啟動程式,便會自動先和主機上的執行檔比較版本,再決定如何執行,結果可能有二種: ~ Server 上的版本較新:自動從主機(或磁片)上複製較新版本的執行檔,並啟動新版的程式. ~ Server 上的版本相同:不做任何動作,繼續執行原來在 Client 端的程式. 在整個自動更新的過程中,可分成以下幾個階段:1、 檢查程式是否有新版本 比對主機上的程式版本和目前機器中的程式版本是否相同,方法有很多種,像 Pccillin 的病毒碼是以副檔名的數字來判別,比較簡單的方式,可以比較應用程式檔案的日期. 2、 下載新版本的程式 若是 Server 上的版本較新,就將檔案複製到自己的機器中. 3、 更換執行檔或其他資料檔 將檔案複製到自己的機器之後,要停止目前正在執行的程式,並啟動最新下載的程式. 在本單元中,我們要討論的是更新過程中的第三個階段,也就是執行檔的更換.所以本單元的範例,我們有了假設的狀況,就是假設程式(Start.exe)有了新版本,而且已經下載完畢放在 C:\ 根目錄中.應用程式啟動後畫面如下:整個程式只有二個事件需要處理,分別說明如下:1、 Command1_Click() 事件 ~檢查新的執行檔(C:\Start.exe)是否真的存在? ~將新的執行檔複製到應用程式所在的目錄中,並更名為 Update.exe. ~啟動新版本的程式 Update.exe,執行時傳入參數 S ~結束目前正在執行的程式 Start.exe ~到此為止,整個置換動作只算進行到一半喔! 程式碼如下:
Private Sub Command1_Click() '判斷更新檔案是否存在 If Dir("C:\START.EXE") <> "" Then '複製到本端路徑,並更名為 Update.exe FileCopy "C:\START.EXE", App.Path & "\UPDATE.EXE" '執行新下載的程式(暫時更名為 Update.exe),傳入的參數是 S Shell App.Path & "\UPDATE.EXE S" '關閉程式,因為已交由 UPDATE.EXE 來控制 Unload Me End If End Sub
'判斷有無更新參數 If Command = "S" Then '延遲 3 秒,等待 START.EXE 執行結束 '(其實應該改用 API 來偵測 START.EXE 是否執行結束) Do While Timer - T < 3 DoEvents Loop '將 START.EXE 更新 FileCopy App.Path & "\UPDATE.EXE", App.Path & "\START.EXE" '執行更新後的程式,並傳入更新參數 Shell App.Path & "\START.EXE S1" Unload Me ElseIf Command = "S1" Then '延遲 3 秒,等待 UPDATE.EXE 執行結束 '(其實應該改用 API 來偵測 UPDATE.EXE 是否執行結束) Do While Timer - T < 3 DoEvents Loop '將更新用的 temp 檔砍掉 If Dir(App.Path & "\UPDATE.EXE") <> "" Then Kill App.Path & "\UPDATE.EXE" MsgBox "更新完畢 !" End If End Sub
手头有一个,发给你
来信注明[email protected]
[email protected]
谢谢拉!
[email protected]
先谢了!
谢谢
[email protected]
我也想看看!
email:[email protected]
email:[email protected]
[email protected]
[email protected]
[email protected]
先谢谢了!
--------------------------------------------------------------------------------
主題:如何達成【自動更新程式】~更換執行檔?
來源:範例程式:SupLDN 撰稿:小紀
版本:VB6 / VB5 / VB4-32 --------------------------------------------------------------------------------
自動更新程式,可以簡略的分成二個範疇,說明如下:1、 從 Internet 上下載更新:
將較新版本的應用程式從 Internet 上下載後,再更換掉目前正在執行的應用程式.
目前很多軟體都有提供這樣的功能,例如:Pccillin 等掃毒軟體(如圖一)
(圖一)
2、 從網路磁碟機或磁片上下載更新:
較新版本的應用程式就在 Local 端的主機上或更新磁片上.
在小紀服務的集團,所有公司的應用系統,執行檔至少就有 200 個,這些執行檔都統一放在公司的主機中,程式如果有任何的修改或更新版本,也都直接放到主機上,之後,一旦使用者在 Client 端重新啟動程式,便會自動先和主機上的執行檔比較版本,再決定如何執行,結果可能有二種:
~ Server 上的版本較新:自動從主機(或磁片)上複製較新版本的執行檔,並啟動新版的程式.
~ Server 上的版本相同:不做任何動作,繼續執行原來在 Client 端的程式. 在整個自動更新的過程中,可分成以下幾個階段:1、 檢查程式是否有新版本
比對主機上的程式版本和目前機器中的程式版本是否相同,方法有很多種,像 Pccillin 的病毒碼是以副檔名的數字來判別,比較簡單的方式,可以比較應用程式檔案的日期.
2、 下載新版本的程式
若是 Server 上的版本較新,就將檔案複製到自己的機器中.
3、 更換執行檔或其他資料檔
將檔案複製到自己的機器之後,要停止目前正在執行的程式,並啟動最新下載的程式. 在本單元中,我們要討論的是更新過程中的第三個階段,也就是執行檔的更換.所以本單元的範例,我們有了假設的狀況,就是假設程式(Start.exe)有了新版本,而且已經下載完畢放在 C:\ 根目錄中.應用程式啟動後畫面如下:整個程式只有二個事件需要處理,分別說明如下:1、 Command1_Click() 事件
~檢查新的執行檔(C:\Start.exe)是否真的存在?
~將新的執行檔複製到應用程式所在的目錄中,並更名為 Update.exe.
~啟動新版本的程式 Update.exe,執行時傳入參數 S
~結束目前正在執行的程式 Start.exe
~到此為止,整個置換動作只算進行到一半喔!
程式碼如下:
Private Sub Command1_Click()
'判斷更新檔案是否存在
If Dir("C:\START.EXE") <> "" Then
'複製到本端路徑,並更名為 Update.exe
FileCopy "C:\START.EXE", App.Path & "\UPDATE.EXE"
'執行新下載的程式(暫時更名為 Update.exe),傳入的參數是 S
Shell App.Path & "\UPDATE.EXE S"
'關閉程式,因為已交由 UPDATE.EXE 來控制
Unload Me
End If
End Sub
2、 Form_Load() 事件
判斷程式啟動時所帶的參數,可能為 S/S1/空字串 三種(空字串不處理)
參數為 S:表示目前正在執行的程式名稱是 Update.exe,執行檔置換動作進行到一半.等舊程式 Start.exe 確實結束了,將正在執行的 Update.exe 再複製一次成 Start.exe 覆蓋掉原來的舊程式,覆蓋完畢後,啟動新版本的程式 Start.exe,執行時傳入參數 S1,這時候 Update.exe 就可以功成身退了,所以,結束目前正在執行的程式 Update.exe.參數為 S1:表示程式剛置換完畢,新程式 Start.exe 更新後第一次啟動,等 Update.exe 確實結束了,就可以將它刪除了.到此,一切就算大功告成了.程式碼如下:
Private Sub Form_Load()
Dim T As Double
T = Timer
'判斷有無更新參數
If Command = "S" Then
'延遲 3 秒,等待 START.EXE 執行結束
'(其實應該改用 API 來偵測 START.EXE 是否執行結束)
Do While Timer - T < 3
DoEvents
Loop
'將 START.EXE 更新
FileCopy App.Path & "\UPDATE.EXE", App.Path & "\START.EXE"
'執行更新後的程式,並傳入更新參數
Shell App.Path & "\START.EXE S1"
Unload Me
ElseIf Command = "S1" Then
'延遲 3 秒,等待 UPDATE.EXE 執行結束
'(其實應該改用 API 來偵測 UPDATE.EXE 是否執行結束)
Do While Timer - T < 3
DoEvents
Loop
'將更新用的 temp 檔砍掉
If Dir(App.Path & "\UPDATE.EXE") <> "" Then Kill App.Path & "\UPDATE.EXE"
MsgBox "更新完畢 !"
End If
End Sub
我业余时间开发的一个界面和功能和OUTLOOK一样的软件,开放主控代码!运行效果图:
http://www.efile.com.cn/efile/huangtao/SmartMail.bmp安装盘及其代码下载地址:
http://www.cnkernel.com/opensoft.asp?soft_id=3&url=4本软件开始出售源代码
回复人: static504(萨达姆) ( ) 信誉:96 LLanV报表工具(打印预览软件)--免费使用--免费升级一流的打印预览软件
超越水晶报表,是我们的目标
特别适合用于轻松快速解决大量报表的情形
彻底解除程序员负担,极大提高用户设定灵活性
经过了10000行以上数据的压力测试,性能优良!其中一部分功能如下:
1.支持资料卡(比如:个人简历),表单(比如:销售定单),报表(比如:销售月报表)的预览打印
2.不用任何设定,就可以默认产生专业的页面
.................................................
已删除
[email protected]
找了好长时间了
谢谢了!
[email protected]
[email protected]
[email protected]
http://free.efile.com.cn/huangtao/ScreenEnglishShot.jpg
http://free.efile.com.cn/huangtao/ScreenShot.jpgsource download url:
http://free.efile.com.cn/huangtao/SmartmailSource.rar
[email protected]