一般服務端會有乙個配置檔案包含最新更新的檔案資訊的配置檔案,當然這些更新資訊也可以存到資料庫,或者其他地方。客戶端(也就是需要更新的那部分程式)也有乙個配置檔案包含客戶端版本資訊,這些資訊可以存到專門的乙個配置檔案中,或者是config檔案中,沒有一定的規定,可以根據實際設計。
優點:處理完成後,啟動的直接就是更新後的程式。不會出現由於主程式在執行導致替換檔案之類的錯誤。
1 比較版本
比較依據:
可以通過檔案的最後修改時間,或者使用檔案版本作為比較依據,使用檔案最後修改時間顯然不是標準的做法,但也沒有錯誤,但需要注意日期的格式一定要統一,避免日 期格式不一致導致錯誤。可以使用fileinfo類獲取最後修改時間。
fileinfo類官網參考
使用檔案版本作為標準,則每次修改時必須修改版本號,c#程式就是要修assemblyinfo.cs檔案中的內容了,多了一步,規範多了。version類處理版本資訊並比較。
c# code
assembly thisassem=assembly.getexecutingassembly();
assemblyname thisassemname
=thisassem.getname();
version ver
=thisassemname.version;
version類官網參考
當然也有其他的方式,例如md5校驗值比較,檔案大小比較,之類的方法。不過個人認為檔案大小缺陷很明顯,新版本檔案就一定比舊檔案大嗎?不一定吧。重構是可能變小的。
當然如果考慮客戶端有不同的版本,都需要公升級到最新的版本,顯然不同的版本對應的公升級檔案不同,會更複雜,比較的資訊也更多。
獲取服務端版本資訊:
如果服務端的版本資訊存在資料庫,直接讀取資料庫,就可以獲取。如果存在配置檔案,則可以通過webservice方法獲取,或者請求乙個網頁 通過response.write();的方式獲取資訊,當然這兩種方式都要建立虛擬目錄或者**。
儲存位置:
如果新版本的檔案存在資料庫,就直接讀取資料庫,不過這種方式個人不建議使用,例如更新檔案很大時效能不是很好。
3更新檔案
更新型別:
直接替換的,例如修改了bug,直接替換的。
新增加的,例如新增加的功能做成了新的類庫。
需要刪除的,例如有些功能由於重構或者使用了了新方法不需要的。
需要執行的,例如寫登錄檔,註冊com元件的。
每一種處理方式都不一樣,需要根據型別分開處理
缺點:公升級後,沒辦法取消公升級,像windows的補丁程式可以安裝,可以解除安裝的原理,目前還沒有研究明白,希望知道的牛人指導。
當然也可以簡單的先解除安裝,再安裝,對於配置檔案之類的資訊特殊處理一下也可以。
當然如果考慮客戶端有不同的版本,都需要公升級到最新的版本,顯然不同的版本對應的公升級檔案不同,會更複雜,但基本原理卻不變。
4啟動主程式
主程式路徑的獲取:
相對路徑 主程式,更新程式,都使用相對路徑,缺點是一旦相對路徑確定後,後續的更新就不能更改這種目錄關係。
登錄檔 路徑都存入登錄檔,需要時通過登錄檔互動,主程式寫登錄檔,更新程式讀取登錄檔,缺點是讀寫登錄檔需要許可權,寫的路徑也要固定,後續的更新不能改變寫在登錄檔中的位置,也就是登錄檔路徑。
執行程式**
c# code
private
static
void
runfile(
string
dir,
string
localfilename)
if(output
!=string
.empty)
log.logprocessend(info);
} }
catch
(exception ex)
} }
node 更新公升級
npminstall g n n stable n v7.6.0 npm v 顯示版本,檢查npm 是否正確安裝。npm install express 安裝express模組 npm install g express 全域性安裝express模組 npm list 列出已安裝模組 npm sho...
程式更新,app公升級
程式更新 一 獲取程式的版本號 1.獲取包管理器 2.獲取到包的資訊 packageinfo info manager.getpackageinfo context.getpackagename 0 3.得到版本號 info.versioncode 二 判斷當前版本與線上版本是否一致,已經更新的內容...
Angular CLI公升級和更新
angular cli更新到現在已經到了7.x版本了,在angular cli安裝過程中經歷了一次安裝方式變化 安裝方式變更版本不詳 導致在安裝 解除安裝 公升級過程中出現了坑。在angular cli 1.0.0 beta.28或更低版本中,我們安裝angular cli方式為 npm insta...