軟件自動升級系統說明
目錄
一、 自動升級需要需要實現些什么?... 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
一、 自動升級需要需要實現些什么?
軟件的自動升級,主要有以下功能點:
- 從服務器檢索更新包,有就更新,沒有就略過。
- 可以更新升級程序自身,對客戶端環境要求低。
- 更新SQL數據庫。
- 保留歷史更新文件備份:暫未完成。
- 更新完成后,能夠啟動一個程序。
- 自動升級程序能夠開機啟動。
- 服務器支持多個項目。
- 服務器配置簡單。
二、 服務器安裝
服務器需要發布到IIS里,有新文件時,Rar壓縮放到對應的項目文件夾里。
下面以ECStore項目為例說明。
- 配置IIS
IIS的配置不需贅述。
注意一點:打開【第三方組件】文件夾,里面有需要單獨安裝的程序,裝完后重啟電腦生效(Ajax在framework3.5之后不需要了,可以不裝)。
熟悉iis的朋友,可以把【數據交換】文件夾挪到d盤\,【D:\數據交換】,這樣以后好找文件。然后IIS建個虛擬目錄【數據交換】指向【D:\數據交換】。
- 打包升級文件為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
自動備份文件夾=
六、 備注事項
以下無正文。