Winform Application系統更新

來源:互聯網
上載者:User

標籤:

無廢話,直接貼代碼說明系統更新,

首先,讓我們來看看系統的程式入口該怎樣寫

[STAThread]
static void Main()
{
Control.CheckForIllegalCrossThreadCalls = false;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool create=false;
using (Mutex mu = new Mutex(true, Application.ProductName, out create))
{
if (create)
{
//檢查系統檔案是否有更新,若有更新則更新系統檔案
CheckUpdate.Update();

//系統檔案載入實體
LocalLoader load = new LocalLoader();
//載入系統的主引導檔案
load.LoadAssembly(@"Main.Forms.dll");
//擷取主程式入口
Form frmMain = load.GetFormByName("FrmMain");
if (frmMain == null)
{
return;
}
//運行主程式
Application.Run(frmMain);
//Application.Run(new FrmMain());
}
else
{
MessageBox.Show("程式正在運行!");
}
}
}

第二 ,再讓我們來看一下系統檔案是如何更新

public static class CheckUpdate
{
public static void Update()
{
string error = null;
bool isNeedUpdate = false;
bool isUpdate = false;

// 檢查更新
Dictionary<string, string> files = FileBLL.GetAppFileList(Application.ProductName, out error);
if (files != null)
{
int i = 0;

foreach (string s in files.Keys)
{
// 如果該檔案本地不存在,則需要更新
if (!System.IO.File.Exists(Application.StartupPath + "\\" + s))
{
isNeedUpdate = true;
}
else if ((FileCipherHelper.Hash(System.IO.File.ReadAllBytes(Application.StartupPath + "\\" + s), FileCipherHelper.HashFormat.MD532)) != files[s])
{// 如果HASH值不同,也需要更新
isNeedUpdate = true;
}

if (isNeedUpdate)
{
i += 1;
isNeedUpdate = false;

// 如果該檔案本地不存在,則需要更新
if (!System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\" + s))
{
isNeedUpdate = true;
}
else if ((FileCipherHelper.Hash(System.IO.File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "\\" + s), FileCipherHelper.HashFormat.MD532)) != files[s])
{// 如果HASH值不同,也需要更新
isNeedUpdate = true;
}

if (isNeedUpdate)
{

byte[] fileData = FileBLL.GetAppFile(Application.ProductName, s, out error);
if (fileData != null)
{
System.IO.File.WriteAllBytes(AppDomain.CurrentDomain.BaseDirectory + s, fileData);
isUpdate = true;
}
}
}

}
}
}
}

Winform Application系統更新

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.