上章描述了總體的操作,本章繼續細化:
一:在線更新
如果能把文件列表裏的文件全部替換是最好的選擇。
但現實是:app.config ,web.config 這類數據經常是在佈署後還要手工改動。把它替換了就得重配一次。
如果把它從更新列表裏移除?也不行,第一次配置人員不可能全敲一遍。
只新增不覆蓋?當加了新的配置項時,配置人員也得敲一遍。
方案一:在配置文件作出標記,指明哪些是不可覆蓋的。。這樣更新程序就把這一塊取出,替換掉原文件裏的標記塊,再保存。
缺點是時間長了加上交接,這種標記可能就被忘卻了。
方案二:把app.config直接視爲只讀文件,客戶端程序彈出設置界面,如果有不同於app.config的配置,存到另一個文件裏。
優點很明顯,使用時大家都輕鬆。
缺點是要加相當的代碼。
方案三:如果配置文件已經存在,就不覆蓋了,換個名稱保存。比如web.config.old, 配置人員自行比對,
看起來是不錯的選擇,畢竟配置文件就是讓人改的。
二:發佈程序
1:首先定義結構體:
public class ProgramList
{
public string appName { get; set; }//程序關鍵字
public string appNameCn { get; set; }//程序中文名
public string appDownPath { get; set; }//佈署的目錄。用於下載。
public string vssRelativePath { get; set; }//相對於vss根目錄的路徑。用於發佈。
public string version { get; set; }//版本號。
}
1:程序在bin/debug目錄直接運行時,可以根據bin/debug目錄所在向上找到vss的根目錄。
再然後疊加上上述的vssRelativePath,就可以得到本地的實際目錄。
這樣的優點是即使程序員的vss佈署目錄都不一樣,一運行都可自動定位到正確的地方,條件是程序員自己的目錄樹結構要與VSS一致。
2:上述要求程序員下載源代碼編譯運行,但是並不是所有人都願意這樣幹,很多人只是想直接運行。
所以發佈程序優化爲:如果發現本程序不在debug目錄下,就提示程序員給出本地vss的根目錄。
三:各種特殊情況:
1:現在有這種情況,一個程序有不同的配置。要發佈幾份,有的甚至只是改一個參數。怎麼發佈?
2:第二種情況,把程序名改了,原因是爲了方便監控!!!變更作爲在線更新的關鍵字(即程序名)實在不值得鼓勵。
如果要支持的話,可以支持腳本,支持更新程序進行重命名?