RemObjects 是超強大的系列控件,這裡使用 Hydra 的自動更新控件,可方便有效地使程序實現自動升級
裝好 RemObjects Data Abstract (已經包括 RemObjects SDK 和 Data Abstract) , Hydra
這裡演示了整個開發過程,服務端及客戶端可直接使用,
其中客戶端檢測是否有新版本的代碼可加入ERP SYSTEM或現有系統,當有新版本時調用客戶端進行升級
-
先說下默認情況下Hydra的升級過程
客戶端進行版本檢測時,默認都返回有可用升級,
需要升級哪些文件是通過判斷客戶端與服務端升級目錄之間的差異作為升級依據
-服務端
新建一個基於RO的工程
設置好保存路徑及工程名,這裡的 Also create a matching client application and a project group
是在創建服務端工程時同時也創建客戶端並作為一個工程組,這裡將演示在ERP SYSTEM框架下的實現,所以就不自動創建客戶端了
新建好服務端工程,點擊Delphi菜單RemObjects SDK-> Edit Service Library
創建一個自動升級服務,先是引用Hydra的自動升級,然後新建一個服務繼承,添加我們所以的方式進行升級
然後Build一下工程,會自動生成相關的接口及實現文件
打開 AutoUpdateServer_Impl模塊,設置FileSearchInfo屬性,將用於存放升級文件的路徑
$APPLICATION 是當前程序目錄,所以在服務端程序所在目錄下,要新建子目錄 AutoUpdate\ApplicationDir
至此,服務端可以算是完成了,但其默認行為並不是我們所想要的
1.加入版本判斷,在AutoUpdateServer_Impl雙擊OnVerifyUpdateStatus事件,添加如下代碼
procedure TAutoUpdateServer.HYAutoUpdateServiceVerifyUpdateStatus( Sender: THYAutoUpdateService; const LastUpdateID: AnsiString; var UpdateStatus: THYUpdateStatus; var CurrentUpdateID, UserData: AnsiString); begin UpdateStatus:=usNoUpdates;
//客戶端進行版本判斷時會調用到這裡,LastUpdateID是客戶端提供的版本號,FCurrentVersion是服務端通過某種方式讀取到的當前版本,比如INI if FCurrentVersion<>LastUpdateID then begin UpdateStatus:=usNeedsUpdate;
//CurrentUpdateID這個參數是值引用,所以相當返回當前版本給客戶端 CurrentUpdateID:=FCurrentVersion; end; end;
2.指定需要更新的文件,在AutoUpdateServer_Impl雙擊OnGetUpdatesInfo事件,添加如下代碼
procedure TAutoUpdateServer.HYAutoUpdateServiceGetUpdatesInfo( Sender: THYAutoUpdateService; ClientFileList, UpdatesList: THYFileUpdateInfoArray); var serverfiles: THYFileUpdateInfoArray; fFileUpdateHelper : THYFileUpdateHelper; i: integer; begin serverfiles := THYFileUpdateInfoArray.Create; fFileUpdateHelper := THYFileUpdateHelper.Create; try // Prepares the list of updates for i := 0 to (Self.FileSearchInfo.Count-1) do fFileUpdateHelper.ScanForFiles(Self.FileSearchInfo[i], serverfiles); UpdatesList:=serverfiles; except end; end;
這裡使用其默認方式,先是獲取升級目錄的全部文件,但是不對比客戶端目錄文件
-客戶端
客戶端同樣很簡單,如下圖擺好界面
重點說下THYAutoUpdateClient三個函數
VerifyUpdateStatus,進行版本判斷
DownloadUpdates,下載升級文件,文件名會加上前綴(按THYAutoUpdateClient的屬性TemporaryFileName)
FinalizeUpdate,完成升級,刪除舊文件並將DownloadUpdates下載的文件恢復原名
自動升級完整代碼(服務端+客戶端)下載:http://share.weiyun.com/4df5273d84f20edeacbf74da45176f3b
另外,框架將在近期實現二層到三層的可選擇切換,采用RO作為三層基礎,這裡先提供RO下載及最新的框架代碼
如果先前有下載過我做好的虛擬機系統的話,只需要安裝DA,Hydra和替換最新框架代碼
RemObjects Data Abstract : http://share.weiyun.com/0d5f246b89c916b32e2d52f21caadaca
Hydra : http://share.weiyun.com/385ac4cf60fd24f432306d4f303339c9
ERP SYSTEM SOURCE CODE : http://share.weiyun.com/1751fd2575e7bc7fbd57e82a3aaabccf
(加入了自動升級和一套尚未轉換好的POS源碼)