軟件自動升級系統:支持exe程序覆蓋更新、目錄結構、更新更新程序自身、更新sql、執行bat批處理


軟件自動升級系統說明

目錄

一、         自動升級需要需要實現些什么?... 1

二、         服務器安裝... 2

三、         客戶端配置... 4

四、         【數據庫升級】包的制作和錯誤處理... 8

1.     如何連接數據庫?... 8

2.     更新哪個數據庫?... 9

3.     更新包的文件如何制作?... 9

1)     首先得把需要更新的內容寫成sql文件,建議按日期分批次... 9

2)     SQL批處理的【GO】問題:不需要去掉GO.. 10

3)     新建一個【數據庫升級】文件夾,把sql腳本都放進去... 11

4)     把這個數據庫升級打包到rar文件中... 11

5)     發布到服務器上... 12

4.     數據庫更新錯誤有什么影響?... 12

5.     如何處理更新錯誤?... 14

五、         配置文件Update.ini范本說明... 15

六、         備注事項... 15

 

 

 

 

一、        自動升級需要需要實現些什么?

軟件的自動升級,主要有以下功能點:

  1. 從服務器檢索更新包,有就更新,沒有就略過。
  2. 可以更新升級程序自身,對客戶端環境要求低。
  3. 更新SQL數據庫。
  4. 保留歷史更新文件備份:暫未完成。
  5. 更新完成后,能夠啟動一個程序。
  6. 自動升級程序能夠開機啟動。
  7. 服務器支持多個項目。
  8. 服務器配置簡單。

 

二、        服務器安裝

服務器需要發布到IIS里,有新文件時,Rar壓縮放到對應的項目文件夾里。

下面以ECStore項目為例說明。

  1. 配置IIS

IIS的配置不需贅述。

 

注意一點:打開【第三方組件】文件夾,里面有需要單獨安裝的程序,裝完后重啟電腦生效(Ajax在framework3.5之后不需要了,可以不裝)。

 

熟悉iis的朋友,可以把【數據交換】文件夾挪到d盤\,【D:\數據交換】,這樣以后好找文件。然后IIS建個虛擬目錄【數據交換】指向【D:\數據交換】。

 

  1. 打包升級文件為Rar,拷到服務器的項目文件夾

可以把需要用的文件(含子文件夾)整個打包成rar文件。

服務端總的文件夾是:數據交換\軟件升級服務\項目名,例如上圖。

         數據交換\軟件升級服務\ECStore

 

 

 

 

最好命名規范整齊,容易目讀。文件的生成日期以電腦日期為准。

 

 

三、        客戶端配置

客戶端的配置,主要是ini文件。

 

 

用記事本打開update.ini:

 

[軟件升級]

;updater.exe優先查找update.ini,再找sysConfig.ini

服務器地址=http://119.191.58.194:81/

項目=ECStore

升級完后執行=電商倉庫.exe

最后更新日期=2016-04-25 10:06:21

目標文件夾=

 

運行順序:

l  update.exe啟動時,會首先查找有無update.ini文件,沒有再去找sysConfig.ini文件。

l  找到后,讀取其中的服務器地址、項目名、日期,連到服務器查找比這個日期要新的文件。

l  找到后開始逐個按日期順序下載到本地文件夾:D:\數據交換\軟件升級

l  下載后逐個解壓縮覆蓋目標文件。

l  如需覆蓋升級程序自身,系統會在注冊表寫一個啟動批處理,並提示需要重新啟動,當重新啟動時覆蓋自身。

l  覆蓋完畢,會把以完成的文件移動到【已完成】文件夾。

 

 

 

l  更新完成后,ini文件內容就變成了rar文件的日期:

最后更新日期=2016-04-27 16:18:30

 

 

 

l  開機啟動:

 

 

 

四、        【數據庫升級】包的制作和錯誤處理

數據庫升級牽涉下列方面:

1.       如何連接數據庫?

優先讀取ini配置文件,配置文件沒有則讀取SysData.MDB文件中GsConfig表的sNetConnectionString項,這個可以通過E3的數據訪問配置進行設置。

一般不需要設置,空着即可,他會自動讀取E3的設置。

 

 

 

E3的數據訪問配置在SysData.mdb文件中。

 

2.       更新哪個數據庫?

上面update.ini截圖的【數據庫升級->默認數據庫】即是。

3.       更新包的文件如何制作?

1)         首先得把需要更新的內容寫成sql文件,建議按日期分批次

注意,執行時按文件名順序執行,所以建議這樣命名:

01:表更新;

02:視圖更新;

03:函數更新;

04:存儲過程更新;

05:其他獨立的腳本;

 

 

 

 

2)         SQL批處理的【GO】問題:不需要去掉GO

SQL中習慣用【GO】告訴SQL現在執行,這一批腳本結束了。

不需要人工屏蔽掉GO,自動升級系統遇到Go會自動分批次執行,其關鍵代碼如下圖:

 

3)         新建一個【數據庫升級】文件夾,把sql腳本都放進去

注意,必須叫【數據庫升級】才會被客戶端認為是數據庫升級包。

 

 

 

4)         把這個數據庫升級打包到rar文件中

 

 

 

5)         發布到服務器上

 

 

4.       數據庫更新錯誤有什么影響?

因為客戶數據庫的不同,一個sql文件可能會在一店正常,在二店出錯。

腳本是按批次開啟事務執行的。上面的圖中,一個更新包包含三個批次的文件夾。

如果一個批次文件夾執行出錯,事務會回滾,相當於這個批次沒執行,而整個更新也停下來。

開始執行sql腳本之前,系統會自動備份一個,默認 D:\數據交換\數據備份\ 下。

 

 

 

 

5.       如何處理更新錯誤?

沒辦法。

編寫者得多考慮潛在問題,心量廣大一點,最好更新前手工備個份,這是個細活。

 

如果遇到大問題,可以還原數據庫,執行之前都會自動備份一個。

 

再就是,看一下提示的錯誤信息,寫着哪個文件夾出錯,找到那個文件夾,手工去處理。

 

 

五、        配置文件Update.ini范本說明

[本地數據配置]

SysMDBFile=

SysMDBPass=

 

[軟件升級]

服務器地址=http://119.191.58.188:81/

項目=Easter3M

目標文件夾=

升級完后執行=pos.exe

最后更新日期=

顯示下載網址=1

 

[數據庫升級]

數據連接=

默認數據庫=Easter3MAAA

自動備份文件夾=

六、        備注事項

以下無正文。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM