ClickOnce Rocks!!!

前幾天千辛萬苦把一個WinForm專案從1.1拉拔到2.0,含淚播種的,必歡呼收割,今天我就已經開始享受2.0所帶來的另一項便利功能---ClickOnce!

早在VS 2005上市時就知有這項功能,但因為過去都以Web Application開發為主,也沒時間嘗試。今天實地測試了一下,哇靠! 真是簡單到爆、方便到不行,真他X的一整個好用! (對不起,失態了,實在是太興奮了)

原本以為要用ClickOnce得另外加一個Setup Project再設定一些東西才會Work,沒想到比想像中的還簡單,只需在專案上按右鍵,選Publish(公佈),輸入IIS URL,決定是否可以離線使用即可。


接著VS 2005會建立一個安裝程式用的Web Page, 使用者只需按下網頁上的連結就會完成程式的安裝:

當然,ClickOnce的精髓在於日後有新版本時,程式能自動更新,所以當你執行程式時,會先出現一個檢查更新版本的進度畫面。(你也可以設定等程式跑起來才檢查更新,這樣還可以指定多久檢查一次更新,不必每次Check)

如果有新版,會提示使用者是否要安裝新版本?

不過呢,身為歷盡滄桑的中年人,深知看過小程式的漂亮Demo後只能高興十分鐘,接下來要仔細考量它在實務應用上的可行性。(就像你永遠不會知道購物頻道裡那把可以削椰子殼、直接刨冰塊的霹靂無敵菜刀,是不是用不到一個月就鈍到連切豆干都會牽絲?)

我用手上的專案做了測試,包含Reference 3rd Party Control、額外附加檔案、EXE中使用TCP/IP... 測試OK,看起來ClickOnce的第一步是成功的。我打算使用它做為對內Beta測試時的版本更新用途,將來待更了解後看看可否有進一步的應用,Anyway,ClickOnce Rocks!!

歡迎推文分享:
Published 18 September 2007 02:01 AM 由 Jeffrey
Filed under: ,
Views: 31,985



意見

# maggie said on 06 March, 2008 07:02 PM

請問大大..在使用ClickOnce安裝及更新下載後的程式能不能指定在某個目錄下??

謝謝

# Jeffrey said on 07 March, 2008 12:00 AM

據我所知是不行,程式會自動被安裝在C:\Documents and Settings\username\Local Settings\Apps\2.0\9QY6D886.43G\WB0XJMJD.AGC這類目錄下(後兩層目錄名稱是隨機產生的),沒得選擇。

# 迷途羔羊 said on 26 June, 2008 08:51 PM

請問大大..我在按下安裝時網頁會出現

"CGI Error

The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:"

這樣的訊息,想請問一下是哪邊有問題?

謝謝!

# Jeffrey said on 27 June, 2008 09:24 AM

to 迷途羔羊, 我應該是你的IIS或WebServer被設定允許執行"執行檔"(一般都設指令檔而已),所以當連結到安裝EXE檔案時,IIS試圖在Server端直接執行該EXE檔而沒把它送到Client端,建議你檢查一下IIS上的設定。

# 離人 said on 14 October, 2008 02:36 AM

請問大大,我現在把一個windows form的專案要用ClickOnce的方式部署到client端,在client端需要安裝sql express,而且在db中會有一些基本的維護資料,我現在想請教的問題是我可以把sql express的安裝檔和資料打包成一包用clickonce的方式下載到client端後安裝sql express和匯入資料庫?或是有其他的方式可以處理?可以指導一下嗎?

# Jeffrey said on 14 October, 2008 05:22 AM

to 離人,據我所知,ClickOnce沒法包入這些Custom Action。如果是我,我會在程式中加入一段邏輯,發現資料庫未安裝或第一次執行時,進行"初始化"將資料庫建起來。

# 迷途羔羊 said on 19 November, 2008 08:39 PM

請教大大一個問題,現在有一個專案(class library)裡面會用到一些我自己加的**.config檔案,然後開一個window form的專案,將dll的那個專案加入參考,現在如果用clickonce部署到server上,但是在dll中會使用的**.config並不會一起deploy上去現在想請教的是,我可以在要部署window form專案時,可以指定我要附加額外檔案嗎?或是要如何把dll那個專案中的**.config檔案可以一起deploy上去?

謝謝!

# Jeffrey said on 20 November, 2008 12:34 AM

to 迷途羔羊, 在WinForm專案中加入你的config檔,檔案的Build Action設為"Content",則編譯時它應該會被複製到bin/debug目錄下。這類的檔案,預設會被包含ClickOnce的部署清單中。

# 迷途羔羊 said on 20 November, 2008 09:45 AM

先謝謝大大的回答,大大說的確實是可以的,但是我現在如果不想把所有的config的檔案都放在winform的專案下,我想要如果是class library中會用到的config檔,就放在class library的專案下,那麼winform的專案要如何把class library專案中的config檔案包到clickonce的部署清單中?

# Jeffrey said on 20 November, 2008 04:45 PM

to 迷途羔羊, 可以試試以下方法額外指定要包入的資料檔: msdn.microsoft.com/.../6fehc36e.aspx。不過這意味著每次用VS2008 Publish完都要再做些事後加工,會比將config納入WinForm專案中麻煩些。

# barry said on 02 June, 2009 01:25 AM

離人

你所说的是可以包含到 ClickOnce 中去的。 你可以在VS2005的安装目录  SDK\v2.0\BootStrapper\Packages\   中配置好 product.xml  和 package.xml 是可以包含的。

# alt said on 20 September, 2012 10:58 PM

您好,我是用vs2010開發,

我在發佈時為何沒有publish.htm安裝頁面,

請問我要如何有這一頁,謝謝。

# Jeffrey said on 22 September, 2012 11:15 AM

to alt, Publish時其他檔案都正常只缺了Publish.htm,還是不確定是否正常,因找不到安裝頁面所以無從測起?

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2007>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication