用Windows組件庫文件快速部署Visual C++
原創(chuàng)毫無疑問,與 Windows 一起發(fā)布的控制庫是使用最為廣泛的組件庫。當(dāng)如此廣泛的使用遇到 Windows 超長的發(fā)布時間跨度時,讓 Windows 控制庫的兼容問題變得非常難以解決。雷蒙德•陳在 MSDN 博客中為 Windows 控制兼容及其面對的挑戰(zhàn)提供了一些背景信息,及其相關(guān)的說明文件及其同類技術(shù)并行執(zhí)行(SxS)的開發(fā)。
SxS 執(zhí)行部署的原則是,一旦開發(fā)的應(yīng)用程序針對某個特定版本的 Windows 常用控件進(jìn)行測試之后,該應(yīng)用程序在其這一版本中必須繼續(xù)使用相同版本的 Windows 常用控件。共享庫從一個版本到下一個版本發(fā)生的變化,無論是內(nèi)部還是微不足道,這種變化都極有可能引起某些應(yīng)用程序的損壞。聲明性的 XML 機(jī)制,既說明(manifest)文件,可以讓應(yīng)用程序指定所用的采用控件版本,而不是強(qiáng)制每個應(yīng)用程序都用 API 來請求常用控件版本。
說明文件可以是一個簡單的帶有應(yīng)用程序名稱和.manifest 文件擴(kuò)展名的 XML 文件,該文件與可執(zhí)行文件位于同一目錄,或者也可以作為資源嵌入到應(yīng)用程序中。說明文件中所含的依賴性信息非常簡單,本質(zhì)上來看,是一列具有版本信息的依賴執(zhí)行信息。比如 Version 6 的 Windows Common Controls 的使用請求,其說明文件非常簡單,具體如下:
Visual C++ 2010 的構(gòu)建和鏈接過程中可生產(chǎn)說明文件。下圖中演示了 Visual C++ 項目中說明設(shè)置提供的各種屬性頁面。該工具中提供的大多數(shù)選項對應(yīng)的命令行參數(shù)可傳遞至 Manifest SDK 工具(mt.exe),該工具作為 Windows SDK 的一部分一起發(fā)布。除了支持傳統(tǒng)的與 SxS 設(shè)置相關(guān)的說明文件選項,還支持用于管理執(zhí)行和本地 SxS 執(zhí)行本身的說明文件的生成。
Visual C++ 項目 Manifest 屬性