通過共享檔案直接複製來進行更新:
1、判斷更新路徑下是否有需要更新的版本;
2、將最新版本檔案複製到當前路徑的資料夾newversion下;
3、關閉當前程式,啟動更新軟體update.exe;
4、更新軟體將newversion下的檔案移到當前路徑下進行覆蓋;
5、完成更新操作,關閉update.exe,啟動軟體程式
準備條件:
1、更新檔案放在以版本號命名的資料夾裡,如:1.0.6.0;
2、設定共享資料夾,如//server/versionupdate/,將版本資料夾放進去;
3、更新軟體update.exe,放到軟體啟動路徑下。
在這裡需要解決幾個問題:
1、更新軟體update.exe本身需要 更新;
2、版本更新跨越太大,漏掉一些必須更新檔案,比如從1.0版直接公升級到3.0版,就可能遺漏2.0版的檔案;
3、更新檔案中含有檔案。
處理:1、可以在程式中先判斷更新版本中有沒有update.exe,如果有就將其直接覆蓋本地的update.exe。其餘繼續複製到newversion下;
2、對於一些不進行公升級就有遺漏的版本可以做個標記,更新時會對這些檔案進行複製;
3、直接對更新檔案下的資料夾也整個複製。
update.exe
using system;
using system.collections.generic;
using system.linq;
using system.windows.forms;
using system.io;
using system.threading;
using system.diagnostics;
namespace update
}thread.sleep(1000);
}else }}
///
/// 轉移資料夾
///
/// 源資料夾
/// 目標資料夾
public static void removedirectory(string sourcedirname, string destdirname)
//判斷路徑後面有沒有加/
if (destdirname[destdirname.length - 1] != path.directoryseparatorchar)
destdirname = destdirname + path.directoryseparatorchar;
string files = directory.getfiles(sourcedirname);
foreach (string file in files)
string dirs = directory.getdirectories(sourcedirname);
foreach (string dir in dirs)
} }}
軟體test.exe版本更新實現
///
///
public static bool isversion(string str)
///
/// 複製資料夾
///
/// 源資料夾
/// 目標資料夾
/// 放到當前路徑的檔名
public static void copydirectory(string sourcedirname, string destdirname, string update)
//判斷路徑後面有沒有加/
if (destdirname[destdirname.length - 1] != path.directoryseparatorchar)
destdirname = destdirname + path.directoryseparatorchar;
string files = directory.getfiles(sourcedirname);
foreach (string file in files)
else
}string dirs = directory.getdirectories(sourcedirname);
foreach (string dir in dirs)
}
Git自動更新策略
思路 自動與手動相結合。1 確定要使用和更新的庫。2 宿舍 電腦設定成不自動待機 22 00 自動git pull 工作前 1 30 自動git push 工作後 4 30 自動git push 工作後 3 實驗室 電腦設定成不自動待機 6 00 自動git pull 工作前 12 00 自動git...
C 軟體自動更新程式 六
using system using system.collections.generic using system.globalization using system.linq using system.net using system.text using system.windows.for...
C 軟體自動更新程式 七
using system using system.collections.generic using system.linq using system.text using autoupgrade.models using system.xml.linq using system.net usin...