winform 應(yīng)用系統(tǒng)的部署問題,一直是個令人苦惱的問題。在2.0下,我們可以通過clickonce方式部署,但是這里要說的,是利用文件的操作來對系統(tǒng)進行更新。
為了方便用戶作業(yè),把實際的系統(tǒng)打包成DLL存在,而設(shè)計一個自動更新的form來作為用戶啟動的入口。用戶啟動后,實現(xiàn)自動檢測服務(wù)端和客戶端系統(tǒng)文件版本,并把所有所需文件更新至最新版本。而后自動啟動系統(tǒng)入口界面。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Threading;
using System.Net;
using System.IO;
namespace autoUpdateAndCallFormDll
{
///
/// 1.啟動時,實現(xiàn)自動更新
/// 2.可把不同模塊打包DLL,在運行時,利用反射機制調(diào)用DLL 中form(類)。
///
/// 為了準確顯示更新畫面,并在更新完畢后調(diào)用Dll,采用異步方式。
///
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.RunWorkerAsync(); //異步更新作業(yè)
}
private void callMainForm()
{
//Dynamic Call Form using Assembly
Assembly assembly = Assembly.LoadFrom(@"D:\TEST\SD.dll");
Form frm = assembly.CreateInstance("SD.frmmain") as Form;
frm.Show();
frm.Activate();
this.Visible = false;
}
為了方便用戶作業(yè),把實際的系統(tǒng)打包成DLL存在,而設(shè)計一個自動更新的form來作為用戶啟動的入口。用戶啟動后,實現(xiàn)自動檢測服務(wù)端和客戶端系統(tǒng)文件版本,并把所有所需文件更新至最新版本。而后自動啟動系統(tǒng)入口界面。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Threading;
using System.Net;
using System.IO;
namespace autoUpdateAndCallFormDll
{
///
/// 1.啟動時,實現(xiàn)自動更新
/// 2.可把不同模塊打包DLL,在運行時,利用反射機制調(diào)用DLL 中form(類)。
///
/// 為了準確顯示更新畫面,并在更新完畢后調(diào)用Dll,采用異步方式。
///
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.RunWorkerAsync(); //異步更新作業(yè)
}
private void callMainForm()
{
//Dynamic Call Form using Assembly
Assembly assembly = Assembly.LoadFrom(@"D:\TEST\SD.dll");
Form frm = assembly.CreateInstance("SD.frmmain") as Form;
frm.Show();
frm.Activate();
this.Visible = false;
}