您對遷移項目中應用程序兼容性部分考慮的周密程度決定了 OS 的推出順利與否,或者決定了您是否會將您的IT團隊置於幫助台電話的圍攻、人後的指指點點和無數深夜加班的困境中。
幾年前,當公司開始評估 Windows Vista 系統時,應用程序的兼容性成為了前進道路上的致命障礙。這些情形的出現多數是因為公司關鍵業務功能賴以生存的應用程序在 Windows Vista 下不可用。另外的一些情形是,公司沒有預算也沒有意願購買專門為 Windows Vista 設計的新版本的許可。還有一些情形是,關鍵的應用程序是自定義的或由公司內部人員開發的,最初的開發人員要麼已經不在公司了,要麼(即便在)不能對基礎代碼進行再改造。
如今,在考慮向 Windows 7 遷移時,您會發現情況已經遠不像幾年前那樣具有挑戰性了 —— —— 專為 Windows Vista 設計的大多數應用程序在 Windows 7 下也可以工作得很好,並且大多數 ISV 也已經對其應用程序進行了更新,以便能與新一代 Windows 操作系統很好地協作。所以不論您是從 Windows XP 還是從 Windows Vista 遷移, 情況都不如過去那麼困難了。
即便如此,為 OS 遷移順利部署應用程序組合仍然是一項浩大的工程,不過,若能采取正確順序執行操作步驟,並進行一些有助於縮小測試范圍的艱難選擇,還是可以讓這件繁瑣的工作不那麼令人怯步。
應用程序為何會在 Windows Vista 和 Windows 7 中失效?
那麼,Windows 7(及 Windows Vista)中究竟做了什麼更改,以至於專為 Windows XP 設計的應用程序“失效”?有一點可以確定,即負責 Windows Vista 和 Windows 7 的工程團隊絕沒有輕率地對待這個問題。
對 Windows 進行更改是為了提高安全性、可靠性、性能以及可用性,在某些情況下,還能刪除已經達到其有效使用期的舊組件。我們無意在本文中花費時間來羅列所有這些更改,但會給出對應用程序兼容性意義重大的一些更改,包括:
用戶帳戶控制 (UAC)/標准用戶帳戶。在 Windows Vista 的開發中,工程團隊使大多數組織能夠將其用戶部署為標准用戶,而將管理員權限僅保留給需要這種權限的用戶——IT 專業人員。對客戶PC采用這種我們習慣稱之為“權限最低的用戶帳戶”的策略,可以幫助阻止惡意軟件的入侵、減少終端用戶的配置錯誤以及防止未經授權的應用程序加載。在過去,應用程序具有編寫注冊表設置、修改內核以及進行其他類似攻擊動作的能力。不幸的是,這樣的自由是要付出代價的——犧牲了安全性。Windows 現在限制了應用程序所能更改的 OS 參數,限制惡意軟件所能造成的影響,但是,需要對通過這種行為編寫的應用程序進行修改或做填充處理,然後它們才能在 Windows 7 中正常工作。
順利部署 Windows 7 應用程序的五個步驟
如同大多數浩大的工程一樣,若能花些時間來將問題分解為符合邏輯的可管理的若干任務,困難並不是不可戰勝的。
應用程序的順利部署可分為三個最主要的部分:收集、分析和緩解。但是還有其他幾個我們想要強調的步驟:在開啟測試體制之前,請考慮使用虛擬化技術來幫助縮減測試過程,並潛在地幫助改善桌面的基礎結構,使未來的遷移更好管理;根據展開策略對測試階段進行排序。
做好深入研究的准備後,即可立即開始行動了。
步驟 1:收集應用程序清單
第一個步驟是通過應用程序清單了解自己的處境——請相信我們;此時,您可能剛剛意識到問題比您想象的要復雜。不過,重要的是,您剛剛將一個“未知”轉變為“已知”,從更好的角度審視了測試范圍和准備就緒的程序,並了解了未來的挑戰。
幸運的是,目前已經有一些工具可用來幫助自動化這個過程。您的客戶管理軟件可能已經內置了這項功能,或者您也可以使用可免費下載的Application Compatibility Toolkit.如果您已經有了其他的清單機制,比如System Center Configuration Manager、Asset Inventory Service 等,那麼您可以將它們作為起點。
要讓清單成為最有用的下游產品,請捕獲比應用程序列表更多的信息——比如您可以了解有關應用程序的當前用戶、這些用戶的角色以及該應用程序對用戶的重要程度等更多細節。有了這些信息,您就可以優先對待那些至關重要的應用程序,並消除未使用的或多余的應用程序(下一步驟將對此進行更消息的詳述)。
而且,這還會提供額外的好處——可標識出目前尚未管理卻已廣泛使用的應用程序。您可能要將這些應用程序也納入正規,這樣就可以確保它們在獲准的版本上得到恰當管理,並且所需的軟件也會得到更新。
步驟 2:分析應用程序
有多少您目前支持的應用程序已經被替換,或者已經失去了業務用戶的喜愛。如果您與大多數組織無異的話,相當數量的受支持應用程序(很多情況下是大多數應用程序)都處於這樣的狀態。所以,一旦完成了評估,並且有了很多信息作為基礎,那麼在開始進行耗時(且昂貴的)回歸測試過程之前,下一個步驟就是清理受支持應用程序的列表,並對這些應用程序進行過濾。
為您的應用程序組合設置適當的目標。總共有多少應用程序需要受到支持?一個應用程序在哪種情況下需要升級到“托管”狀態?
設置了目標後,就可以開始尋找最容易實現的目標,並縮小需要測試的應用程序的范圍。
消除多余且未使用應用程序。毫無疑問,您會發現自己有幾個應用程序執行的是相同的功能。現在需要確立一個應用程序完成一種功能的標准,並消除那些廢棄不用的應用程序。這裡有一個提示,建議您嘗試並映射應用程序依賴關系,因為您可能需要支持一個舊版的應用程序,使另一個應用程序能夠受此 ISV 支持。那些很少或從未使用的應用程序自然應該拋棄。這麼做不僅可以簡化測試,還可以節省購買軟件許可的支出。
刪除同一應用程序的多個版本並保留最新的版本。幾乎在所有情況下,最新版本的性能都是最好的並且也最安全和可靠。同樣,請注意應用程序之間的依賴關系。
從業務用戶那裡收集信息,幫助優先化至關重要的應用程序,並判斷哪些部門在使用哪些應用程序。在對測試過程進行排序時,這非常有用;您需要根據分階段推出的新桌面映像來調整測試時間。
步驟 3:評估非兼容性和減少選項
毋庸置疑,有一些應用程序需要多做一些工作才能使 Windows 7 順利部署。目前,有如下幾個選項可供參考:
您可以用應用程序的一個新版本替換不兼容的版本。這種方法最可靠,但不幸的是,也是最昂貴的一種方法。如果應用程序是至關重要的,或對業務的運營有戰略性意義,那麼建議采用這種方式。
為現有應用程序創建填充碼。填充碼是插入到應用程序和 Windows 間的一些小代碼塊,用來修改對底層 OS 的調用——比如,讓應用程序相信用戶是以管理員身份運行的,而同時又維持標准用戶模式。這可能會為您帶來一些管理負擔,因為您需要維護一個填充碼數據庫,但這種方法能夠解決很多應用程序問題。這種方式是最為經濟有效的,而且如果應用程序提供商已經不在左右,那麼這可能是唯一的選擇。但是有一點需要警告——很多提供商不支持做過填充碼處理的應用程序。
您可以使用組策略來更改應用程序的冒犯行為。與填充碼一樣,這種方式通常能夠解決兼容性問題,但同樣有一些缺點。從本質上講,這種方式可以使用策略來禁用可能導致應用程序放緩的某個特性或功能。不幸的是,很多情況下,這些功能會涉及底層系統的安全性,所以代價是很明顯的。同樣地,應用程序必須擁有組策略設置才能啟用這種管理性。
對於自定義或是內部開放的應用程序,您當然可以修改代碼。但這並不總能奏效,如果奏效,那麼有很多資源可提供幫助——Application Compatibility Cookbook 中提供了從 Windows XP 到 Windows Vista 所做的變化,Application Quality Cookbook 中提供了從 Windows Vista 到 Windows 7所做的變化。這兩個資源都是免費的指南,可以幫助開發人員為獲得本地兼容性而重新編碼應用程序。
步驟 4:為 OS 部署和新應用程序交付選項做准備
開始 OS 遷移項目的時候,同時也是您重新思考如何將應用程序打包並交付給終端用戶的絕佳時間。虛擬化技術已經為我們提供了許多選擇和可能,而這些選擇在上一次主要OS 遷移時還不可用;在開始測試過程之前,應該考慮為桌面映像和應用程序交付提供不同的模型。您會發現,應用程序測試和准備工作所帶來的節省不僅能夠彌補虛擬環境的實現成本,還能為未來的開發提供了更靈活、更易於管理的環境。
主要有兩種形式的虛擬化可以解決應用程序兼容性問題——應用程序虛擬化和 OS 虛擬化。應用程序虛擬化將應用程序層從 OS 分離出來,僅包含應用程序文件和注冊表設置,並將應用程序打包,以簡化它們。OS 虛擬化則有幾種不同的形式,但基本上都會創建一個獨立於機器上的本地映像的 OS 映像。
對應用程序組合進行虛擬化在可管理性和靈活性方面帶來了若干好處,但最為關鍵的一個優勢是可以最小化應用程序之間的沖突。當您需要同時運行同一個應用程序的兩個版本時,就會出現這類沖突——這在軟件培訓場景很常見,比如某個特定任務在新舊應用程序中的完成過程的對比,又比如財務部門正在遷移到財務軟件的新版本,但又需要用舊版本的軟件關閉本財年的帳務。
虛擬化在應對應用程序兼容性問題方面的一個更常見的使用是創建一個虛擬映像,該映像包含關鍵應用程序以及專為運行此應用程序而設計的操作系統。有一些啟用 OS 虛擬化的工具:從Windows 7 專業版的虛擬 PC 和 Windows XP 模式以及更高級的 SKU(一個未托管的虛擬映像,能運行為 Windows XP 設計、無法兼容 Windows 7 的應用程序),到 MicrosoftDesktop Optimization Pack (MDOP) 中的 Microsoft Enterprise Desktop Virtualization (MED-V),它通過策略決定物理和虛擬環境的交互方式,從而使虛擬機的供應、配置和管理變得很輕松。
當然,為您的客戶 PC 采用一種替代的計算模型本身是一項巨大的工程,但值得花費一些時間來評估這為組織帶來的好處——更大的靈活性和更高的可管理性——是否遠超出了因采取這種 PC 供應模型而付出的額外代價。
步驟 5:對測試、實驗和部署進行排序
按步驟2中提及的優先級對您的測試過程進行排序,以便可以開始分階段地展開測試,而且可以並行進行後續測試。
開始測試過程時,可以使用兩種方法——靜態和動態分析;由於靜態分析相對較新,更周密的測試方法是將這二者結合使用。
靜態分析著眼於應用程序的結構,並確定在安裝時或運行時必定會出現的問題。目前,已經有很多工具和服務可用來幫助自動化這一過程,並且可以迅速突出明顯的問題。
動態分析著眼於應用程序在運行時的行為,通常都是在回歸測試中完成的。在這裡,將在特定的環境對應用程序進行“煙霧測試”——復制各種用戶對其硬件以及其他關鍵應用程序和驅動程序的體驗。
最後,需要讓一些真正的用戶運行這些應用程序,並觀察是否會出現在結構化測試時沒有出現過的任何異常行。這時,只要參與即可獲得新 PC 的許諾是一個很好的激勵措施。
您准備好開始進入生產時,先要標示出遷移對之很有意義的那些人——基於他們所需的特定功能或是為了最大程度地減少對業務造成的破壞。與處理看著不熟悉的屏幕不知所措的任務工作人員打來的求助電話相比,遷移一組專業用戶要簡單得多。接下來,要確定這些用戶組執行其作業需要哪些應用程序。先從受應用程序兼容性影響最小或未受影響的組(基於其使用的應用程序)開始,這會讓您對部署過程和操作系統進行驗證。隨著您對應用程序套件的處理,將更多的組從不兼容的應用程序類別中解放出來,以後就可以將這些組為目標。
最後一句警告——避免將這個過程進行得太過。如果您將操作范圍從應用程序兼容性擴展到整個應用程序質量項目,那麼您可能會永遠無法完成此任務。接受修復 bug 讓工作無法完成的事實,同時避免試圖消除每個現有的 bug——您的時間無疑有更好的用處。