ClickOnce發行

      在〈ClickOnce發行〉中有 1 則留言

何謂ClickOnce

ClickOnce 是一項部署技術, 可將我們開發出來的Windows應用程式包裝成安裝檔, 並於執行應用程式前自動檢查最否有新的版本. ClickOnce 部署能克服部署的三個主要問題:

1. 更新應用程式的困難 :  若使用 Microsoft Windows Installer 部署, 每當應用程式更新時, 使用者就必須重新安裝整個應用程式. 經由 ClickOnce 部署, 可以自動提供更新, 並且只會下載應用程式中變更的部分, 然後再從新的並存資料夾重新安裝完整、更新的應用程式.

2. 對使用者電腦的影響 : 如果使用 Windows Installer 部署, 應用程式通常會仰賴共用元件, 而且可能會造成版本控制衝突. 使用 ClickOnce 的話, 每個應用程式都是獨立的 (Self-Contained), 而且不會干擾其他應用程式.

3. 安全性權限 :  Windows Installer 部署需要系統管理權限, 並且只允許有限的使用者進行安裝.  ClickOnce 部署可讓非系統管理員的使用者進行安裝, 並且僅授與應用程式所必要「程式碼存取安全性」權限.

以往常因上述問題讓開發人員決定建立 Web 應用程式而非 Windows 架構應用程式, 因而犧牲了 Windows 應用程式豐富的使用者介面和回應速度. 如今使用 ClickOnce 部署的應用程式中, 可以同時擁有這兩種技術的最佳優勢.

什麼是 ClickOnce 應用程式

不論是WPF, Windows Form, 或主控台應用程式, 使用ClickOnce 包裝出來的Setup安裝檔, 就稱為ClickOnce 應用程式. ClickOnce 應用程式有三種發行方式:透過 Web 網頁、透過網路檔案共用,或透過 CD-ROM 等媒體. ClickOnce 應用程式可以安裝在一般使用者電腦上, 然後從開始功能表或桌面捷徑啟動執行. 另外也可以在線上模式中執行, 此方式就不需要安裝在一般使用者電腦上.

ClickOnce 應用程式可以自行更新. 也就是說, 它們可以檢查可用的更新版本, 並且自動取代任何更新的檔案. 雖然開發人員可以指定更新行為, 不過網路系統管理員也可以控制更新策略. 例如, 將更新標記為強制性. 另外, 使用者可以將更新復原為之前的版本.

由於 ClickOnce 應用程式是隔離的, 因此安裝或執行 ClickOnce 應用程式都不會中斷現有的應用程式. ClickOnce 應用程式是獨立的. 也就是說, 每個 ClickOnce 應用程式都會安裝在針對使用者和應用程式的安全快取中, 然後從中執行. 根據預設, ClickOnce 應用程式會在網際網路或內部網路的安全性區域 (Security Zone) 中執行.

發行前設定

應用程式在包裝成Setup安裝檔前, 需進行設定. 請由專案處按右鍵/屬性

deploy1

更新

按下更新鈕後, 勾取 “在應用程式啟動前”, 則在執行前會先檢查是否有更新檔.

當使用者在遠端執行我們的應用程式時, 會連線到我們的Server檢查是否有新的版本, 如果有新的版本, 客戶端就會彈出詢問是否更新的畫面.  但此時使用者還是可以選擇拒絕更新, 繼續使用舊版的應用程式.

如果在下圖中, 勾選 “指定此應用程式的最小必要版本”, 然後填入最新版號.  那麼使用者在執行應用程式時若有網路連線, 則會自動更新, 不會再詢問, 這樣就可以逼迫使用者一定會更新.

clickonce_1

選項

在選項按鈕裏,  可以選擇是否要在桌面建立捷徑

deploy3

發行步驟

1.  在工能表列的 “建置”中選擇 “發行”
2. 指定發行的目錄, 預設為 “發行\”
3. 使用者如何安裝應用程式 : 選取 “從CD-ROM或DVD-ROM” , 如此會在發行目錄中製作setup.exe
4. 應用程式會在哪裏檢查更新檔 : 將上述發行的檔案放在網站即可. 網站可以是IIS or Apache
5. 完成

自動更新的版本檢查機制

這裏的版本, 是指在 “發行\Application Files” 目錄裏的檔案命名方式. 每次從開始功能表執行應用程式時, 就會立即到指定網站的Application Files目錄中檢查是否有新的更新檔. 檔名以遞增的方式增加, 如App_1_0_0_0, App_1_0_0_1. 若在建置發行時要回復到1_0_0_0, 需於專案名稱按右鍵, 選屬性/發行, 再於發行版本進行更改

update

程式的版本控制

這裏的版本是指程式的版本, 需於AssemblyInfo.cs進行更改如下程式碼

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

然後於程式碼使用如下方式取得程式的版本號

FileVersionInfo version = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
 this.Title = "管理系統_"+version.FileVersion.ToString();

更改安裝目錄

ClickOnce應用程式安裝的路徑在C:\Documents and Settings\使用者l\Local Settings\Apps\2.0.

ClickOnce的目的, 是允許任何人都可以安裝, 所以一定會安裝在登入者的目錄中. 另外為了在安裝過程中, 不影響原先正在執行中的程式, 所以採用了隨機的安裝路徑. 所以想要更改安裝的路徑, 應該是不太可能(純猜測啦).

所以對於想更改安裝的目錄, 應該盡可能避免

Documents and Settings

Documents and Settings在Win10被鎖住了, 所以要先進行二個步驟解開

第一先由檔案總管的選項功能中, 將隱藏保護的作業系統檔案取消勾選, 如果才會出現 Documents and Settings目錄

deploy4

第二步驟設定權限, 在Documents and Settings 按右鍵/內容/進階, 會有二個Everyone的帳號, 把第一個Everyone刪除, 僅留第二個Everyone, 如此即可進入Documents and Settings的目錄

不過進入之後, 在使用者l\Local Settings\Apps\2.0 裏, 有很多隨機的目錄, 這是我們無法預測跟更改的.

deploy5

1 thought on “ClickOnce發行

  1. Tyron Firoozbakht

    Your talent to transform everyday topics into fascinating content is truly impressive. Well done!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *