首頁  >  文章  >  後端開發  >  詳解c#Winform程式自動更新實作方法(圖)

詳解c#Winform程式自動更新實作方法(圖)

黄舟
黄舟原創
2017-03-22 11:33:112750瀏覽

Winform程式自動更新我也是第一次做,網上找了自動更新的源碼,後來又根據在網上看到的一些方法,自己試了很久,最終還是有寫錯誤,所以花了錢讓別人幫忙調試成功的,下面是我自己搗騰出來的,方便大家借鑒,如果有什麼錯誤的地方歡迎指正

Winform程式自動更新我也是第一次做,網上找了自動更新的源碼,後來又根據在網上看到的一些方法,自己試了很久,最終還是有寫錯誤,所以花了錢讓別人幫忙調試成功的,下面是我自己搗騰出來的,方便大家借鑒,如果有什麼錯誤的地方歡迎指正.

1、由於我是透過伺服器的IIS發布自動更新的,更新之前先手動把程式複製到IIS伺服器的目錄下面,做一些更改,客戶端才能正常自動更新。所以第一步就是不熟IIS伺服器(本人系統windows8):

#依照上面的方式,選了之後點確定,系統會自動加入這些內容,然後:

網站建立好了之後,把寫好的需要更新的檔案放入你選的實體路徑對應的檔案目錄下面就OK。

2、網站建立好了,那麼下面就是要想辦法搞更新了,也就是從伺服器更新檔案到客戶端,至於具體的過程和中心思想我就不贅述了,網路上很多。

3、自動原始碼下載地址找不著了,如果有需要的,請留郵箱,我再發.

4、把自動源碼生成類別庫,然後在你的主程式引用該類別庫,把下圖的兩個檔案和你的主程式放在同一個資料夾下面:

5、主程式的調用,在主程式裡面調用我是放到登入窗體之前的,由於我沒辦法控製程式是否需要更新,所以我需要建立一個過程,就是在資料庫建立一個表,包括兩個欄位

如上圖,New欄位是保存最新的版本,Old是保存前一次的版本。

using Mulaolao.Forms;
using Mulaolao.Procedure;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Mulaolao.Other;
using System.Threading;
using StudentMgr;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Mulaolao
{
 static class Program
 {
  //private static Mutex mutex;
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main( )
  {
   Application.EnableVisualStyles( );
   Application.SetCompatibleTextRenderingDefault( false );
   //读取表
   DataTable da = SqlHelper.ExecuteDataTable( "SELECT * FROM R_UpdateforOrder" );
   string news = "", old = "";
   //如果表中没有任何数据,则直接登录,不用更新
    if (da.Rows.Count < 1)
   {
    //设置登录成功之后关闭登录窗体 显示主窗体
    Login lg = new Login( );
    lg.StartPosition = FormStartPosition.CenterScreen;
    lg.ShowDialog( );
    if (lg.DialogResult == DialogResult.OK)
    {
     Application.Run( new Form1( ) );
    }
    else
    {
     return;
    }
   }
   else
   {
    //如果表中的新版本和老版本一致,也不需要更新
     news = da.Rows[0]["New"].ToString( );
    old = da.Rows[0]["Old"].ToString( );
    if (news == old)
    {
     //设置登录成功之后关闭登录窗体 显示主窗体
     Login lg = new Login( );
     lg.StartPosition = FormStartPosition.CenterScreen;
     lg.ShowDialog( );
     if (lg.DialogResult == DialogResult.OK)
     {
      Application.Run( new Form1( ) );
     }
     else
     {
      return;
     }
    }
    else
    {
     //如果表中的新版本和老版本不一致 则需要把老版本更新成新版本 同时启动自动更新窗口
      SqlHelper.ExecuteNonQuery( "UPDATE R_UpdateforOrder SET Old=@Old", new SqlParameter( "@Old", news ) );
     System.Diagnostics.Process.Start( Application.StartupPath + @"\AutoUpdate.exe" );
    }
   }
   
  }
 }
}

下一步即可,完成之後會自動啟動更新後的主程式。

6、說說UpdateList.xml裡面的主要參數:

下面這個是我寫的更新版本(表中New欄位)的程式,放在客戶端,第三張圖裡面的版本更新資料夾裡面,每次更新伺服器之前先執行這個程式,更新資料庫最新版本:

##以上內容就是我自己花了錢折騰出來的不怎麼先進的方法,沒辦法,誰讓自己入行不久,沒什麼經驗,自己也搞不出先進的來,歡迎大家及時指正。其實主要的步驟:先建立IIS伺服器-->新建網站-->把主程式檔案、更新檔案、版本更新一股腦放在同一個資料夾下方-->主程式呼叫更新程式(主要是判斷何時進行自動更新)-->把自動更新文件裡面的參數配置好-->資料庫裡面的版本對照表建好-->更新之前在伺服器覆蓋程序,修改自動更新xml文件內容,執行版本更新-->等待客戶端自己更新

以上是詳解c#Winform程式自動更新實作方法(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn