ClickOnce可以自動比對安裝在Client端的版本資訊與Server的版本資訊,若有差異,則會自動下載安裝最新版。這讓.NET寫的Windows Form程式在做版本更新時,更加的簡單及方便。這個機制,也可以使用在VSTO的專案,只是相對WPF、Windows From、Console Application,VSTO的ClickOnce的支援相對陽春,有些功能(例如複製文件到使用者電腦),並沒有提供UI進行設定,需要另外客製化。但至少,自動同步Client端的版本這個功能還是Workable的,這已經可以減低不少維護的負擔。
以ClickOnce部署VSTO的Excel專案
ClickOnce可以自動比對安裝在Client端的版本資訊與Server的版本資訊,若有差異,則會自動下載安裝最新版。這讓.NET寫的Windows Form程式在做版本更新時,更加的簡單及方便。這個機制,也可以使用在VSTO的專案,只是相對WPF、Windows From、Console Application,VSTO的ClickOnce的支援相對陽春,有些功能(例如複製文件到使用者電腦),並沒有提供UI進行設定,需要另外客製化。但至少,自動同步Client端的版本這個功能還是Workable的,這已經可以減低不少維護的負擔。
ClickOnce可以用三種不同的方式發佈(Publish)應用程式:
- 透過 Web 網頁
- 透過網路檔案共用
- 透過 CD-ROM 之類的媒體
這表示可以將部署用的檔案放在網路上共用的目錄,也可以放在IIS等的Web Server上,透過Http的方式來取得。以管理的方便性及安全性來說,放在Web Server上會比較適當。
所以,這裡就介紹使用Web的方式以設定VSTO的ClickOnce部署方式,這裡使用的是Office 2010以及Visual Studio 2010。新版的Visual Studio會有些小差異,但主功能都相同。
建立IIS的虛擬目錄
基本上,Excel的Workbook專案在部署時會產生一個目錄跟三個檔案。該目錄(Application Files)會依據版本號產生對應的子目錄,裡面有一些VSTO需要使用到的dll檔,以供部署時使用。另外三個檔案分別是: • Excel檔 - 專案使用的Excel檔 • vsto檔-紀錄版本資訊以及ClickOnce的發行路徑資訊,用來安裝VSTO所建立的自訂套件到Office中。 • Setup.exe - 用來引導安裝使用VSTO所需的套件,例如.NET Framework
其內容就類似以下的樣子:
這些都是發佈(Publish)應用程式所需要的檔案,只要放在IIS的虛擬目錄下,讓IIS來Host這些檔案及目錄。當使用者在開啟Excel檔時,ClickOnce就可以連結到該站台的目錄下檢查版本資訊,以決定是否要更新版本。
設定專案的Publish屬性
在Visual Studio的VSTO專案上,按右鍵選取屬性(Properties),以開啟該專案的設定頁面。點選Publish標籤,就可以看到該VSTO專案的發佈設定。
這個頁面中,有些資訊必須輸入。
Publish Location的設定區
- Publishing Folder Location - 用來設定產生出來的安裝檔放置的位置,可以使用UNC語法設定到IIS Server所分享出來的目錄,這樣就可以把檔案直接產生在IIS上,不需另外Copy & Paste。
- Installation Folder URL - 用來設定ClickOnce要比對版本的路徑。因為我們使用Web的發佈方式,所以在這裡輸入我們所設定的Web Server的路徑
Install Setting的設定區
另外還需要設定更新的週期,按下Updates按鈕,以開啟更新設定
如果需要每次都檢查版本,就選取第一個選項
Publish Version的設定區
按下Publish Now按鈕,Visual Studio就會Build好專案,並依據Publishing Folder Location的設定將所產生的部署檔案連同目錄放到該位置上。
部署到使用者的電腦
透過瀏覽器打開之前設定的Web Server上的安裝檔-setup.exe,並執行該檔案,以安裝所需的套件。再另外儲存Web Server上的Excel檔到使用者的電腦上。
之後,只要開啟該Excel檔,ClickOnce的機制就會自動比對Web Server上的版本。一旦發現有更新的版本,就會自動安裝該版本。
不過,要注意的是,ClickOnce自動更新的,是我們透過.NET所寫的dll,而非Excel本身。所以,如果新版本的開發過程中,有另外修改Excel檔本身,那就必須要另外下載新的Excel檔到使用者的電腦上。
當然,也可以將Excel的更新包到ClickOnce的機制內,不過有點麻煩,可以參考MSDN的說明-逐步解說:在 ClickOnce 安裝後將文件複製到使用者電腦。