ClickOnce 是一種部署技術,使用該技術可創建自行更新的基於 Windows 的應用程序,這些應用程序可以通過最低程度的用戶交互來安裝和運行。ClickOnce 部署克服了部署中所固有的三個主要問題:
- 更新應用程序的困難。 使用 Microsoft Windows Installer 部署,每次應用程序更新,用戶都必須重新安裝整個應用程序;使用 ClickOnce 部署,則可以自動提供更新。只有更改過的應用程序部分纔會被下載,然後從新的並行文件夾重新安裝完整的、更新後的應用程序。
- 對用戶的計算機的影響。 使用 Windows Installer 部署時,應用程序通常依賴於共享組件,這便有可能發生版本衝突;而使用 ClickOnce 部署時,每個應用程序都是獨立的,不會干擾其他應用程序。
- 安全權限。 Windows Installer 部署要求管理員權限並且只允許受限制的用戶安裝;而 ClickOnce 部署允許非管理用戶安裝應用程序並僅授予應用程序所需要的那些代碼訪問安全權限。
過去,這些問題有時會使開發人員決定創建 Web 應用程序而不是基於 Windows 的應用程序,爲便於安裝而犧牲了 Windows 窗體豐富的用戶界面和響應性。對於使用 ClickOnce 部署的應用程序,您可以集這兩種技術的優勢於一身。
什麼是 ClickOnce 應用程序?
簡 單說來,ClickOnce 應用程序就是任何使用 ClickOnce 技術發佈的 Windows 窗體或控制檯應用程序。可以採用三種不同的方法發佈 ClickOnce 應用程序:從網頁發佈、從網絡文件共享發佈或是從媒體(如 CD-ROM)發佈。ClickOnce 應用程序既可以安裝在最終用戶的計算機上並在本地運行(即使當計算機脫機時也可以運行),也可以僅以聯機模式運行,而不在最終用戶的計算機上永久安裝任何 內容。有關更多信息,請參見選 擇 ClickOnce 部署策略 。
ClickOnce 應用程序可以自行更新;這些應用程序可以在較新版本變爲可用時檢查較新版本,並自動替換所有更新的文件。開發人員可以指定更新行爲;網絡管理員也可以控制 更新策略,如將更新標記爲強制性的。最終用戶或管理員還可以對更新進行回滾,使應用程序恢復到早期的版本。有關更多信息,請參見選 擇 ClickOnce 更新策略 。
因 爲 ClickOnce 應用程序在本質上是被隔離的,所以安裝或運行 ClickOnce 應用程序不會干擾現有的應用程序。ClickOnce 應用程序是完全獨立的;每個 ClickOnce 應用程序都安裝到一個安全的基於每個用戶、每個應用程序的緩存中,並從該緩存運行。默認情況下,ClickOnce 應用程序運行在 Internet 或 Intranet 安全區域中。如果有必要,應用程序可以請求提升的安全權限。有關更多信息,請參見 ClickOnce 部署和安全 。
ClickOnce 部署的工作方式
核心 ClickOnce 部署結構基於兩個 XML 清單文件:一個應用程序清單和一個部署清單。
應 用程序清單描述應用程序本身,包括程序集、組成應用程序的依賴項和文件、所需的權限以及提供更新的位置。應用程序開發人員使用 Visual Studio 2005 中的發佈嚮導或 .NET Framework SDK 中的清單生成工具 (Mage.exe) 來創作應用程序清單。有關更多信息,請參見如 何:發佈 ClickOnce 應用程序 。
部署清單描述如何部署應用程序,包括應用程序清單的位置以及客戶端應運行的應用程序的版本。 管理員使用 .NET Framework SDK 中的清單生成工具 (Mage.exe) 來創作部署清單。
部署清單在創建後會被複制到部署位置。部署位置可以是 Web 服務器、網絡文件共享或媒體(如 CD)。應用程序清單和所有應用程序文件也都被複制到在部署清單中指定的一個部署位置。此位置可以與部署清單的部署位置相同,也可以不同。使用 Microsoft Visual Studio 2005 中的“發佈嚮導”時,複製操作是自動執行的。
注意 |
---|
如果開發人員同時也是管理員(即開發人員在將要部署部署清單的網站或文件共享位置具有管理員特權),則只需要此清單即可。如果開發人員不是管理 員,則必須由管理員使用命令行工具更新清單並對清單進行簽名。 |
當 部署清單被部署到部署位置後,最終用戶可以在網頁上或文件夾中單擊表示部署清單文件的圖標,從而下載和安裝應用程序。在大多數情況下,會向最終用戶提供一 個簡單的對話框以請用戶確認安裝,在此之後便不需要進一步的用戶干預,安裝會繼續執行且應用程序會被啓動。在應用程序要求提升的權限的情況下,該對話框還 會請用戶在安裝繼續進行之前授予相應權限。
應用程序會被添加到用戶的“開始”菜單 和“控制面板”中的“添加/刪除程序”組中。與其他部署技術不同,此 部署技術不會向“Program Files”文件夾、註冊表和桌面添加任何內容,且安裝無需任何管理員權限
注意 |
---|
也可以禁止將應用程序添加到“開始”菜單和“添加/刪除程 序”組中,其效果是使應用程序的行爲與 Web 應用程序相類似。有關更多信息,請參見選 擇 ClickOnce 部署策略 。 |
當應用程序開發人員創建更新版本的應用程序時,開發人員也會生成新的應用程序清單,並將文件 複製到一個部署位置 — 通常是原始應用程序部署文件夾的同級文件夾。管理員會更新部署清單,使之指向新版本的應用程序所在的位置。
注意 |
---|
可以使用 Microsoft Visual Studio 2005 中的“發佈嚮導”執行這些步驟。 |
除 部署位置外,部署清單還包含應用程序在其中檢查更新版本的更新位置(一個網頁或網絡文件共享)。ClickOnce 的“Publish”屬性用於指定應用程序檢查更新的時間和頻率。更新行爲可以在部署清單中指定,也可以通過 ClickOnce API 在應用程序的用戶界面中以用戶選項的形式提供。此外,“Publish”屬性還可以用於將更新設置爲強制性的, 或是用於將應用程序回滾到較早版本。有關更 多信息,請參見選 擇 ClickOnce 更新策略 。
ClickOnce 和 Windows Installer 比較表
下表將 ClickOnce 部署的功能與 Windows Installer 部署的功能進行了比較:
功能 | ClickOnce | Windows Installer |
---|---|---|
自動更新1 | 是 | 是 |
安裝後回滾2 | 是 | 否 |
從 Web 更新 | 是 | 否 |
不影響共享組件或其他應用程序 | 是 | 否 |
授予的安全權限 | 僅授予應用程序所必需的權限(更安全) | 默認授予“完全信任”權限(不夠安全) |
要求的安全權限 | Internet 或 Intranet 區域(爲 CD-ROM 安裝提供完全信任) | 管理員 |
應用程序和部署清單簽名 | 是 | 否 |
安裝時用戶界面 | 單次提示 | 多部分嚮導 |
即需安裝程序集 | 是 | 否 |
安裝共享文件 | 否 | 是 |
安裝驅動程序 | 否 | 是(自定義操作) |
安裝到全局程序集緩存 | 否 | 是 |
爲多個用戶安裝 | 否 | 是 |
向“開始”菜單添加應用程序 | 是 | 是 |
向“啓動”組添加應用程序 | 否 | 是 |
向“收藏夾”菜單添加應用程序 | 否 | 是 |
註冊文件類型 | 否 | 是 |
安裝時註冊表訪問3 | 受限 | 是 |
二進制文件修補 | 否 | 是 |
應用程序安裝位置 | ClickOnce 應用程序緩存 | “Program Files”文件夾 |
說明
1. 對於 Windows Installer,必須在應用程序代碼中實現編程方式的更新。
2. 對於 ClickOnce,可在“添加/刪除程序”中實現回滾。
3. ClickOnce 部署只有使用“完全信任”權限才能訪問 HKEY_LOCAL_MACHINE (HKLM)。