ClickOnce 是一種部署技術,使用該技術可創建自行更新的基於 Windows 的應用程序,這些應用程序可以通過最低程度的用戶交互來安裝和運行。
ClickOnce 部署克服的主要問題
ClickOnce 部署克服了部署中所固有的三個主要問題:
更新應用程序的困難
使用 Microsoft Windows Installer 部署,每次應用程序更新,用戶都必須重新安裝整個應用程序;使用 ClickOnce 部署,則可以自動提供更新。只有更改過的應用程序部分纔會被下載,然後從新的並行文件夾重新安裝完整的、更新後的應用程序。
對用戶的計算機的影響
使用 Windows Installer 部署時,應用程序通常依賴於共享組件,這便有可能發生版本衝突;而使用 ClickOnce 部署時,每個應用程序都是獨立的,不會干擾其他應用程序。
安全權限
Windows Installer 部署要求管理員權限並且只允許受限制的用戶安裝;而 ClickOnce 部署允許非管理用戶安裝應用程序並僅授予應用程序所需要的那些代碼訪問安全權限。 過去,這些問題有時會使開發人員決定創建 Web 應用程序而不是基於 Windows 的應用程序,爲便於安裝而犧牲了 Windows 窗體豐富的用戶界面和響應性。對於使用 ClickOnce 部署的應用程序,您可以集這兩種技術的優勢於一身。
ClickOnce 應用程序
什麼是 ClickOnce 應用程序? 簡單說來,ClickOnce 應用程序就是任何使用 ClickOnce 技術發佈的 Windows 窗體或控制檯應用程序。可以採用三種不同的方法發佈 ClickOnce 應用程序:從網頁發佈、從網絡文件共享發佈或是從媒體(如 CD-ROM)發佈。ClickOnce 應用程序既可以安裝在最終用戶的計算機上並在本地運行(即使當計算機脫機時也可以運行),也可以僅以聯機模式運行,而不在最終用戶的計算機上永久安裝任何內容。有關更多信息,請參見選擇 ClickOnce 部署策略。 ClickOnce 應用程序可以自行更新;這些應用程序可以在較新版本變爲可用時檢查較新版本,並自動替換所有更新的文件。開發人員可以指定更新行爲;網絡管理員也可以控制更新策略,如將更新標記爲強制性的。最終用戶或管理員還可以對更新進行回滾,使應用程序恢復到早期的版本。 因爲 ClickOnce 應用程序在本質上是被隔離的,所以安裝或運行 ClickOnce 應用程序不會干擾現有的應用程序。ClickOnce 應用程序是完全獨立的;每個 ClickOnce 應用程序都安裝到一個安全的基於每個用戶、每個應用程序的緩存中,並從該緩存運行。默認情況下,ClickOnce 應用程序運行在 Internet 或 Intranet 安全區域中。如果有必要,應用程序可以請求提升的安全權限。 ClickOnce 部署 客戶端點"安裝"後無反應的處理辦法: ClickOnce 部署方式在客戶端是由此文件支持的 dfshim.dll.. 在.net 2.0 framework 安裝時,與 .application文件類型相關聯... 瀏覽器在下載 .application文件後,會由 dfshim.dll交由 dfsvc.exe 打開,我們就會看到ClickOnce的安裝界面了..... 因此:若出現客戶端點“安裝”沒有任何反應的情況,我們可以使用右鍵 另存爲 功能下載 .application文件,然後選中.application文件使用右鍵 打開方式 選擇 dfsvc.exe 打開此文件,即可進行客戶端的安裝....
VS2005生成時提示錯誤"無法在證書存儲區中找到清單簽名證書"
2010-04-19 15:33
第一種辦法:打開項目對應csproj文件。將" <SignManifests>true</SignManifests> " 修改爲 "<SignManifests>false</SignManifests>".
第二種辦法:刪除csproj文件中類似以下內容:<ManifestCertificateThumbprint>B531F2CF222748C5E29308FC2247704827D1EA8C</ManifestCertificateThumbprint>
<ManifestKeyFile>xxxx_TemporaryKey.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>true</SignManifests>
<PublishUrl>D:\xxx\bin\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<CreateWebPageOnPublish>false</CreateWebPageOnPublish>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>
方法三:工程->屬性->簽名->爲ClickOnce清單簽名 去掉這個勾
方法四:在"簽名"中選擇"創建測試證書..."按鈕,建一個證書即可
個人整理
C#的winform工程中屬性中,簽名項有“爲ClickOnce清單簽名”這一項,默認爲有勾,打勾時在發佈時可以進行自動更新。
但對應的證書只有約一年的有效期,如果有人環境問題,或過期了,則提示“無法在證書存儲區中找到清單簽名證書”。
解決方法,將勾去掉,則編譯通過,以後打包時換能用的機器,再打勾發佈即可。
網上介紹的VS2005下修改項目文件的方法,在"簽名"中選擇"創建測試證書..."按鈕,建一個證書即可,這個在多人開發下可能不行,因創建的證書在該人的本地。
以下內容,會被自動調整
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{FEE08A18-5B59-485F-9AAB-DCBD9C7AE0FE}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LispClient</RootNamespace>
<AssemblyName>LispClient</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ManifestCertificateThumbprint>1B7CF9C627088AA4E8976B562DAF9FDEC2A3342F</ManifestCertificateThumbprint>
<ManifestKeyFile>LispClient_TemporaryKey.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>true</SignManifests>
另一人創建文件並指定後,本人從VSS獲取,發現編譯時,要求創建人的文件和密碼,否則無法編譯;密碼輸入正確後,仍然提示文件路徑錯誤,可能創建時,提示簽入時,我沒有上傳此文件,呵呵,不想再試,怕出錯,且這個文件如何處理還需要有空再研究。
試驗環境,VS2008.
應用程序自動更新的方法,個人總結並在本機上試驗通過。
1、C#的winform工程中屬性中,簽名項有“爲ClickOnce清單簽名”這一項,默認爲有勾,打勾時在發佈時可以進行自動更新,故必須打勾。
2、屬性的發佈項
•發佈文件夾位置,選擇本地文件夾,或網址如http://localhost/mysetup/,說明,發佈時會將安裝文件生成在此位置。
•安裝文件夾url,爲空。
•安裝模式和設置項,選可以脫機使用。
•發佈版本,注意要遞增。
點擊更新按鈕,進入應用程序更新窗體
•應用程序應該檢查更新,打勾。
•何時檢查更新,選擇運行前。
•更新位置,指定一個網站地址,如http://localhost/mysetup/
點擊選項按鈕,進入發佈選項窗體
說明項,三個名稱應該輸入。
清單項,創建桌面快捷方式,打勾
該窗體其它內容,可以不用調整。
本人驗證自動更新的方法
1、發佈,安裝
2、修改某個窗體,再發布
3、運行程序,提示有更新,是否安裝
選擇跳過,則不安裝,且不再提示
選擇更新確認,則自動更新程序。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/WYZSC/archive/2011/01/20/6154450.aspx