ClickOnce 是一項部署技術,可讓您建立透過最少的使用者互動來安裝和執行的自行更新 Windows 架構應用程式。ClickOnce 部署能克服部署中固有的三個主要問題:
-
更新應用程式的困難 若使用 Microsoft Windows Installer 部署,每當應用程式更新時,使用者就必須重新安裝整個應用程式;而經由使用 ClickOnce 部署,您可以自動提供更新,並且只會下載應用程式中經過變更的那部分,然後再從新的並存資料夾重新安裝完整、更新的應用程式。
-
對使用者電腦的影響:如果使用 Windows Installer 部署,應用程式通常會仰賴共用元件,而且可能會造成版本控制衝突。不過,只要使用 ClickOnce 部署,每個應用程式都是獨立的 (Self-Contained),而且不會干擾其他應用程式。
-
安全性權限 Windows Installer 部署需要系統管理權限,並且只允許有限的使用者進行安裝;而 ClickOnce 部署可讓非系統管理員的使用者進行安裝,並且僅授與應用程式所必要的那些「程式碼存取安全性」權限。
在過去,這些問題有時會讓開發人員決定建立 Web 應用程式而非 Windows 架構應用程式,雖然安裝方便,但是卻犧牲了 Windows Form 的豐富使用者介面和回應速度。不過,在使用 ClickOnce 部署的應用程式中,您可以同時擁有這兩種最佳技術。
什麼是 ClickOnce 應用程式?
簡單來說,ClickOnce 應用程式就是任何使用 ClickOnce 技術所發行的 Windows Form 或主控台應用程式。您可以用三種不同的方式發行 ClickOnce 應用程式:透過 Web 網頁、透過網路檔案共用,或透過 CD-ROM 之類的媒體。ClickOnce 應用程式可以安裝在一般使用者電腦上,如此即使電腦離線,也可以在本機上執行,或者也可以在僅限線上模式下執行,如此就不需要在一般使用者電腦上永久安裝任何項目。如需詳細資訊,請參閱選擇 ClickOnce 部署策略。
ClickOnce 應用程式可以自行更新。也就是說,它們可以檢查可用的更新版本,並且自動取代任何更新的檔案。雖然開發人員可以指定更新行為,不過網路系統管理員也可以控制更新策略,例如,將更新標記為強制的。此外,一般使用者或系統管理員都可以將更新復原為之前的版本。如需詳細資訊,請參閱選擇 ClickOnce 更新策略。
由於 ClickOnce 應用程式原本就是獨立的,因此安裝或執行 ClickOnce 應用程式都不會中斷現有的應用程式。ClickOnce 應用程式是完全獨立的。也就是說,每個 ClickOnce 應用程式都會安裝在針對使用者和應用程式的安全快取中,然後從中執行。根據預設,ClickOnce 應用程式會在網際網路或內部網路的安全性區域 (Security Zone) 中執行。必要時,應用程式就可以要求更高的安全性權限。如需詳細資訊,請參閱 ClickOnce 部署和安全性。
ClickOnce 部署如何運作
ClickOnce 核心部署架構是以兩個 XML 資訊清單檔為基礎:應用程式資訊清單和部署資訊清單。
應用程式資訊清單會描述應用程式本身,包括組件 (Assembly)、組成應用程式的相依性和檔案、必要的使用權限,以及可以取得更新的位置。應用程式開發人員是經由使用 Visual Studio 2005 中的發行精靈或 .NET Framework SDK 中的資訊清單產生工具 (Mage.exe) 來編寫應用程式資訊清單。如需詳細資訊,請參閱 HOW TO:發行 ClickOnce 應用程式。
部署資訊清單會描述應用程式的部署方式,包括應用程式資訊清單的位置以及用戶端應該要執行的應用程式版本。系統管理員會使用 .NET Framework SDK 中的資訊清單產生工具 (Mage.exe),撰寫部署資訊清單。
注意事項 |
|---|
| Microsoft Visual Studio 2005 中的 [發行精靈] 也會產生部署資訊清單。 |
建立部署資訊清單後,它就會複製到部署位置中。這個位置可能是 Web 伺服器、網路檔案共用,或 CD 之類的媒體。此外,應用程式資訊清單和所有應用程式檔案也都會複製到部署資訊清單中指定的部署位置。這個位置可能與部署位置相同,也可能是不同的位置。當您使用 Microsoft Visual Studio 2005 中的 [發行精靈] 時,就會自動執行複製作業。
注意事項 |
|---|
| 如果開發人員也是系統管理員 (亦即,擁有將要部署部署資訊清單之網站或檔案共用的系統管理員權限),就僅需要此資訊清單。如果開發人員不是系統管理員,系統管理員就必須使用命令列工具來更新並簽署資訊清單。 |
將它部署至部署位置後,一般使用者就可以按一下 Web 網頁或資料夾中表示部署資訊清單檔的圖示,藉以下載並安裝應用程式。在大部分情況下,一般使用者都會收到一個簡單的對話方塊,詢問使用者是否確定要安裝,然後不需要進一步介入就會繼續進行安裝並啟動應用程式。如果應用程式需要更高的使用權限,此對話方塊也會要求使用者授與使用權限,才能繼續進行安裝。
此應用程式會加入至使用者的 [開始] 功能表和 [控制台] 的 [新增或移除程式] 群組中。不過,與其它部署技術不同的是,Program Files 資料夾、登錄或桌面都不會加入任何項目,而且安裝時不需要系統管理員權限。
注意事項 |
|---|
| 您也可以防止應用程式加入至 [開始] 功能表和 [新增或移除程式] 群組中,讓它的行為實際就像是 Web 應用程式一樣。如需詳細資訊,請參閱選擇 ClickOnce 部署策略。 |
當應用程式開發人員建立更新版本的應用程式時,也會產生新的應用程式資訊清單,並將檔案複製到部署位置中 (通常是原始應用程式部署資料夾的同層級資料夾)。系統管理員會更新部署清單,以便指向新版應用程式的位置。
注意事項 |
|---|
| 您可以使用 Microsoft Visual Studio 2005 中的 [發行精靈] 來執行這些步驟。 |
除了部署位置以外,部署資訊清單也會包含應用程式檢查更新版本的更新位置 (Web 網頁或網路檔案共用)。ClickOnce 的 [發行] 屬性是用來指定應用程式應該檢查更新的時間和頻率。您可以在部署資訊清單中指定更新行為,也可以利用 ClickOnce API,在應用程式的使用者介面中將更新行為提供成使用者選項。此外,您可以採用 [發行] 屬性,讓更新成為強制的,或是復原為之前的版本。如需詳細資訊,請參閱 選擇 ClickOnce 更新策略。
ClickOnce 和 Windows Installer 的比較表
下表會比較 ClickOnce 部署與 Windows Installer 部署的功能:
|
功能
|
ClickOnce
|
Windows Installer
|
| 自動更新1 | 可以 | 可以 |
| 安裝後復原2 | 可以 | 不可以 |
| 從 Web 更新 | 可以 | 不可以 |
| 不影響共用元件或其他應用程式 | 可以 | 不可以 |
| 授與的安全性權限 | 僅授與應用程式所需的使用權限 (較安全) | 預設授與完全信任 (較不安全) |
| 需要的安全性權限 | 網際網路或內部網路區域 (CD-ROM 安裝時,則為完全信任) | Administrator |
| 應用程式和部署資訊清單的簽署 | 可以 | 不可以 |
| 安裝階段使用者介面 | 單一提示 | 多個精靈 |
| 視需要安裝組件 | 可以 | 不可以 |
| 共用檔案的安裝 | 不可以 | 可以 |
| 安裝驅動程式 | 不可以 | 可以 (使用自訂動作) |
| 安裝至全域組件快取 | 不可以 | 可以 |
| 為多位使用者安裝 | 不可以 | 可以 |
| 將應用程式加入至 [開始] 功能表 | 可以 | 可以 |
| 將應用程式加入至啟動群組 | 不可以 | 可以 |
| 將應用程式加入至 [我的最愛] 功能表 | 不可以 | 可以 |
| 註冊檔案類型 | 不可以 | 可以 |
| 安裝時間登錄存取3 | 有限 | 可以 |
| 二進位檔案修補 | 不可以 | 可以 |
| 應用程式安裝位置 |
ClickOnce 應用程式快取 |
Program Files 資料夾 |
注意
1. 如果使用 Windows Installer,您就必須在應用程式程式碼中實作程式設計更新。
2. 如果使用 ClickOnce,就可以在 [新增或移除程式] 中復原。
3. ClickOnce 部署只能以「完全信任」權限來存取 HKEY_LOCAL_MACHINE (HKLM)。
如需詳細資訊,請參閱選擇部署策略。
請參閱