1. 程式人生 > >C#Winform程式如何使用ClickOnce釋出並自動升級(圖解)

C#Winform程式如何使用ClickOnce釋出並自動升級(圖解)

有不少朋友問到C#Winform程式怎麼樣配置升級,怎麼樣打包,怎麼樣釋出的,在這裡我解釋一下打包和釋出
關於打包的大家可以看我的文章C# winform程式怎麼打包成安裝專案(圖解)
其實打包是打包,釋出是釋出兩者是沒有任何關係的,只是有些同志會分不清楚。混在一起了。
下在面大家就和我一起來做一個釋出並升級的程式吧。

首先我們準備幾個工作
1.新建一個儲存釋出後程序的目錄比如D:\IIS\textWinform  以下簡稱-- 釋出目錄
2.在IIS新建一個網站並指向目錄D:\IIS\autoWinfrom,當然這個你隨意,我這裡只是有一個測試 以下簡稱  升級目錄
3.當然還要有一個升級的URL  http://192.168.1.168:8055 這個就是剛才我新建網站的地址 關於怎麼配置IIS下網站的操作,大家可以參考我的文章 IIS6.0手動安裝與配置asp.net2.0|3.5|4.0全過程
 好了下面開始吧
1.新建一個專案,可以簡單點,因為我們只是為了測試釋出功能
我就以一個計算字元長度的程式為例子吧
介面如下
程式碼如下
private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = textBox1.Text.Length.ToString();
        }
非常的簡單了吧。
好了下面開始吧 2.釋出
我們右鍵單擊專案找到釋出二字然後單擊它
3.選擇 釋出目錄 效果發下 這裡就是我們上面新建的釋出目錄了
4.選擇升級伺服器地址 選擇我們上面配置好的IIS伺服器地址就行了。
5.選擇執行方式

這裡是選擇程式是否允許在離線模式下執行程式,當然一般是 是,如果你確實有需要的話可以選擇否的。這個根據自己情況吧
6.開始釋出

在釋出之前會生成一個報告,如上圖下一步。 生成之後本地釋出儲存目錄會生成安裝檔案。  
 
然後單擊確定,過一會兒會發布成功,並直接開啟如下介面哦 沒錯就是這個,連升級和下載的介面都幫助咱們生成 了。是不是很棒啊。
先別急著安裝,因為現在還不行,我們還要進行配置才行,
先到釋出目錄下看看我們生成的是什麼程式吧 就是這些程式,
 
 
這裡面記錄的是每次釋出的版本,當然我們要定期進行適當的清理,要不然會越來越多哦。
下面我們什麼也不用管只要把這些程式Copy到升級目錄下面就行了
Copy完成如下  
 
好了 我們的配置工作到這裡就算完成了。 下面就是分佈使用者的問題了,如果你希望那個電腦安裝你的程式,就可以直接複製Setup程式給他就行了

 
 
沒錯就是這個,而且只需要這一個就可以,或者直接把http://192.168.1.168:8055/publish.htm這個地址發給使用者也是一樣的
然後在使用者電腦上雙擊安裝  
 
過一會兒就安裝完成了,
之後會自動開啟程式如下  
 
看這不是我們剛才寫的程式嗎?是不是很激動啊。
到這裡就算是大功已成了,下面我們看看他安裝在什麼地方吧  
 
沒錯就在我們的開始程式裡面
7.升級 到這裡客戶端的工作就完成了,以後使用者只需要單擊這個程式就行,有升級會自動提示
下面咱們來看看如果有更新了會怎麼樣。
我們將剛才的例子做一個更新,新增一個幫助按鈕
效果如下  
 
程式碼如下所示  
    private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "只要你輸入字元並單擊計算就會自動 計算出長度哦  還不試試";
        }


  哎,這不能再簡單了吧,呵呵,大家知道什麼意思就行了,只是為了看看效果。
修改完成之後我們再將這個程式安上面的步驟一步一步的操作一下,最後把釋出目錄的程式copy到升級目錄就行了。
然後在客戶端單擊剛才安裝的程式  
 
會自動出現如上圖的提示,那麼我們只要單擊確定就行。
 
 
開始升級了  
 
怎麼樣,是不是很簡單啊,到這裡我們已完成了釋出與升級的效果
8.配置 大家一定會想了,這太簡單了,如果要修改安裝的目錄 ,圖示,之類的應該怎麼操作呢?
這個其實也很簡單大家右鍵專案選擇屬性
 
 
找到釋出  
 
這所有的配置都在這裡,
在這裡,版本號,你每釋出一次會自動增長一個,也就是因為它客戶端的程式才會自動升級的哦。
而且你還可以把NEt執行環境直接打包進去,如果客戶端第一次安裝沒有.net環境的話,可以直接從升級的網站下載的哦。是不 是很方便
到裡就算完了,如果大家還有什麼不明白,或者什麼好的建議的話可以跟貼哦。
最後感謝大家的支援