偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在虛擬環(huán)境中使應(yīng)用程序與Windows 7兼容

原創(chuàng)
云計(jì)算 虛擬化
完全支持 Windows 7 的 Microsoft Application Virtualization (App-V) 4.6 即將發(fā)布;很多計(jì)劃部署 Windows 7 的客戶都將 App-V 納入為他們的桌面轉(zhuǎn)換項(xiàng)目的組件。(操作系統(tǒng)部署常常會(huì)使“最新桌面”或“下一代桌面”計(jì)劃中的應(yīng)用程序和基礎(chǔ)結(jié)構(gòu)發(fā)生重大改變。)

完全支持 Windows 7 的 Microsoft Application Virtualization (App-V) 4.6 即將發(fā)布;很多計(jì)劃部署 Windows 7 的客戶都將 App-V 納入為他們的桌面轉(zhuǎn)換項(xiàng)目的組件。(操作系統(tǒng)部署常常會(huì)使“最新桌面”或“下一代桌面”計(jì)劃中的應(yīng)用程序和基礎(chǔ)結(jié)構(gòu)發(fā)生重大改變。)

當(dāng) IT 專業(yè)人員考慮同時(shí)對(duì) App-V 和 Windows 7 進(jìn)行投資時(shí),幾乎總會(huì)提出以下問題:

◇ 聽說 App-V 是一個(gè)應(yīng)用程序兼容性解決方案。這是否意味著它可以幫助我的應(yīng)用程序與 Windows 7 兼容?

◇ 我是否需要對(duì)已為當(dāng)前的 Windows XP 桌面創(chuàng)建的 App-V 程序包重新排序?

◇ 將 App-V 用作部署解決方案時(shí),我該怎么做才能解決不兼容應(yīng)用程序問題?

下面開始逐個(gè)探討這些問題。

Microsoft App-V 是不是應(yīng)用程序兼容性解決方案?

Microsoft App-V 首先是應(yīng)用程序管理和部署解決方案,它可為企業(yè)帶來明顯好處:降低打包成本,提高系統(tǒng)穩(wěn)定性,通過動(dòng)態(tài)訪問軟件資產(chǎn)為現(xiàn)在移動(dòng)性很高的工作人員提供支持。但是,在營(yíng)銷宣傳中,人們過多使用了應(yīng)用程序兼容性這個(gè)術(shù)語(yǔ),隨著時(shí)間的推移,該術(shù)語(yǔ)已被曲解為:App-V 可幫助解決應(yīng)用程序與操作系統(tǒng)之間的兼容性問題。大多數(shù)情況下,它是無(wú)法解決這些問題的。(現(xiàn)在的例外情況主要是歷史原因造成的,不應(yīng)夸大它的作用,因此,我在此不進(jìn)行詳細(xì)介紹。)

對(duì)于客戶因此產(chǎn)生的混淆,我們?cè)诖朕o上進(jìn)行了一定的澄清;我們現(xiàn)在已不使用“應(yīng)用程序兼容性”這個(gè)術(shù)語(yǔ),而是直接談及基本優(yōu)點(diǎn):可以減少應(yīng)用程序之間的沖突(請(qǐng)注意,我們有意避開了“兼容性”這個(gè)詞),因此,可以顯著減少回歸測(cè)試。

產(chǎn)品團(tuán)隊(duì)對(duì)應(yīng)用程序與操作系統(tǒng)兼容性的官方觀點(diǎn)如下:

從以前的討論可知,App-V 不是通用的應(yīng)用程序與操作系統(tǒng)兼容性解決方案;不過,如果應(yīng)用程序兼容性填充程序允許某個(gè)應(yīng)用程序以本機(jī)方式(非虛擬化)在給定 Windows 版本上運(yùn)行,則在大多數(shù)情況下,對(duì)于大多數(shù)填充程序而言,該應(yīng)用程序?qū)⒃趯?duì)填充的應(yīng)用程序虛擬化之后與 App-V 一起運(yùn)行。因此,一般而言,只要填充的應(yīng)用程序能夠以本機(jī)方式在目標(biāo)操作系統(tǒng)版本上運(yùn)行,App-V 就支持應(yīng)用程序使用填充程序(這些填充程序是作為 Microsoft 的應(yīng)用程序兼容性工具的組成部分提供的)。

因此,很顯然,App-V 無(wú)意作為應(yīng)用程序與操作系統(tǒng)兼容性解決方案。(我們將在本文后面部分討論如何將填充程序與 App-V 結(jié)合起來。)讓我們看一看應(yīng)用程序虛擬化對(duì)操作系統(tǒng)兼容性產(chǎn)生的其他影響。

#p#

Microsoft App-V 是不是程序包兼容性解決方案?

當(dāng)我們談及應(yīng)用程序兼容性時(shí),自然要將程序包兼容性與運(yùn)行時(shí)兼容性區(qū)分開。事實(shí)上,我們所建議的應(yīng)用程序兼容性測(cè)試過程(如我在 2009 年 6 月的規(guī)劃您的應(yīng)用程序兼容性項(xiàng)目文章中的圖 3 所示)將安裝測(cè)試與運(yùn)行時(shí)測(cè)試區(qū)分開。讓我們從產(chǎn)品團(tuán)隊(duì)官方指南開始:

通常,可以在一個(gè)操作系統(tǒng)上排序,然后在另一個(gè)操作系統(tǒng)上運(yùn)行虛擬化應(yīng)用程序;但是,這種方案既取決于應(yīng)用程序,也取決于操作系統(tǒng),未必適用于所有應(yīng)用程序/操作系統(tǒng)組合,因?yàn)?App-V 不是通用的操作系統(tǒng)兼容性解決方案。如果遇到問題,客戶可能需要在運(yùn)行 App-V 客戶端的操作系統(tǒng)環(huán)境中進(jìn)行排序,以便解決這些問題。

這聽起來并不怎么樣,官方觀點(diǎn)基本上是“視情況而定”。但是,當(dāng)您要考慮衡量風(fēng)險(xiǎn)時(shí),請(qǐng)比較現(xiàn)在所使用的三種基本安裝技術(shù):

Setup.exe:這種方式將運(yùn)行任意代碼,從而該任意代碼將與應(yīng)用程序本身的任意代碼面臨相同的潛在運(yùn)行時(shí)問題,因此必須徹底進(jìn)行測(cè)試。

Windows Installer:這種方式也運(yùn)行代碼來執(zhí)行安裝,但所運(yùn)行的代碼大部分是結(jié)構(gòu)化的聲明代碼。只有自定義操作的命令性代碼是任意的,因此,除了規(guī)則中的可量化變化之外(這些規(guī)則會(huì)影響針對(duì)數(shù)據(jù)庫(kù)運(yùn)行的代碼以及自定義操作中的任意代碼的處理),有望獲得更好(不過仍不完美)的兼容性,需要的測(cè)試也會(huì)更少。

Microsoft App-V:這種方法根本不必運(yùn)行代碼。它只是在一個(gè)作為虛擬文件系統(tǒng)的數(shù)據(jù) Blob 上進(jìn)行復(fù)制,然后說“好的,您的虛擬文件系統(tǒng)在這里。”這樣,您主要關(guān)注的問題不是應(yīng)用程序是否會(huì)安裝(復(fù)制一個(gè)數(shù)據(jù) Blob 畢竟真的很容易),而是應(yīng)用程序的運(yùn)行時(shí)兼容性。因此,在所有三種技術(shù)中,這種方式的安裝測(cè)試是最短的。那真是太好了!

因此,盡管沒有官方說法表示程序包會(huì)全部正常運(yùn)行,但這種信息流傳開來的主要原因似乎是,很多人都將安裝問題與運(yùn)行時(shí)問題混為一談。一般而言,如果投資于 Microsoft App-V,就有望大大降低應(yīng)用程序安裝測(cè)試的預(yù)計(jì)成本。

#p#

應(yīng)用程序與 Microsoft App-V 一起打包時(shí),如何解決運(yùn)行時(shí)兼容性問題?

還記得支持聲明中誘人的說法嗎?“App-V 將支持應(yīng)用程序使用填充程序(這些填充程序是作為 Microsoft 的應(yīng)用程序兼容性工具的組成部分提供的)....”實(shí)際上如何去實(shí)現(xiàn)這一點(diǎn)?這兩種程序是否基本上兼容?

令人高興的是,答案是肯定的。事實(shí)上,可以通過幾種不同的方式做到這一點(diǎn)。

填充程序簡(jiǎn)要介紹

對(duì)于不熟悉填充程序的人來說,填充程序是 Microsoft 很少使用的四字母單詞之一,它不是某種縮寫詞。它以英語(yǔ)單詞“shim”(墊片)進(jìn)行比喻,這是一個(gè)工程術(shù)語(yǔ),用于描述插在兩個(gè)物體之間,使它們更好地配合在一起的木片或金屬片。在我們的特定環(huán)境下,兩個(gè)物體就是應(yīng)用程序和 Windows,而墊片材料是使兩者更好地一起發(fā)揮作用的附加代碼,如圖 1 和 2 所示。
 

 

圖 1 應(yīng)用填充程序之前,應(yīng)用程序與 Windows 直接交互。

 

圖 2 應(yīng)用填充程序之后,應(yīng)用程序與 Windows 間接交互;填充程序代碼注入后,它可以修改向 Windows 發(fā)出的請(qǐng)求和/或來自 Windows 的響應(yīng)。

填充程序的作用是通過 API 偵聽實(shí)現(xiàn)的。Windows API 是使用 DLL 集合實(shí)現(xiàn)的。每個(gè)針對(duì) Windows 構(gòu)建的應(yīng)用程序都導(dǎo)入這些 DLL,并在內(nèi)存中維護(hù)一個(gè)由所有這些功能的地址構(gòu)成的表。因?yàn)?Windows 功能的地址位于一個(gè)表中,所以,填充程序引擎直接用填充程序 DLL 的地址替換該地址。應(yīng)用程序通常不知道要將請(qǐng)求發(fā)送到填充程序 DLL 而不是發(fā)送到 Windows 本身,Windows 也不知道請(qǐng)求是來自應(yīng)用程序以外的源(因?yàn)樘畛涑绦?DLL 只不過是應(yīng)用程序進(jìn)程內(nèi)的另一個(gè) DLL)。

例如,一個(gè)十分常用的填充程序是版本欺騙填充程序。為了實(shí)現(xiàn)此填充程序,將偵聽?zhēng)讉€(gè)用于確定運(yùn)行應(yīng)用程序的 Windows 版本的 API。通常,這種信息將傳遞給 Windows 本身,后者會(huì)如實(shí)應(yīng)答。但在應(yīng)用填充程序之后,這些 API 將被偵聽。這樣,將返回一個(gè)不同的 Windows 版本(例如,Windows XP 而不是 Windows 7),而不是將請(qǐng)求傳遞給 Windows。如果應(yīng)用程序編寫為只在 Windows XP 上運(yùn)行,這樣可以騙過應(yīng)用程序,使它認(rèn)為自己正在正確的操作系統(tǒng)上運(yùn)行。(通常,這樣就可以解決應(yīng)用程序兼容性問題?。?/p>

使用填充程序,可以采用很多技巧。例如, 

◇ ForceAdminAccess 填充程序嘗試使應(yīng)用程序確信當(dāng)前用戶是本地管理員組的成員,即使他并不是該組成員。(如果您不是本地管理員,很多應(yīng)用程序會(huì)徹底失敗,不過,您可以使用其他一些技巧(如 UAC 文件和注冊(cè)表虛擬化)來解決初始檢查所引起的問題。)實(shí)現(xiàn)這種檢查的方法可以非常簡(jiǎn)單。例如,此填充程序從 shell32.dll 偵聽 API IsUserAnAdmin。所填充的功能的完整源代碼(與實(shí)際 API 相比,具有極好的性能特性)只返回 TRUE。

◇ WrpMitigation 填充程序使應(yīng)用程序安裝程序相信,它們可以寫入受 Windows 資源保護(hù) (WRP) 功能保護(hù)的文件。如果嘗試寫入受保護(hù)的文件,該填充程序首先創(chuàng)建一個(gè)新的臨時(shí)文件,一旦句柄關(guān)閉就將其標(biāo)記為已刪除,然后將句柄返回到該臨時(shí)文件,就好像它是實(shí)際受保護(hù)的文件。應(yīng)用程序?qū)⑴f版本 kernel32.dll 或 shell32.dll(或者在將其打包時(shí)它所選擇的任何其他文件)安裝到臨時(shí)文件中,但隨后該臨時(shí)文件消失,受保護(hù)文件的經(jīng)過修補(bǔ)的最新匹配版本保留在文件系統(tǒng)中。這樣,WRP 仍可確保您不會(huì)在自己的計(jì)算機(jī)上最終得到來自 Windows 95 的舊版本 shell32.dll,但在使用此填充程序時(shí),安裝程序不會(huì)因 ACCESS_DENIED 而失敗。

◇ CorrectFilePaths 填充程序可將文件從一個(gè)位置重定向到另一個(gè)位置。因此,如果應(yīng)用程序嘗試寫入 c:\myprogramdir(不會(huì)使用 UAC 文件和注冊(cè)表虛擬化對(duì)它進(jìn)行自動(dòng)修復(fù)),則可以將在運(yùn)行時(shí)修改的文件重定向到基于每個(gè)用戶的位置。這樣,您可以以標(biāo)準(zhǔn)用戶的身份運(yùn)行而不必放寬訪問控制列表 (ACL) 限制,因?yàn)槟?,安全人員不愿意放寬 ACL。

◇ 有數(shù)百個(gè)通用填充程序可用來解決應(yīng)用程序兼容性問題,利用這些修補(bǔ)程序可節(jié)省大量的成本。例如,客戶常常在以下情況下使用填充程序:

◇ 供應(yīng)商已停止經(jīng)營(yíng),因此無(wú)法獲得更新版本。如果您無(wú)法承擔(dān)從新供應(yīng)商處獲得另外的應(yīng)用程序或自己構(gòu)建新版本的費(fèi)用,這樣可以為您爭(zhēng)取一些時(shí)間。

◇ 應(yīng)用程序不是十分重要,不值得投資于更新版本(伴隨著支持聲明),但您的用戶樂于使用它,所以您不介意他們是否運(yùn)行不受支持的版本。

◇ 應(yīng)用程序是內(nèi)部開發(fā)的,但您不想非要等到團(tuán)隊(duì)發(fā)布完全更新的版本。相反,您愿意采用臨時(shí)性修補(bǔ)程序,允許開發(fā)團(tuán)隊(duì)在應(yīng)用程序的下一次計(jì)劃發(fā)布時(shí)發(fā)布永久性修補(bǔ)程序。通過這種方法,就不再需要停止所有應(yīng)用程序開發(fā)活動(dòng),可以投入時(shí)間和資源來修復(fù)兼容性 Bug。您可以使用臨時(shí)性修補(bǔ)程序,并允許團(tuán)隊(duì)發(fā)布包含開發(fā)過程中已實(shí)現(xiàn)的新功能的修補(bǔ)程序。

利用填充程序解決應(yīng)用程序兼容性問題,可以顯著節(jié)省成本,大大加速 Windows 7 的部署。

#p#

在企業(yè)環(huán)境中管理填充程序的方法

在我于 2007 年 11 月發(fā)表的在企業(yè)環(huán)境中管理填充程序白皮書中,概括了在決定如何在組織中將填充程序作為應(yīng)用程序兼容性解決方案進(jìn)行管理時(shí),大多數(shù)人會(huì)選擇的兩種主要方式。簡(jiǎn)單地說,它們是:

集中管理的單個(gè)填充程序數(shù)據(jù)庫(kù) 通過這種方式,可以部署集中管理的單個(gè)填充程序數(shù)據(jù)庫(kù),這種數(shù)據(jù)庫(kù)包含所有需要使用填充程序的應(yīng)用程序的條目。這之后,發(fā)現(xiàn)其他應(yīng)用程序需要使用修補(bǔ)程序時(shí),可向中央數(shù)據(jù)庫(kù)推出更新。這就是 Microsoft 所使用的方法。在發(fā)布 Windows 7 時(shí),我們提供了一個(gè)系統(tǒng)填充程序數(shù)據(jù)庫(kù),它可以對(duì)數(shù)千個(gè)應(yīng)用程序進(jìn)行修復(fù),在我們發(fā)現(xiàn)其他需要修復(fù)的應(yīng)用程序時(shí),則通過 Windows Update 向該數(shù)據(jù)庫(kù)發(fā)布更新。您也可以這樣做:將一個(gè)填充數(shù)據(jù)庫(kù)放到主映像中,通過系統(tǒng)管理軟件(如 System Center Configuration Manager)進(jìn)行更新。

基于每個(gè)應(yīng)用程序的填充程序數(shù)據(jù)庫(kù) 另外,您也可以直接向應(yīng)用程序部署應(yīng)用程序修補(bǔ)程序。如果只有一兩個(gè)應(yīng)用程序需要修補(bǔ)程序,某些客戶會(huì)選擇這種方式,因?yàn)樵谛⌒铜h(huán)境中,與設(shè)置一個(gè)用于管理中央數(shù)據(jù)庫(kù)的進(jìn)程相比,這種方式成本更低?;诿總€(gè)應(yīng)用程序的填充程序數(shù)據(jù)庫(kù)的一個(gè)明顯缺點(diǎn)是,如果存在問題,更新填充程序數(shù)據(jù)庫(kù)將會(huì)很困難。不過,App-V 沒有這個(gè)缺點(diǎn),現(xiàn)在,您可以對(duì)基于每個(gè)應(yīng)用程序的數(shù)據(jù)庫(kù)進(jìn)行更新,然后將更新后的版本傳送給用戶。(不過,您將會(huì)看到,這引入了另外一個(gè)更加明顯的缺點(diǎn)。)

Microsoft App-V 的軟件部署方法拓寬了在企業(yè)范圍內(nèi)部署應(yīng)用程序修補(bǔ)程序的選擇,您可以選擇一種最適合組織中現(xiàn)有進(jìn)程模型的方法。

#p#

使用集中管理的單個(gè)填充程序數(shù)據(jù)庫(kù)來填充 App-V 應(yīng)用程序

從策略角度看,要部署集中管理的單個(gè)填充程序數(shù)據(jù)庫(kù)并由使用 App-V 進(jìn)行排序的應(yīng)用程序選擇該數(shù)據(jù)庫(kù),您必須做什么?很簡(jiǎn)單,按常規(guī)方法安裝即可!使用 App-V 安裝的應(yīng)用程序的啟動(dòng)方式與應(yīng)用程序的常規(guī)啟動(dòng)方式大致相同,這種應(yīng)用程序使用應(yīng)用了填充程序的加載程序機(jī)制。它們只是通過代理進(jìn)程來啟動(dòng)。具體地說,sfttray.exe(而不是資源管理器)負(fù)責(zé)啟動(dòng)新的進(jìn)程。因此,進(jìn)程樹如圖 3 所示。
 

圖 3 代理進(jìn)程樹

應(yīng)用程序啟動(dòng)時(shí),它像任何其他應(yīng)用程序一樣運(yùn)行加載程序。Microsoft Application Virtualization 客戶端接口層 (sftintf.dll) 調(diào)用 CreateProcessW,后者調(diào)用內(nèi)部的 API CreateProcessInternalW。填充程序引擎是在 CreateProcessInternalW API 中調(diào)用的,填充程序與該進(jìn)程綁定。

那么,這就相當(dāng)容易了。還有什么問題嗎?是的,有一個(gè)。它不能很好地處理提升。例如,您不能簡(jiǎn)單地要求對(duì)某個(gè)應(yīng)用程序進(jìn)行提升(使用 RunAsAdmin 填充程序),也不能對(duì)需要使用 ElevateCreateProcess 進(jìn)行提升的應(yīng)用程序的問題進(jìn)行修復(fù)。為什么呢?原因是氣泡圖。

例如,我們來看一個(gè)嘗試自行啟動(dòng)一次自動(dòng)更新的應(yīng)用程序(遺憾的是,這是一個(gè)十分常見的任務(wù))。在以本機(jī)方式運(yùn)行時(shí),它產(chǎn)生了一個(gè)問題,即它使用了無(wú)法調(diào)用提升的 CreateProcess API。它隨后返回錯(cuò)誤 -1073740756 – STATUS_ELEVATION_REQUIRED。ElevateCreateProcess 填充程序捕獲這個(gè)返回值,然后調(diào)用應(yīng)用程序信息服務(wù)來提供提升。但該服務(wù)無(wú)法找到要提升的應(yīng)用程序,因?yàn)樵摲?wù)位于氣泡圖之外!

因此,只要應(yīng)用程序不需要提升,在已創(chuàng)建一個(gè)進(jìn)程的情況下,部署單個(gè)填充程序數(shù)據(jù)庫(kù)解決方案就十分容易,您只需繼續(xù)做相同的事情。

#p# 

使用基于每個(gè)應(yīng)用程序的填充程序數(shù)據(jù)庫(kù)來填充App-V 應(yīng)用程序

通過部署填充程序來解決應(yīng)用程序兼容性問題的另一種方法是隨應(yīng)用程序部署填充程序。在 MSI 環(huán)境中,通常將 .sdb 文件包括在安裝程序中,然后加入一個(gè)自定義操作,該自定義操作針對(duì)它所放置的 .sdb 文件調(diào)用 sdbinst。這樣,會(huì)將自定義填充程序數(shù)據(jù)庫(kù)作為安裝程序的一部分來安裝。(如果您隨后需要對(duì)該應(yīng)用程序的填充程序進(jìn)行更新,則需要找到所有已安裝的客戶端,并運(yùn)行一個(gè)腳本來安裝更新,這會(huì)使事情變得有些復(fù)雜。)

您可以使用 App-V 完成幾乎相同的工作。您可將填充程序數(shù)據(jù)庫(kù) (.sdb) 文件包括在序列本身之中,這樣 .sdb 文件就位于氣泡圖內(nèi)。首先,對(duì)需要使用填充程序的應(yīng)用程序進(jìn)行排序,以便其正常運(yùn)行。然后,將自定義填充程序數(shù)據(jù)庫(kù)放入 system32 中。

(盡管我通常會(huì)建議人們絕不要將任何內(nèi)容放到 system32 中,除非您的工資單是由 Steve Ballmer 簽發(fā)的,并且您的上級(jí)包括 Steven Sinofsky;在這種特定情況下,我才會(huì)選擇這樣做,因?yàn)檫@樣可簡(jiǎn)化腳本編寫,system32 將在您的路徑中,并且不會(huì)在生產(chǎn)系統(tǒng)的 system32 中實(shí)際留下任何內(nèi)容,就像是在虛擬文件系統(tǒng)的 system32 中那樣)。

做完這項(xiàng)工作后,我將編輯 .sprj 文件。我瀏覽到“虛擬文件系統(tǒng)”選項(xiàng)卡,然后單擊“視圖”|“虛擬文件系統(tǒng)”|“添加”。然后,我瀏覽到放置 .sdb 文件的位置 (c:\windows\system32\appshim.sdb),并單擊“確定”。此時(shí),該 .sdb 文件將位于氣泡圖內(nèi),并在安裝 softgrid 軟件包時(shí)進(jìn)行安裝。因?yàn)樵撐募侨萜鞯囊徊糠郑运鼘⒆鳛閼?yīng)用程序的一部分進(jìn)行傳送(可在更新應(yīng)用程序時(shí)進(jìn)行更新)。

當(dāng)然,要使用應(yīng)用程序修補(bǔ)程序,只是將 .sdb 文件放到文件系統(tǒng)中還不夠,還必須安裝這些修補(bǔ)程序。不過,填充程序數(shù)據(jù)庫(kù)必須安裝在 App-V 氣泡圖的外面。如果將填充程序數(shù)據(jù)庫(kù)安裝在氣泡圖內(nèi),則在創(chuàng)建進(jìn)程之前,不會(huì)發(fā)現(xiàn)虛擬化的 .sdb 文件;創(chuàng)建進(jìn)程之后,填充程序找到該文件并針對(duì)它進(jìn)行操作已經(jīng)太晚。您需要使填充程序數(shù)據(jù)庫(kù)在創(chuàng)建進(jìn)程時(shí)能夠被氣泡圖外面的加載程序訪問。

令人高興的是,App-V 包含一個(gè)將腳本作為應(yīng)用程序啟動(dòng)進(jìn)程的一部分來運(yùn)行的機(jī)制。如果您使用最喜歡的文本編輯器來查看應(yīng)用程序的 OSD 文件,就會(huì)發(fā)現(xiàn)只能對(duì) XML 進(jìn)行編輯。<SOFTPGK> 元素包含一個(gè) <IMPLEMENTATION> 元素、一個(gè) <DEPENDENCY> 元素、一個(gè) <PACKAGE> 元素、一個(gè) <ABSTRACT> 元素、一個(gè) <MGMT_SHORTCUTLIST> 元素和一個(gè) <MGMT_FILEASSOCIATIONS> 元素。<DEPENDENCY> 元素是您需要編輯的元素,您將添加子 <SCRIPT> 元素,以便安裝自定義填充程序數(shù)據(jù)庫(kù)。下面是一個(gè)腳本示例,該腳本可在應(yīng)用程序啟動(dòng)時(shí)安裝自定義填充程序數(shù)據(jù)庫(kù),并在應(yīng)用程序退出時(shí)將其刪除(因此,這是一種可清理其身后內(nèi)容的 JIT 安裝,是 App-V 的一個(gè)重要目標(biāo)):
 

 

通過該腳本,您可從 App-V 氣泡圖的外面調(diào)用填充程序數(shù)據(jù)庫(kù)安裝程序 (sdbinst.exe),但要使用位于 App-V 氣泡圖內(nèi)部的 .sdb 的一個(gè)參數(shù),該 .sdb 隨后將作為應(yīng)用程序部署序列的一部分進(jìn)行部署。因此,應(yīng)用程序修補(bǔ)程序的部署和更新十分容易,就像它們是該應(yīng)用程序的任何其他部分一樣。

自定義填充程序數(shù)據(jù)庫(kù)的安裝過程要求擁有管理員權(quán)限;在運(yùn)行時(shí)進(jìn)行安裝這是否會(huì)發(fā)生問題?您不希望您的用戶擁有管理員權(quán)限,您的用戶也不希望每次啟動(dòng)應(yīng)用程序時(shí)都不得不單擊 UAC 對(duì)話框。令人高興的是,您無(wú)需那樣做;對(duì) sdbinst.exe 的調(diào)用會(huì)自動(dòng)提升。安裝填充程序的進(jìn)程樹如圖 4 所示。

 

圖 4 填充程序安裝進(jìn)程樹

將創(chuàng)建一個(gè)命令 Shell,該命令 Shell 隨后調(diào)用 sdbinst.exe 來安裝自定義填充程序數(shù)據(jù)庫(kù)。在調(diào)用應(yīng)用程序信息服務(wù)(提供提升的服務(wù))之前,會(huì)失敗兩次,其錯(cuò)誤為 STATUS_ELEVATION_REQUIRED。上述服務(wù)調(diào)用 consent.exe,后者對(duì)策略進(jìn)行檢查以確定是否應(yīng)提升應(yīng)用程序。策略(在虛擬環(huán)境中)返回“是”而無(wú)需提示用戶;consent.exe 批準(zhǔn)提升,并創(chuàng)建 sdbinst.exe 的一個(gè)提升實(shí)例,該實(shí)例將安裝自定義填充程序數(shù)據(jù)庫(kù)。但是請(qǐng)務(wù)必注意,不提示就提升的策略只有在您能提升的情況下才會(huì)無(wú)提示運(yùn)行。如果您是標(biāo)準(zhǔn)用戶,則每次啟動(dòng)應(yīng)用程序都會(huì)出現(xiàn)一條需要管理員憑據(jù)的提示,每次關(guān)閉應(yīng)用程序也是如此。因?yàn)樵跇?biāo)準(zhǔn)用戶環(huán)境中人們非常不希望出現(xiàn)這種情況,所以,只有在已部署本地管理員用戶的情況下,這種方法才有效。我們希望只有極少的用戶需要應(yīng)用這種方法!

#p#

結(jié)論

Microsoft Application Virtualization 是一個(gè)功能強(qiáng)大的應(yīng)用程序管理和部署工具。如果在 Windows 7 遷移計(jì)劃中使用該工具,有可能降低安裝測(cè)試過程中的成本(不過,成本不會(huì)降到 0)。

繼續(xù)利用大多數(shù)同樣的過程,還可以使用填充程序解決應(yīng)用程序兼容性問題。如果要在組織范圍內(nèi)部署單個(gè)填充程序數(shù)據(jù)庫(kù),要進(jìn)行的轉(zhuǎn)換任務(wù)很少,只需小心避免提升填充程序(與在 App-V 環(huán)境中通常應(yīng)避免提升的情況大體一樣)。如果要部署基于每個(gè)應(yīng)用程序的填充程序,可以使用一些適當(dāng)?shù)姆绞絹泶虬筒渴饝?yīng)用程序的填充程序數(shù)據(jù)庫(kù),不過,這種情況下,有一個(gè)顯著的缺點(diǎn),即無(wú)法合理地以非管理員用戶的身份運(yùn)行應(yīng)用程序。因此,強(qiáng)烈建議(就像在基于 MSI 的應(yīng)用程序部署中那樣)盡量以集中管理的單個(gè)數(shù)據(jù)庫(kù)的形式部署填充程序,這種情況下,可以使用現(xiàn)有的系統(tǒng)管理軟件進(jìn)行部署。如果采用這種方式,將來在您的用戶中,以非管理員身份運(yùn)行的用戶的比重會(huì)越來越大。

Chris Jackson(“應(yīng)用程序兼容性專家”)是 Microsoft 的首席顧問,也是 Windows 應(yīng)用程序體驗(yàn) SWAT 團(tuán)隊(duì)的技術(shù)主管。Jackson 是在 Windows 應(yīng)用程序兼容性領(lǐng)域享有盛名的專家,他根據(jù)多年與企業(yè)客戶和獨(dú)立軟件供應(yīng)商合作的實(shí)際經(jīng)驗(yàn),負(fù)責(zé)創(chuàng)建在 Microsoft 內(nèi)部和外部使用的技術(shù)文檔、培訓(xùn)和服務(wù)項(xiàng)目??赏ㄟ^ Jackson 的廣受歡迎的博客與他聯(lián)系。

原文地址

本文來源:微軟TechNet中文站

 

 

 

責(zé)任編輯:王勇 來源: 微軟TechNet中文站
相關(guān)推薦

2009-08-14 09:14:13

Windows 7兼容性修復(fù)程序

2009-09-22 12:17:59

ibmdwLotus

2021-07-30 20:25:04

pipxPython編程語(yǔ)言

2011-05-27 08:48:13

Android HTML

2021-09-07 10:24:36

Vue應(yīng)用程序Web Workers

2013-10-09 11:15:49

Ubuntu應(yīng)用程序

2009-06-19 13:45:53

Java應(yīng)用程序Jfreechart

2009-11-23 19:52:55

ibmdwFlex

2022-08-30 20:00:37

零信任Linkerd

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2011-03-21 09:05:40

IronRubyWindows Pho

2011-07-18 10:00:47

iPhone iOS Visual Stu

2010-12-01 09:01:31

獨(dú)立存儲(chǔ)Windows Pho

2012-06-07 09:15:14

ibmdw

2022-02-20 20:09:38

BottlesLinuxWindows

2011-02-18 09:34:32

Windows 7 S

2011-08-10 10:48:48

2010-07-26 11:02:46

2016-09-06 09:48:38

LinuxWindows切換

2011-04-01 13:20:40

Windows Pho應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)