首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 利用批次檔實現執行中程式自動更新 (1) — 問題由來與 xcopy 啟發

     編輯:關於C語言

自動更新的常規思路與難點

伺服端放更新檔,客戶端小程式檢測下載覆蓋。但**主執行檔正在執行時無法覆蓋**(Windows 鎖定執行中 EXE/DLL)。

想法:先自殺主程式進程,再複製?但主程式結束後,誰來繼續複製?

Google/Baidu 搜尋無果,只能自力更生。

xcopy 參數 /Z 的啟發

在 cmd 輸入 xcopy /? 發現關鍵參數:


/Z  在可重新開始的模式中複製網路檔案。

這意味著複製過程可中斷續傳。構想:寫批次檔,主程式啟動批次檔後退出,批次檔負責備份舊版、下載新版、覆蓋、重啟主程式。利用 xcopy /Z 確保網路複製可靠。

批次檔策略大綱

  1. 主程式啟動時檢查版本,有更新則啟動更新批次檔並退出。
  2. 批次檔:
     a. 等待主程式進程結束(taskkill 或輪詢)。
     b. 備份目前 EXE。
     c. xcopy /Z /Y 從網路分享/HTTP 下載新版覆蓋。
     d. 驗證檔案大小/雜湊。
     e. 啟動新版主程式。
     f. 批次檔自我刪除(可選)。

下篇將詳細實作批次檔內容與主程式啟動邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved