winform 應(yīng)用系統(tǒng)的部署問題,一直是個(gè)令人苦惱的問題。在2.0下,我們可以通過clickonce方式部署,但是這里要說的,是利用文件的操作來對(duì)系統(tǒng)進(jìn)行更新。
為了方便用戶作業(yè),把實(shí)際的系統(tǒng)打包成DLL存在,而設(shè)計(jì)一個(gè)自動(dòng)更新的form來作為用戶啟動(dòng)的入口。用戶啟動(dòng)后,實(shí)現(xiàn)自動(dòng)檢測(cè)服務(wù)端和客戶端系統(tǒng)文件版本,并把所有所需文件更新至最新版本。而后自動(dòng)啟動(dò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.啟動(dòng)時(shí),實(shí)現(xiàn)自動(dòng)更新
/// 2.可把不同模塊打包DLL,在運(yùn)行時(shí),利用反射機(jī)制調(diào)用DLL 中form(類)。
///
/// 為了準(zhǔn)確顯示更新畫面,并在更新完畢后調(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è),把實(shí)際的系統(tǒng)打包成DLL存在,而設(shè)計(jì)一個(gè)自動(dòng)更新的form來作為用戶啟動(dòng)的入口。用戶啟動(dòng)后,實(shí)現(xiàn)自動(dòng)檢測(cè)服務(wù)端和客戶端系統(tǒng)文件版本,并把所有所需文件更新至最新版本。而后自動(dòng)啟動(dò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.啟動(dòng)時(shí),實(shí)現(xiàn)自動(dòng)更新
/// 2.可把不同模塊打包DLL,在運(yùn)行時(shí),利用反射機(jī)制調(diào)用DLL 中form(類)。
///
/// 為了準(zhǔn)確顯示更新畫面,并在更新完畢后調(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;
}