C中windows的clickonce部署_第1頁
C中windows的clickonce部署_第2頁
C中windows的clickonce部署_第3頁
C中windows的clickonce部署_第4頁
C中windows的clickonce部署_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、應(yīng)用程序:使用 ClickOnce 進(jìn)行用戶啟動的更新此應(yīng)用程序演示如何使用 ClickOnce 應(yīng)用程序編程接口 (API) 向 Windows 窗體應(yīng)用程序添加用戶啟動的更新功能。新概念在 Visual Studio 2005 中,有三個(gè)可選的主要部署選項(xiàng):Web、ClickOnce 和 Windows Installer 包。使用 MS-DOS XCopy 命令將應(yīng)用程序文件從一個(gè)地方移動到另一個(gè)地方是另一種選項(xiàng),它仍然是最簡單、最直接的部署方法。它也最不靈活,實(shí)際上只適用于幾種情況 例如,當(dāng)更新 Web 應(yīng)用程序(即使它應(yīng)該只適合于不需要更新 IIS 元數(shù)據(jù)庫的部署)或用于安裝私有 .

2、NET 程序集的情況。ClickOnce是 Visual Studio 2005 中引入的一種集成部署技術(shù),允許從 Web 服務(wù)器安裝和運(yùn)行 Windows 應(yīng)用程序,而幾乎沒有與用戶進(jìn)行交互。作為 Microsoft Windows Server 2003、Windows XP、Windows 2000 和 Windows Me 附帶的一部分,Windows Installer是一項(xiàng)安裝和配置服務(wù)(作為單獨(dú)的下載內(nèi)容,它還可用于 Windows 9x 和 Windows NT 4.0)。您將發(fā)現(xiàn),在 Visual Studio 2005 中構(gòu)建于 Windows Installer 基礎(chǔ)上的

3、部署工具為提供了豐富的功能,可以快速部署和更新應(yīng)用程序。 背景組成 ClickOnce 的服務(wù)集合體現(xiàn)了這些技術(shù)的發(fā)展,.NET Framework 的第一版中開始出現(xiàn)一種稱為非接觸部署(No-Touch) 的技術(shù)。在 .NET Framework 1.0 版發(fā)布時(shí),它馬上就解決了開發(fā)人員面臨的許多問題。在 .NET Framework 上構(gòu)建的托管應(yīng)用程序得益于應(yīng)用程序隔離和低影響部署(也稱為 XCopy 部署)。通過提供一種共享組件和對組件進(jìn)行版本控制的新方法,.NET Framework 1.0 還更正了“DLL Hell”問題(即安裝將破壞現(xiàn)有的軟件,并有可能破壞將來的軟件安裝)。消除

4、了 DLL 的版本問題,也就為思考部署 Windows 桌面應(yīng)用程序的新方法打開了一扇大門,與基于 Web 的應(yīng)用程序相比,Windows 桌面應(yīng)用程序可以提供更多的功能,并且可以提供更豐富的用戶體驗(yàn)。非接觸部署作為一種基于 Web 的部署方法而出現(xiàn),它允許安裝 Internet Explorer 5.01 或更高版本的用戶從某個(gè) URL 下載和安裝 Windows 桌面應(yīng)用程序,并在其本地計(jì)算機(jī)上運(yùn)行它們,而無需運(yùn)行通常的 Setup.exe。該部署機(jī)制還稱為“href-exes”,它將桌面應(yīng)用程序的豐富功能與 Web 應(yīng)用程序部署的簡單性結(jié)合起來。遺憾的是,直接從 Web 位置運(yùn)行應(yīng)用程序

5、也存在局限性。首先,由 Web 頁啟動的應(yīng)用程序僅在聯(lián)機(jī)時(shí)可用,因此受網(wǎng)絡(luò)連接的影響,這是由它們的本質(zhì)決定的。href-exes 的另一個(gè)重要問題是其安全性問題。應(yīng)用程序要運(yùn)行,更有可能要求更改客戶端上的默認(rèn)安全策略。在 Visual Studio 的早期版本中,開發(fā)人員在設(shè)計(jì)時(shí)幾乎不可能確定應(yīng)用程序所需的權(quán)限。毫無疑問,許多非接觸部署被不可預(yù)見的安全限制“巨石”所擊碎,使得這些部署不能用于生產(chǎn)中。非接觸部署的另一個(gè)局限性是,它沒有提供管理版本發(fā)布的標(biāo)準(zhǔn)機(jī)制。ClickOnce 可以保護(hù)用戶的計(jì)算機(jī)和應(yīng)用程序。當(dāng) ClickOnce 下載和安裝程序時(shí),它不會更改自身文件以外的任何文件??梢栽O(shè)置

6、更新策略,并利用 .NET Framework 版本控制機(jī)制來管理更新。在本節(jié)中,您將看到一個(gè)應(yīng)用程序,它闡釋如何使用 ClickOnce 部署 API 允許用戶自動更新 Windows 桌面應(yīng)用程序。但在研究該實(shí)現(xiàn)的細(xì)節(jié)之前,我們來回顧一下 ClickOnce 的新功能,以及在必須從中選擇的部署功能的范圍內(nèi),它如何適合于 Visual Studio 2005。您還將詳細(xì)了解到,以聲明方式實(shí)現(xiàn) ClickOnce 部署和自動更新是多么簡單。注當(dāng)我們討論 ClickOnce 的安全性時(shí),您將會更詳細(xì)地了解到,Visual Studio 2005 IDE 中提供的工具使得無需推測計(jì)算和配置分布式

7、Web 胖客戶端應(yīng)用程序的安全需求。這是朝實(shí)現(xiàn)非接觸部署的早期承諾邁進(jìn)的一大步。代碼訪問安全性代碼訪問安全性 (CAS) 是公共語言運(yùn)行庫 (CLR) 的一種功能,它基于代碼的標(biāo)識執(zhí)行安全性。作為一名開發(fā)人員,您可能并沒有將使用 CAS 作為日常事務(wù)的一部分,因?yàn)楸WC代碼安全的基礎(chǔ)結(jié)構(gòu)內(nèi)置于 .NET Framework 庫中。然而,為了做出關(guān)于應(yīng)用程序安全需求的正確決策,了解 CAS 非常必要 特別是 .NET Framework 如何處理證據(jù)、權(quán)限和代碼組。同樣非常重要的是,在開發(fā)項(xiàng)目的生命周期中,通常是在早期解決安全問題。詳盡地討論 CAS 超出了本書的范圍。要了解更多信息,請?jiān)L問 MS

8、DN Web 站點(diǎn)(請參見 .asp?url=/library/en-us/cpguide/html/cpconcodeaccesssecurity.asp),該站點(diǎn)包含許多有關(guān)常見安全問題的文章,特別是有關(guān) CAS 的文章;也可以閱讀專門論述 .NET Framework 安全性的書籍,例如 Writing Secure Code, 2nd Edition, by Michael Howard and David LeBlanc (Microsoft Press, 2003) 或 .NET Framework Security, by Brian A. LaMacchia, et al. (

9、Addison-Wesley, 2002)。ClickOnce 的優(yōu)點(diǎn)ClickOnce 構(gòu)建于此前的早期計(jì)劃的基礎(chǔ)上,旨在于解決許多與其他部署方法相關(guān)的障礙。自動/自助服務(wù)更新 非接觸部署引入桌面應(yīng)用程序基于 Web 的安裝。ClickOnce 擴(kuò)展了這種功能,提供一種自動更新應(yīng)用程序或允許用戶根據(jù)自己的判斷來更新應(yīng)用程序的機(jī)制。無需用戶重新安裝整個(gè)應(yīng)用程序也可以應(yīng)用更新。獨(dú)立應(yīng)用程序?yàn)榱吮苊庥袝r(shí)發(fā)生與使用共享組件的應(yīng)用程序相關(guān)的版本沖突,ClickOnce 將應(yīng)用程序部署為一個(gè)獨(dú)立的實(shí)體,該實(shí)體不會影響其他應(yīng)用程序。即,通過 ClickOnce 安裝的應(yīng)用程序不會被以后的應(yīng)用程序安裝破壞。

10、非管理員安裝只有具有管理員權(quán)限時(shí)才能運(yùn)行 Windows Installer 應(yīng)用程序。具有較低權(quán)限的帳戶可以安裝 ClickOnce 應(yīng)用程序,而且只授予它們運(yùn)行該應(yīng)用程序所需的權(quán)限。脫機(jī)訪問通過 ClickOnce 部署的應(yīng)用程序可以安裝為聯(lián)機(jī)運(yùn)行或本地運(yùn)行。在后一種情況中,它們與 Windows Shell 集成在一起,包括為應(yīng)用程序添加一個(gè)“Start”菜單快捷方式。這樣就可以隨時(shí)隨地訪問 Web 部署的應(yīng)用程序。注對于 .NET Framework 的 1.0 和 1.1 版本,Microsoft 為.NET提供了更新應(yīng)用程序塊,作為進(jìn)一步擴(kuò)展非接觸部署優(yōu)點(diǎn)的一種方法。該應(yīng)用程序塊由

11、 Microsoft 模式與實(shí)踐小組開發(fā)和發(fā)布,可以從 MSDN 免費(fèi)下載,它包含文檔和自定義 .NET 程序集(帶有源代碼),供開發(fā)人員為應(yīng)用程序添加自助更新功能。(請參見 。)在資金、時(shí)間和精力方面,ClickOnce 部署也提供了非常高的成本效益。設(shè)想一下,這些節(jié)約下來的投入肯定能對應(yīng)用程序設(shè)計(jì)中的關(guān)鍵決策點(diǎn)產(chǎn)生影響:由于需要一種方式來輕松地將應(yīng)用程序提供給廣大用戶,并需要能夠快速而簡單地更新該應(yīng)用程序,您已經(jīng)多少次將解決方案構(gòu)建為基于 Web 的應(yīng)用程序?如果您是一名在托管網(wǎng)絡(luò)環(huán)境中工作的開發(fā)人員,那么您將面臨網(wǎng)絡(luò)管理員帶來的其他障礙 他們不愿意或不會支持部署更新,而該部署更新又要求在

12、網(wǎng)絡(luò)上的每個(gè)客戶端系統(tǒng)中運(yùn)行安裝程序。說到底,將解決方案構(gòu)建為基于 Web 的應(yīng)用程序是最順暢的方式,這有幾個(gè)很充分的理由。雖然犧牲了高級功能和豐富的用戶界面,但部署和更新 Web 應(yīng)用程序?qū)⒏菀?、更?jīng)濟(jì)且更為輕松。ClickOnce 使得不需要在功能和容易部署之間進(jìn)行折衷,因?yàn)樗鼮榕挚蛻舳藨?yīng)用程序提供了簡單和可靠的 Web 應(yīng)用程序部署方式。所有這些都表明,基于 Web 的應(yīng)用程序?qū)⒉粫^時(shí)。它們?nèi)钥梢詾樾枰诟鞣N操作系統(tǒng)上運(yùn)行的解決方案提供無所不及的功能。對于完全功能的客戶端安裝,Windows Installer 包依然是最佳選擇。但是,在許多情況下,開發(fā)人員現(xiàn)在有望將胖客戶端應(yīng)用程序

13、提供給用戶,而無需面對部署約束,而在過去,這些約束使得這種部署方式成為一種不切實(shí)際的選擇。作為其核心,ClickOnce 是內(nèi)置于 .NET CLR 中的一組新部署功能。這些功能包括一個(gè)可編程的界面,以及集成在 Visual Studio 2005 IDE 中的設(shè)計(jì)時(shí)支持。此外,還可以將 ClickOnce 部署功能直接內(nèi)置于應(yīng)用程序本身中,而不需要構(gòu)建一個(gè)單獨(dú)的安裝程序。發(fā)布 ClickOnce 應(yīng)用程序ClickOnce 技術(shù)集成在 Visual Studio 2005 IDE 中的兩個(gè)主要部分。第一部分是“Build”菜單,它包含一個(gè)“Publish”菜單項(xiàng)。同樣的命令在解決方案資源管理

14、器中的解決方案和項(xiàng)目上下文菜單中也可用。Visual Studio 2005 IDE 中的第三個(gè)發(fā)布選項(xiàng)使用命令按鈕,該命令按鈕在項(xiàng)目設(shè)計(jì)器的“Publish”窗格中可用。(這表示 Visual Studio 2005 IDE 與 ClickOnce 集成的第二個(gè)主要部分。)選擇“Publish”菜單命令(或單擊“Publish”窗格中的“Publish Wizard”按鈕)將啟動“Publish Wizard”(如圖 8-1 所示),這種工具可指導(dǎo)您完成發(fā)布所需的步驟。圖 8-1 發(fā)布向?qū)?。發(fā)布向?qū)У牡谝豁撘筮x擇應(yīng)用程序的位置。該向?qū)У钠渌襟E同樣允許更改其他部署設(shè)置(例如,安裝模式和用戶

15、安裝應(yīng)用程序的方式,以及選擇簽名應(yīng)用程序和部署清單所需的公鑰/私鑰)。如果需要更改,請單擊“Next”按鈕,使向?qū)斑M(jìn)一步。完成更新設(shè)置后,單擊“Finish”。注部署清單是一個(gè)描述 ClickOnce 應(yīng)用程序部署的 XML 文件,包括部署的當(dāng)前版本、更新配置設(shè)置,以及最重要的 ClickOnce 應(yīng)用程序的應(yīng)用程序清單的當(dāng)前版本。 注應(yīng)用程序清單是一個(gè)標(biāo)識利用 ClickOnce 部署的應(yīng)用程序的 XML 文件,包括標(biāo)識應(yīng)用程序的主要程序集、它的安全需求、應(yīng)用程序使用的非程序集文件列表,以及應(yīng)用程序運(yùn)行所需的任何依賴項(xiàng)。當(dāng)首次發(fā)布應(yīng)用程序時(shí),Visual Studio 2005 在名為 p

16、ublish 的解決方案中創(chuàng)建一個(gè)新文件夾,并將安裝應(yīng)用程序所需的文件存儲在該目錄中,包括部署清單和包含應(yīng)用程序先決條件的引導(dǎo)程序。它還生成一個(gè)帶有指向程序安裝和先決條件的鏈接的 Web 頁。如果將某個(gè) Web 站點(diǎn)指定為發(fā)布的位置,ClickOnce 發(fā)布引擎就在目標(biāo) Web 服務(wù)器上創(chuàng)建一個(gè)虛擬目錄,并將文件從本地發(fā)布文件夾復(fù)制到該位置。最后,ClickOnce 在 Web 瀏覽器中打開一個(gè)發(fā)布頁,如圖 8-2 所示。圖 8-2 發(fā)布頁。安裝和運(yùn)行 ClickOnce 應(yīng)用程序如果部署應(yīng)用程序是為了脫機(jī)使用(這是默認(rèn)的安裝模式),單擊應(yīng)用程序鏈接就可以開始在用戶的計(jì)算機(jī)上安裝應(yīng)用程序。如果

17、將應(yīng)用程序配置為只可聯(lián)機(jī)使用,那么將直接從發(fā)布頁啟動它。圖 8-3 顯示當(dāng)嘗試安裝應(yīng)用程序時(shí)接收到的安全確認(rèn)消息。圖 8-3 安裝確認(rèn)對話框。用戶單擊“Install”按鈕后,應(yīng)用程序就安裝在用戶計(jì)算機(jī)上的一個(gè)本地文件夾中。安裝成功后,ClickOnce 子系統(tǒng)會自動從本地安裝目錄運(yùn)行此應(yīng)用程序。更新 ClickOnce 應(yīng)用程序?qū)⒏聜鬟f給應(yīng)用程序的過程與發(fā)布應(yīng)用程序原始版本的過程相同。發(fā)布更新之前唯一要做的事情就是增加應(yīng)用程序的版本號??梢宰詣踊蚴謩釉黾影l(fā)布版本號。默認(rèn)情況下,將發(fā)布版本設(shè)置為每次發(fā)布應(yīng)用程序就自動增加修訂號。但是,如圖 8-4 所示,可以清除“Automatically

18、Increment Revision With Each Release”復(fù)選框來手動設(shè)置該值。圖 8-4 發(fā)布版本。發(fā)布版本和應(yīng)用程序程序集的版本號完全無關(guān),注意到這一點(diǎn)非常重要。如果將應(yīng)用程序配置為每次發(fā)布自動增加版本號,那么對于發(fā)布 ClickOnce 應(yīng)用程序的新版本而言,最容易的方法是單擊項(xiàng)目設(shè)計(jì)器中“Publish”窗格中的“Publish Now”按鈕。發(fā)布子系統(tǒng)編譯更新的應(yīng)用程序,并將程序集和與其相關(guān)的應(yīng)用程序清單存儲在發(fā)布位置的一個(gè)新文件夾中。它還更新部署清單以指向新的應(yīng)用程序清單。下次用戶打開應(yīng)用程序時(shí)(并假定將應(yīng)用程序配置為檢查更新),用戶計(jì)算機(jī)上的 ClickOnce

19、運(yùn)行時(shí)會發(fā)現(xiàn)新版本,然后通知用戶更新可用或自動安裝更新。圖 8-5 顯示了一個(gè)典型的更新通知對話框。在該示例中,可以選擇安裝應(yīng)用程序的更新版本或跳過更新。在 ClickOnce 應(yīng)用程序的更新配置設(shè)置中,可以控制用戶是否可以選擇拒絕更新。圖 8-5 更新通知。為了更好地理解 ClickOnce 應(yīng)用程序如何獲知應(yīng)用程序的更新可用時(shí)間,可以研究圖 8-6 所示的文件和文件夾。該圖闡釋一種典型的更新情況,即存儲在 WeatherReport_ 文件夾中的應(yīng)用程序的原始版本已經(jīng)由存儲在 WeatherReport_ 文件夾中的更新的版本進(jìn)行更新。圖 8-6 已發(fā)布的應(yīng)用程

20、序文件。部署清單(圖 8-6 中所示的WeatherReport.application 文件)包含一個(gè)應(yīng)用程序最新版本的條目。當(dāng)應(yīng)用程序檢查更新時(shí),ClickOnce 查看部署清單,并將其與應(yīng)用程序的當(dāng)前版本進(jìn)行比較。如果可用版本比應(yīng)用程序的當(dāng)前版本更新,則 ClickOnce 或者顯示一條提示消息來通知用戶更新可用,或者自動更新應(yīng)用程序,這取決于您如何配置更新應(yīng)用程序設(shè)置。圖 8-7 闡釋這個(gè)過程。服務(wù)器包含應(yīng)用程序原始版本和更新版本 () 的應(yīng)用程序文件。部署清單顯示,應(yīng)用程序有一個(gè)更新的版本可用。當(dāng)已安裝的應(yīng)用程序執(zhí)行更新檢查時(shí),它將閱讀部署清單,并了解是否有一個(gè)更新可用

21、。配置 ClickOnce 屬性雖然默認(rèn)的 ClickOnce 設(shè)置在有些情況下是適合的,但您需要熟悉項(xiàng)目設(shè)計(jì)器的“Publish”窗格,以控制不同的部署方案?!癙ublish”窗格中的設(shè)置允許您配置高級部署選項(xiàng),配置各種更新方案,為 ClickOnce 應(yīng)用程序添加先決條件,并管理在應(yīng)用程序清單中如何處理應(yīng)用程序自身中包含的文件。注有關(guān) Visual Studio 2005 項(xiàng)目設(shè)計(jì)器的詳細(xì)信息,請參閱第 3 章“Visual Studio 2005 集成開發(fā)環(huán)境”。圖 8-8 項(xiàng)目設(shè)計(jì)器的“Publish”窗格。Deployment ManifestApplicationApplicati

22、onApplication發(fā)布位置發(fā)布位置可以是一個(gè) Web 站點(diǎn)、FTP 站點(diǎn)、文件共享或指向磁盤的路徑。如果旨在將應(yīng)用程序分布在可移動的介質(zhì)(例如 CD),則選擇磁盤路徑是一種合適的選擇。在目標(biāo) Web 服務(wù)器沒有配置為使用 Microsoft Front Page 服務(wù)器擴(kuò)展(發(fā)布到 Web 站點(diǎn)要求這樣做)的情況下,使用網(wǎng)絡(luò)文件共享或 ftp 服務(wù)器作為發(fā)布位置是一個(gè)不錯的選擇。如果安裝 URL 不同于發(fā)布位置,則在“Publish”窗格的“Installation URL”文本框中指定該地址。例如,如果發(fā)布到一個(gè)內(nèi)部 Web 站點(diǎn),而且該應(yīng)用程序是供 Internet 用戶使用的,那

23、么這將是指定外部地址的地方。需要指定單獨(dú)安裝 URL 的另一種情況是:發(fā)布位置是一個(gè)文件共享或 ftp 服務(wù)器。通過在“Publish”窗格包含的“Documentation And Support URL”文本框中設(shè)置 URL,還可以包含對以下二者的引用:應(yīng)用程序的基于 Web 的幫助或其他支持文檔。如果為該屬性輸入地址,那么它將作為發(fā)布應(yīng)用程序時(shí)生成的發(fā)布頁上的一個(gè)鏈接出現(xiàn)。安裝模式安裝模式將部署定義為已安裝應(yīng)用程序或已啟動應(yīng)用程序。表 8-1 總結(jié)每種選項(xiàng)的主要特點(diǎn)。表 8-1 安裝模式選項(xiàng)已安裝已啟動從 Web、CD/DVD 或網(wǎng)絡(luò)共享進(jìn)行安裝直接從 Web 或網(wǎng)絡(luò)共享運(yùn)行Shell

24、集成(“Start”菜單出現(xiàn)時(shí),添加到“Add or Remove Programs”的條目)沒有 shell 集成脫機(jī)可用 僅聯(lián)機(jī)可用各種應(yīng)用程序更新策略始終運(yùn)行最新版本的應(yīng)用程序。ClickOnce 安裝的應(yīng)用程序與按照傳統(tǒng)方式安裝的 Windows 應(yīng)用程序具有相同的基本屬性。ClickOnce 將程序快捷方式添加到“Start”菜單,而應(yīng)用程序出現(xiàn)在本地的“Add or Remove Programs”小程序中,因此,它可以像其他程序一樣卸載,也可以回滾到以前的版本??梢栽诎l(fā)布向?qū)Щ蝽?xiàng)目設(shè)計(jì)器的“Publish”窗格中設(shè)置安裝模式。在“Publish”窗格中,標(biāo)題為“Install M

25、ode And Settings”的部分包括兩個(gè)選項(xiàng)。選擇其中一個(gè)選項(xiàng):應(yīng)用程序只能聯(lián)機(jī)使用應(yīng)用程序也可以脫機(jī)使用注對版本回滾的支持僅限于 ClickOnce 應(yīng)用程序以前的一個(gè)版本。ClickOnce 啟動的應(yīng)用程序從其發(fā)布的 Web 頁執(zhí)行。這使其“感覺”更像 href-exe 在“Start”菜單上沒有添加 href-exe 的快捷方式,應(yīng)用程序也未出現(xiàn)在“Add or Remove Programs”中。然而,雖然對于用戶而言,以這種方式部署的應(yīng)用程序好像是從源 Web 位置運(yùn)行的,但它們實(shí)際上以與 Web 頁緩存相似的方式在本機(jī)上緩存,兩者的目標(biāo)同樣都是降低網(wǎng)絡(luò)流量以提高應(yīng)用程序的性

26、能。這種類型的應(yīng)用程序緩存起初是隨非接觸部署引入的,其中的可執(zhí)行應(yīng)用程序下載到本地計(jì)算機(jī)的程序集下載緩存中。發(fā)布選項(xiàng)“Publish”窗格的“Install Mode And Settings”部分包括 4 個(gè)按鈕控件,用于訪問操作其他發(fā)布屬性的對話框。如果單擊最底端的按鈕“Options”,將打開“Publish Options”對話框,如圖 8-9 所示。圖 8-9 “Publish Options”對話框。發(fā)布語言Publish Language 屬性控制 ClickOnce 應(yīng)用程序安裝過程中顯示的用戶界面項(xiàng)的語言。如果該屬性設(shè)置為 Default,則安裝使用用戶計(jì)算機(jī)上的區(qū)域與語言設(shè)

27、置。如果正在發(fā)布本地化版本的 ClickOnce 應(yīng)用程序,那么將該屬性更改為與應(yīng)用程序本地化設(shè)置相匹配的語言和區(qū)域。開始菜單名稱如上所述,本地安裝的應(yīng)用程序具有 Windows 外殼程序集成,它會出現(xiàn)在“Start”菜單上??梢栽凇癝tart Menu Shortcut Resource Name”文本框中為應(yīng)用程序指定出現(xiàn)在“Start”菜單項(xiàng)中的名稱。如果該屬性保留為空白,ClickOnce 將使用基礎(chǔ)應(yīng)用程序程序集的標(biāo)題。發(fā)布頁當(dāng)發(fā)布第一版的 ClickOnce 應(yīng)用程序時(shí),發(fā)布引擎創(chuàng)建一個(gè)名為 publish.htm. 的 HTML 頁。該頁顯示了 ClickOnce 應(yīng)用程序的名稱

28、、安裝應(yīng)用程序的鏈接、所有先決條件(如果指定)或支持的文檔,以及指向 MSDN ClickOnce 幫助主題的鏈接。作為發(fā)布過程的一部分,該頁與 ClickOnce 應(yīng)用程序文件一起復(fù)制到發(fā)布位置。如果發(fā)布后續(xù)版本的應(yīng)用程序,將不改寫發(fā)布頁面。這意味著在發(fā)布該頁面后,可以利用任何 HTML 編輯器自定義頁面,而無需擔(dān)心以后丟失這些更改?!癙ublish Options”對話框允許更改發(fā)布頁的默認(rèn)名稱 publish.htm。發(fā)布后通過清除“Automatically Open This Page On Publishing”復(fù)選框,還可以禁止在 Web 瀏覽器中打開該頁面。部署策略票證如果計(jì)劃

29、在托管網(wǎng)絡(luò)中部署應(yīng)用程序(例如,如果您是一位在 Intranet 上部署應(yīng)用程序的公司開發(fā)人員),那么可以使用 ClickOnce 進(jìn)行所謂的可信應(yīng)用程序部署,它描述一種用于安全而可靠地部署應(yīng)用程序的模型,要求高級別的信任而不必提示用戶。通過將 ClickOnce 部署策略發(fā)布到將特定應(yīng)用程序發(fā)布者定義為可信任的客戶端,組織內(nèi)的系統(tǒng)管理可以啟用這種類型的部署。(這些發(fā)布者也稱為信任頒發(fā)者。)一旦安裝了這一策略,由這些發(fā)行商之一簽署的任何 ClickOnce 應(yīng)用程序都可以接收更高級別的信任。注可信應(yīng)用程序部署對于非托管網(wǎng)絡(luò)的部署不可行。相反,必須使用“權(quán)限提升”,本章的“ClickOnce 安

30、全性”一節(jié)將對此進(jìn)行詳細(xì)討論。作為應(yīng)用程序開發(fā)人員,需要執(zhí)行下列兩個(gè)基本步驟來利用該安全模型:1.從組織的信任許可證頒發(fā)商處獲得信任許可證文件 (.tlic),并將其添加到您的項(xiàng)目中。2.將 ClickOnce 應(yīng)用程序的 Deployment Policy Ticket 屬性設(shè)置為信任許可證文件。將信任許可證文件添加到項(xiàng)目后,可以使用“Publish Options”對話框選擇 Deployment Policy Ticket 屬性。許可證文件將出現(xiàn)在對話框提供的下拉列表中。注有關(guān)安全策略管理和創(chuàng)建信任許可證的詳細(xì)討論超出了本書的范圍。有關(guān)這些主題的詳細(xì)信息,請參見 MSDN 技術(shù)資源庫中有

31、關(guān) Visual Studio 2005 的內(nèi)容。確定應(yīng)用程序更新需求在部署第 1 版應(yīng)用程序之前,應(yīng)仔細(xì)考慮更新需求,因?yàn)樵诎l(fā)布版本 2 時(shí),您所做的選擇將會起作用。例如,如果將第 1 版的 ClickOnce 應(yīng)用程序配置為應(yīng)用程序運(yùn)行時(shí)在后臺檢查更新,那么,當(dāng)準(zhǔn)備版本 2 的應(yīng)用程序時(shí),決定要在應(yīng)用程序啟動之前檢查更新,則這種更改將直到版本 2 成功安裝后才可應(yīng)用?;蛘咛岢?“我需要用戶始終擁有最新版本的應(yīng)用程序嗎?” 這樣的問題,考慮如何處理通用的更新方案。根據(jù)特定應(yīng)用程序針對此問題的回答,可以選擇一種能夠靈活提供更新的更新策略,或使用一種更加嚴(yán)格的方法,以確保用戶始終擁有最新版本的應(yīng)

32、用程序。默認(rèn)情況下,當(dāng)應(yīng)用程序運(yùn)行時(shí),ClickOnce 應(yīng)用程序在后臺查找更新。如果更新實(shí)際可用,那么下次用戶運(yùn)行該應(yīng)用程序時(shí),將出現(xiàn)一個(gè)提示詢問她是否安裝此更新。這是一個(gè)相當(dāng)靈活的更新方法的示例,因?yàn)樵诎l(fā)現(xiàn)更新后,用戶繼續(xù)使用該應(yīng)用程序??梢詫⑦@種行為更改為在應(yīng)用程序啟動之前檢查更新。在這種情況下,當(dāng)更新可用時(shí),在應(yīng)用程序運(yùn)行之前 將出現(xiàn)更新提示。這種方法仍然允許用戶控制是否安裝更新,但至少在應(yīng)用程序運(yùn)行之前使其有機(jī)會進(jìn)行決策。 配置自動更新選項(xiàng)盡管在某些情況下,提示用戶這一功能運(yùn)行良好,但在強(qiáng)制更新的情況下,會出現(xiàn)其他問題。一個(gè)顯而易見的的例子就是,如果應(yīng)用程序?qū)?shù)據(jù)發(fā)送給服務(wù)器,之后在

33、服務(wù)器端更改了數(shù)據(jù)模型;而過時(shí)的客戶端就有向服務(wù)器發(fā)送錯誤數(shù)據(jù)的風(fēng)險(xiǎn)??梢酝ㄟ^將應(yīng)用程序配置為自動更新來解決這個(gè)問題,如以下步驟所述:1.單擊項(xiàng)目設(shè)計(jì)器“Publish”窗格的“Updates”按鈕。這將打開“Application Updates”對話框,如圖 8-10 所示。2.選中“Application Should Check For Updates”復(fù)選框。3.要選擇應(yīng)用程序應(yīng)該何時(shí)檢查更新,可以選擇“Before The Application Starts”。4.清除“Allow The Users To Choose Whether To Accept The Update”

34、復(fù)選框。圖 8-10 “Applications Updates”對話框。 注請記住,配置應(yīng)用程序更新僅對于本地安裝的 ClickOnce 應(yīng)用程序是必需的。如果將應(yīng)用程序配置為聯(lián)機(jī)啟動,則更新就定義為自動提供(即,其工作方式與 Web 頁更新的方式完全相同)。設(shè)置更新檢查間隔除非為其他配置,否則支持 ClickOnce 的應(yīng)用程序在每次運(yùn)行時(shí)都要檢查更新??梢詫⑦@種行為更改為指定的時(shí)間間隔 例如,每兩周一次。如果應(yīng)用程序不要求用戶立即接收最新的應(yīng)用程序更新,那么這就是一個(gè)明智的選擇。如果還需要實(shí)現(xiàn)用戶啟動的更新以允許用戶檢查應(yīng)用程序本身是否有更新,那么將自動更新檢查設(shè)置為較長的時(shí)間

35、間隔是一種不錯的選擇。(稍后在本章的“演練”一節(jié)中,將看到如何實(shí)現(xiàn)用戶啟動的更新檢查。)考慮帶寬ClickOnce 應(yīng)用程序使用的網(wǎng)絡(luò)連接的質(zhì)量是確定檢查更新策略時(shí)應(yīng)當(dāng)考慮的一個(gè)因素。如果網(wǎng)絡(luò)的帶寬較高,那么在應(yīng)用程序啟動之前檢查更新比較適合。另一方面,如果網(wǎng)絡(luò)很慢,這會導(dǎo)致應(yīng)用程序加載非常慢。在這種情況下(如果用戶能夠接受臨時(shí)使用應(yīng)用程序的過時(shí)版本),一種較好的選擇是在應(yīng)用程序運(yùn)行時(shí)檢查更新,以允許 .NET Framework 在后臺線程中執(zhí)行更新檢查。應(yīng)用程序先決條件在 ClickOnce 應(yīng)用程序運(yùn)行之前,要求在計(jì)算機(jī)上安裝 .NET Framework 的正確版本。另外,和標(biāo)準(zhǔn)的安裝

36、程序一樣,ClickOnce 應(yīng)用程序可能需要其他的軟件組件。例如,如果應(yīng)用程序使用最新版本的 Microsoft 數(shù)據(jù)訪問組件 (MDAC) 或 Microsoft DirectX,那么可以將它們作為單獨(dú)的安裝程序包含在 ClickOnce 部署中,并與 ClickOnce 應(yīng)用程序一起發(fā)布。提供應(yīng)用程序先決條件的單獨(dú)安裝程序通常稱為引導(dǎo)。引導(dǎo)程序具有以下主要功能:它是只安裝目標(biāo)機(jī)上所需組件的輕量級安裝程序。它支持標(biāo)準(zhǔn)安裝 EXE 和 Windows Installer 安裝包(.msi 文件)。它支持自動重新啟動和恢復(fù)??梢院苋菀椎貙⒖芍匦掳l(fā)布的包添加到可用先決條件列表中。引導(dǎo)程序?qū)?Cl

37、ickOnce 和更緊湊的軟件安裝聯(lián)系起來。引導(dǎo)程序在企業(yè)設(shè)置中也是有用的,其中各種不同的應(yīng)用程序共享內(nèi)部構(gòu)建的 .NET 組件,并需要將這些組件安裝在全局程序集緩存 (GAC) 中。因?yàn)?ClickOnce 應(yīng)用程序文件只能安裝到本地應(yīng)用程序緩存,所以發(fā)往 GAC 的程序集必須利用添加到應(yīng)用程序先決條件的 Windows Installer 安裝包(.msi 文件)來安裝。需要牢記的是:引導(dǎo)程序要求 Full Trust 權(quán)限。您的用戶將需要管理權(quán)限來安裝包含在引導(dǎo)程序中的組件,而與 ClickOnce 應(yīng)用程序本身指定的安全級別無關(guān)。要配置哪些安裝組件包括在引導(dǎo)程序中,可以使用“Prere

38、quisites”對話框,它提供一組可用的可重新發(fā)布包。(請參見圖 8-11。)默認(rèn)情況下,Microsoft .NET Framework 2.0 可重新發(fā)行包 (Dotnetfx.exe) 是預(yù)先選擇的。這是一個(gè)引導(dǎo)程序?qū)嵱霉ぞ?,如果它沒有出現(xiàn)在用戶的計(jì)算機(jī)上,則可自動下載并安裝 .NET Framework。對話框允許您選擇從與應(yīng)用程序(默認(rèn)的)相同的位置處下載先決條件,或者指定另一個(gè)下載位置。如果組織使用一組共同的先決條件,并且希望在部署服務(wù)器上保留磁盤空間,此外還要確保每個(gè)應(yīng)用程序接收相同版本的先決條件,那么使用不同的位置是一個(gè)不錯的選擇。注先決條件是可擴(kuò)展的 可以將您自己的 Win

39、dows Installer .msi 文件或其他第三方可重新發(fā)布包添加到引導(dǎo)程序中。有關(guān)詳細(xì)信息,請參閱 MSDN 技術(shù)資源庫中有關(guān) Visual Studio 2005 的文章“How to:Add Your Own Prerequisites to a ClickOnce Application”。圖 8-11 “Prerequisites”對話框。當(dāng)發(fā)布應(yīng)用程序時(shí),先決條件被捆綁到引導(dǎo)程序的安裝程序中。最終的發(fā)布 Web 頁包含用于安裝 ClickOnce 應(yīng)用程序和引導(dǎo)程序的單獨(dú)鏈接。警告先決條件不能使用 ClickOnce 的自動更新功能進(jìn)行更新。只有應(yīng)用程序本身才可進(jìn)行更新。應(yīng)用

40、程序文件發(fā)布一個(gè) ClickOnce 應(yīng)用程序時(shí),項(xiàng)目中的所有文件與應(yīng)用程序一起發(fā)布。在有些情況下,項(xiàng)目可能包含開發(fā)所需的文件,但您不想將它們包含在部署中。在其他情況下,您可能想指定某些文件只能根據(jù)可控條件進(jìn)行安裝,從而使應(yīng)用程序的性能和安裝時(shí)間達(dá)到最佳的程度。使用“Publish”窗格中的“Application Files”對話框,可以排除文件,將文件標(biāo)記為數(shù)據(jù)文件或先決條件,并創(chuàng)建當(dāng)應(yīng)用程序需要時(shí)才下載的文件組。圖 8-12 說明如何使用“Application Files”對話框來對必需的和可選的文件進(jìn)行分組。位于列表頂部的文件 (OnDemand.exe) 確定為應(yīng)用程序的入口點(diǎn),而

41、且是部署所需的組件。應(yīng)用程序圖標(biāo)文件 (App.ico) 也歸類為必需項(xiàng)。但將程序集 OrderListControl.dll 和 OrderLibary.dll 分配到名為“OnDemand”的組。這些文件在應(yīng)用程序清單中將標(biāo)記為可選,并且在首次使用應(yīng)用程序時(shí)不進(jìn)行安裝。注為了安裝標(biāo)記為可選的項(xiàng),必須在 ClickOnce 應(yīng)用程序中包含能夠識別應(yīng)用程序何時(shí)需要可選程序集或其他文件的代碼。然后,代碼必須調(diào)用 System.Deployment.ApplicationDeployment類的 DownloadFiles方法或 DownloadFilesAsync方法來安裝所需的文件。有關(guān)更多信

42、息,請參閱 Visual Studio 2005 文檔中的“Walkthrough:Downloading Assemblies On Demand with the ClickOnce Deployment API”主題。圖 8-12 “Application Files”對話框。首次打開“Application File”對話框時(shí),類型列將所有的文件顯示為應(yīng)用程序文件(.dll 文件除外),這些文件都作為應(yīng)用程序程序集列出。如圖 8-12 所示,可以更改某些文件的類型。對話框下拉列表中可用的類型選項(xiàng)會根據(jù)相關(guān)文件類型的變化而變化。例如,可以將 .dll 文件指定為 Application

43、Assembly 或 Prerequisite。(不能顯式地排除它們。)另一方面,可將文本文件標(biāo)記為 Application File、Data File 或 Excluded?!癆pplication File”對話框的第三列列出應(yīng)用程序的文件組。最初,列出的唯一組是 Required。如果需要標(biāo)識那些應(yīng)當(dāng)包含在部署但只在某些條件下下載(即可選安裝)的文件,那么應(yīng)當(dāng)創(chuàng)建額外的文件組并為它們分配文件。要添加新組,請遵循以下步驟:1.在“Application File”對話框中,選擇希望包含在新組中的文件。2.單擊“Group”字段下的下拉列表并選擇“New”。這會顯示一個(gè)“New Group

44、”對話框。這樣,為您產(chǎn)生一個(gè)新組名,可將“Application File”對話框列表中的其他文件分配到新組。ClickOnce 安全性在還沒有過多考慮將 ClickOnce 用作部署胖客戶端應(yīng)用程序的新方法之前,您可能已經(jīng)開始關(guān)心對于安全性而言,其意味所在。ClickOnce 提供一個(gè)用于完全功能桌面應(yīng)用程序的簡化部署模型。這些應(yīng)用程序可以來自各種不同的源,而且您可能對這些源都有不同程度的信任。(例如,與來自 Internet 的應(yīng)用程序相比,您可能更信任來自 Intranet 的應(yīng)用程序。)實(shí)際上,ClickOnce 的設(shè)計(jì)很適合部署非??煽亢桶踩膽?yīng)用程序。運(yùn)行在沙箱中的 ClickOn

45、ce 應(yīng)用程序默認(rèn)情況下,ClickOnce 應(yīng)用程序在一個(gè)安全的沙箱中執(zhí)行。根據(jù)特定用戶計(jì)算機(jī)上安裝的 .NET 安全策略和 ClickOnce 應(yīng)用程序的安裝或運(yùn)行位置來確定沙箱。表 8-2 列出基于發(fā)布位置的 ClickOnce 應(yīng)用程序的默認(rèn)權(quán)限。表 8-2 發(fā)布位置的安全區(qū)域發(fā)布位置安全區(qū)域從 Internet Web 站點(diǎn)啟動Internet 區(qū)域從 Internet Web 站點(diǎn)安裝Internet 區(qū)域從 Intranet Web 站點(diǎn)安裝Intranet 區(qū)域從網(wǎng)絡(luò)文件共享進(jìn)行安裝Intranet 區(qū)域從 CD-ROM 進(jìn)行安裝全部.NET Framework 中的默認(rèn)安全策

46、略具有很高的限制性。在默認(rèn)的 Internet 區(qū)域下運(yùn)行的應(yīng)用程序只引用了一些限制,例如,不能訪問本機(jī)文件資源,不能連接到數(shù)據(jù)庫,并且不能與外部 Web 資源進(jìn)行通信。事實(shí)上,在部署 ClickOnce 應(yīng)用程序之前,需要確定應(yīng)用程序?yàn)橥瓿晒ぷ餍枰裁礃拥拇a訪問安全性 (CAS) 權(quán)限。然后,在安裝時(shí)需要配置應(yīng)用程序以請求這些權(quán)限。配置 ClickOnce 代碼訪問安全性Visual Studio 2005 IDE 項(xiàng)目設(shè)計(jì)器的“Security”窗格提供一個(gè)配置 ClickOnce 應(yīng)用程序權(quán)限的界面。如果它在 Internet 上部署,它就具有默認(rèn)的 Internet 安全權(quán)限。如果在

47、 Intranet 中部署,它就具有 Local Intranet 權(quán)限。如果通過其他方式部署,它就具有 Full Trust 權(quán)限。正如前一節(jié)描述的,可以使用默認(rèn)的權(quán)限部署 ClickOnce 應(yīng)用程序,在這種情況下,不需要在“Security”窗格中進(jìn)行任何更改。在 Internet 或 Intranet 部署方案中,默認(rèn)的權(quán)限可能太受限制。相反,使用 Full Trust 權(quán)限部署的應(yīng)用程序可以進(jìn)行無限制的系統(tǒng)訪問。但是,不論哪種情況,最佳做法是,應(yīng)用程序應(yīng)當(dāng)只包含它實(shí)際運(yùn)行所需的權(quán)限。為了幫助您實(shí)現(xiàn)這個(gè)目標(biāo),“Security”窗格提供一個(gè)自定義 ClickOnce 安全設(shè)置的界面,如

48、圖 8-13 所示。圖 8-13 項(xiàng)目設(shè)計(jì)器的“Security”窗格。在開始為 ClickOnce 自定義安全設(shè)置之前,需要選中“Enable ClickOnce Security Settings”復(fù)選框。這會激活“Security”窗格中一組與安全相關(guān)的控件。通過選擇四個(gè)應(yīng)用程序安裝區(qū)域之一,開始自定義過程:Local Computer (Full Trust)、Local Intranet、Internet 和 Custom。因?yàn)樽远x安全設(shè)置的目標(biāo)是定義運(yùn)行應(yīng)用程序所需的最低權(quán)限,所以可以選擇與應(yīng)用程序所需權(quán)限最匹配的區(qū)域,并將該區(qū)域作為權(quán)限集的起點(diǎn)。然后,在“Security”窗格

49、中提供的權(quán)限表中,通過啟用或禁用所需的單個(gè)權(quán)限來進(jìn)一步更改權(quán)限集。要更改表中某個(gè)特定的權(quán)限,可以滾動到其中列出該權(quán)限的行。Setting 列包含一個(gè)下拉列表,并有三個(gè)選項(xiàng):Include、Exclude 和 Zone Default。選擇 Include 可以添加權(quán)限,選擇 Exclude 可以移除權(quán)限。選擇 Zone Default 可以將權(quán)限重新設(shè)置為所選區(qū)域的默認(rèn)狀態(tài)。圖 8-14 闡釋手動配置權(quán)限的示例。雖然包含 FileIOPermission,但FileDialogPermission 的設(shè)置已經(jīng)顯式地從權(quán)限集中排除。請注意,信息圖標(biāo)出現(xiàn)在 Included 列,該圖標(biāo)指示 Fil

50、eIOPermission 所需的信任級別比所選安全區(qū)域(在本例中為 Local Intranet)提供的信任級別高。圖 8-14權(quán)限設(shè)置對話框。如果在所選擇的區(qū)域中加入一個(gè)默認(rèn)情況下不包含的權(quán)限,那么在權(quán)限行中就會出現(xiàn)一個(gè)信息圖標(biāo)。這指示應(yīng)用程序需要提高權(quán)限,以在所選擇的區(qū)域中運(yùn)行??梢酝ㄟ^更改單個(gè)權(quán)限的特定屬性來進(jìn)一步更改它們。這允許為特定的文件或目錄、注冊表項(xiàng)或單個(gè) Web 站點(diǎn)定義權(quán)限,這里列舉幾個(gè)示例。為了舉例說明,圖 8-15 顯示 FileIOPermission 的屬性頁。該窗口顯示的可用屬性將根據(jù)基本權(quán)限的不同而有所不同。例如,對于 FileIOPermission 的情況,

51、可以利用網(wǎng)格中提供的復(fù)選框來指定哪些文件或文件夾需要文件訪問,并進(jìn)一步定義讀、寫、追加或路徑發(fā)現(xiàn)所需的訪問類型。要請求對文件系統(tǒng)的不受限訪問,請選擇“Grant assemblies unrestricted access to the file system”單選按鈕。圖 8-15為 FileIOPermission 定義屬性。如果準(zhǔn)確知道應(yīng)用程序所需的權(quán)限,那么手動修改安全權(quán)限就可以了。評估應(yīng)用程序的安全需求絕對應(yīng)該是項(xiàng)目開發(fā)生命周期的一個(gè)必不可少的組成部分,因此應(yīng)當(dāng)了解需要配置什么樣的權(quán)限。但是,由于許多原因,這并不總是最好的方法。您可能不能確定應(yīng)用程序所需的權(quán)限,或某種特定的權(quán)限如何影

52、響應(yīng)用程序的行為。在不確定的情況下,您請求的權(quán)限很可能高于所需的權(quán)限,這違背了確保應(yīng)用程序只擁有運(yùn)行所需權(quán)限的基本目標(biāo)。幸運(yùn)的是,Visual Studio 2005 IDE 包含兩個(gè)附加工具 權(quán)限計(jì)算器以及允許使用已配置的安全設(shè)置調(diào)試應(yīng)用程序的工具,這可幫助您準(zhǔn)確地確定 ClickOnce 應(yīng)用程序的安全需求。權(quán)限計(jì)算器權(quán)限計(jì)算器可以從項(xiàng)目設(shè)計(jì)器的“Security”窗格中獲得。如果沒有確定應(yīng)用程序的代碼訪問安全需求,則可以使用“權(quán)限計(jì)算器”工具來靜態(tài)分析項(xiàng)目中的代碼。分析完成后,該工具自動將項(xiàng)目的 ClickOnce 安全權(quán)限更新為一組自定義權(quán)限。警告因?yàn)闄?quán)限計(jì)算器對代碼進(jìn)行靜態(tài)分析,所以

53、在有些情況下,該工具可能不是百分之百的準(zhǔn)確。例如,如果應(yīng)用程序需要動態(tài)文件系統(tǒng)訪問,那么就需要手動配置這種權(quán)限。在安全區(qū)域中進(jìn)行調(diào)試作為權(quán)限計(jì)算器的配套工具,可以利用當(dāng)前定義的 ClickOnce 安全設(shè)置在調(diào)試器中運(yùn)行應(yīng)用程序。這種方法允許您使用部署應(yīng)用程序時(shí)授予的確切權(quán)限來測試應(yīng)用程序?;仡櫛菊虑懊鎸Ψ墙佑|部署局限性的討論,其中開發(fā)人員在一個(gè)具有完全信任的環(huán)境中構(gòu)建和調(diào)試應(yīng)用程序,然后在 Internet 或 Intranet 上部署這些應(yīng)用程序時(shí),讓它們引發(fā)安全異常。使用當(dāng)前定義的 ClickOnce 安全設(shè)置在調(diào)試器中運(yùn)行應(yīng)用程序,這使您在實(shí)際部署應(yīng)用程序時(shí),完全不必猜測它是否具有足夠

54、的權(quán)限。要配置項(xiàng)目以在沙箱中進(jìn)行調(diào)試,請單擊“Security”窗格上的“Advanced”按鈕,顯示配置應(yīng)用程序的對話框,從而在當(dāng)前選擇的 ClickOnce 安全設(shè)置下運(yùn)行。還可以指定下載 ClickOnce 應(yīng)用程序的 URL。圖 8-16 顯示了帶有典型配置的“Advanced Security Settings”對話框?!癉ebug This Application With The Selected Permission Set”復(fù)選框被選中。在文本框中輸入的 URL 值將確定在調(diào)試器中執(zhí)行應(yīng)用程序時(shí)為其授予的信任級別。圖 8-16 在沙箱中啟用調(diào)試。一旦將應(yīng)用程序配置為在沙箱中調(diào)

55、試,就只需在調(diào)試器中運(yùn)行應(yīng)用程序,并運(yùn)用其功能。如果您嘗試執(zhí)行的應(yīng)用程序在所選安全區(qū)域中沒有所需的權(quán)限,那么就會像實(shí)際部署應(yīng)用程序那樣顯示一個(gè)運(yùn)行時(shí)安全錯誤。提升權(quán)限現(xiàn)在考慮為 ClickOnce 應(yīng)用程序建立安全設(shè)置后執(zhí)行的操作。當(dāng)發(fā)布 ClickOnce 應(yīng)用程序時(shí),將在項(xiàng)目設(shè)計(jì)器的“Security”窗格中定義的權(quán)限寫入應(yīng)用程序清單的 trustInfo 元素中。當(dāng)用戶啟動或安裝應(yīng)用程序時(shí),ClickOnce 子系統(tǒng)從應(yīng)用程序清單中讀取請求的權(quán)限,并通知用戶他們是否超越了默認(rèn)安全區(qū)域提供的權(quán)限。例如,如果在 Internet 上部署了一個(gè)需要本地文件系統(tǒng)訪問的 ClickOnce 應(yīng)用程

56、序,并且通過將應(yīng)用程序配置為要求最低權(quán)限集而遵循了良好的安全實(shí)踐,那么當(dāng)用戶從其發(fā)布位置安裝應(yīng)用程序時(shí),系統(tǒng)將出現(xiàn)一個(gè)提示,聲明應(yīng)用程序要求比 Internet 區(qū)域更高的信任級別。圖 8-17 顯示了當(dāng)用戶嘗試安裝要求更高信任級別的 ClickOnce 應(yīng)用程序時(shí)出現(xiàn)的安全警告消息。消息窗口底部的消息警告:應(yīng)用程序要求對計(jì)算機(jī)進(jìn)行可能不安全的訪問。圖 8-17 應(yīng)用程序安裝安全警告。改進(jìn)的安全策略模型正如在“部署策略票證”一節(jié)中所描述的,對于在托管網(wǎng)絡(luò)中使用 ClickOnce 部署的組織而言,Visual Studio 2005 引入了一種新的安全策略模型,網(wǎng)絡(luò)管理員可以通過它為分布在整個(gè)

57、企業(yè)中的應(yīng)用程序建立部署機(jī)構(gòu)。這要求在本地系統(tǒng)上只一次性安裝策略票證,為由策略標(biāo)識的實(shí)體授予分配 ClickOnce 應(yīng)用程序的特殊權(quán)限。對于安裝了這種策略的計(jì)算機(jī),系統(tǒng)會自動授予其升高的權(quán)限,而不會對用戶進(jìn)行提示。Authenticode 簽名最后,安全策略也可以根據(jù) ClickOnce 應(yīng)用程序的發(fā)布者授予權(quán)限。數(shù)字證書提供有關(guān)軟件發(fā)布者的信息,這些信息經(jīng)過可信的第三方進(jìn)行驗(yàn)證。對于商業(yè)軟件的發(fā)行,您可能會從諸如 Thawte 或 VeriSign 這樣的公司獲得一個(gè)證書。您可以使用數(shù)字證書來簽署部署清單。.NET Framework SDK 包含一個(gè)稱為 SignCode.exe 的文件

58、簽名工具。Windows Installer 增強(qiáng)功能Microsoft Windows Installer 是一種安裝和配置服務(wù),它是作為 Windows Server 2003、Windows 2000 和 Windows XP 的一部分提供的。到撰寫本文時(shí)為止,大多數(shù)系統(tǒng)都使用 Windows Installer 2.0 版(包括 Windows 9x 和 Windows NT 4.0,其中 Windows Installer 可以作為單獨(dú)下載進(jìn)行安裝)。Visual Studio 2005 將支持 Windows Installer 3.0 版,在下面的幾節(jié)中,我們將介紹該版本中提供的一些增強(qiáng)功能。警告雖然可以在 Windows 9x 和 Windows NT 4.0 中使用 Windows Installer 2.0 版,但在這些舊的操作系統(tǒng)上不能使用 Windows Installer 3.0 版。早期的安裝程序類型使用一種過程式模型,提供應(yīng)用程序安裝的腳本指令。安裝包文件(其擴(kuò)展名為 .msi)使用結(jié)構(gòu)化的存儲來組織資

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論