winform實(shí)現(xiàn)自動(dòng)更新并動(dòng)態(tài)調(diào)用form實(shí)現(xiàn)

字號(hào):

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