程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> ERP SYSTEM 開發指南(三)支持程序自動升級

ERP SYSTEM 開發指南(三)支持程序自動升級

編輯:Delphi

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源碼)

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved