原文地址:http://wix.tramontana.co.hu/tutorial/
WiX 教程
Windows Installer XML (WiX) 是一套幫助您從XML源文件中創建Window安裝包的工具集。該工具集可在命令行環境中創建MSI和MSM安裝包,這樣開發人員不僅可以將其和以前的 Makefile集成,還可以利用新的MSBuild技術與微軟的Visual Studio,或者SharpDevelop等開發工具集成。
WiX是開源項目,最初由微軟開發,Rob Mensching來維護。您可以在此下載最新發布版本和源代碼。本教程基於最新3.0穩定版。
工具集由C#編寫,需要運行在.NET Framework 2.0和Service Pack 1之上。 但是, 這僅對工具集而言,通過WiX創建的安裝包不依賴任何版本的.NET Framework或其他軟件。同理,為了生成merge modules或補丁所需的其他工具也是僅僅部署在編譯環境里,實際安裝環境只需要生成的安裝包,不需要其他的。
通過專門托管在SourceForge郵件列表,WiX開發人員可以和其他用戶進行廣泛且深入的交流。這也是尋求WiX各方面幫助或建議的最好方式。如果您已經擁有SourceForge 的賬戶,可以通過相應站點加入,更簡單的辦法是發送一條空郵件到此訂閱地址。 作為使用郵件列表的慣例,在提問題之前您最好先訂閱它,否則其他用戶可能以為您的郵件是垃圾郵件……
簡介
僅僅完成了程序的開發還遠遠不夠,如今使用者也開始關注產品的安裝,看它是否成熟,是否好用。作為最終用戶了解產品的第一步,擁有完善、可信賴的安裝,其重要性也是不容小視的。
傳統的安裝工具使用可編程的,基於腳本的方式去描述涉及到如何部署某個產品到客戶端時所需要的各種步驟,如文件的復制、注冊表的創建、硬件驅動的安裝和系統服務的啟動。而Windows Installer技術,不僅為最終用戶提供了統一界面和體驗,還有非常重要的深層次的變化。最根本的莫過於從命令式描述轉向聲明式,即不再描述單個的安裝步驟,而是在表中聲明並指定,安裝和卸載的各個階段后,客戶端應具有的狀態。如果不碰到錯誤,命令行描述還是挺有效的,但聲明式可以更好的應對各種未知的狀況,不同的客戶端環境,甚至終止安裝或者共享資源。這對安裝開發人員了解整個過程的細節顯得至關重要,客戶端應該是處於可知且穩定的狀態,且沒有其他任何干擾的因素。
經常使用安裝工具的開發人員也開始嘗試學習這項新技術,他們不斷分享自己編寫的用於創建此類型安裝程序的新版本工具。但從開發人員那里得到的反饋來看,雖然這些工具可以創建更簡單的安裝包,在面對稍加復雜的需求時,它們就顯示出太多限制且缺乏靈活性。
我們將介紹的工具集,WiX,則使用了不同的策略。它更像是一種編程語言,而不是某種允許開發人員手動添加文件和生成安裝所需其他相關工序的帶有圖形界面的工具。它使用文本文件(基於越來越流行的XML格式)來描述安裝步驟需要的所有元素,因此可以和常見程序創建過程完美結合。工具集中提供了編譯器和鏈接器用以創建安裝程序,就和我們常見的編譯器從源文件中創建出應用程序一樣。因此,WiX可以被非常容易的集成入任何程序的自動化構建過程,可以是基於典型技術的Makefile,也可以是如今具有類似功能的集成開發環境。
除了上述集成外,為了方便開發人員,WiX還提供了其他層面的,更具優勢的“集成”方式:安裝包開發過程與產品開發過程本身相結合。傳統上,安裝包只有等到主程序開發完成后才開始編寫且通常是由不同開發者負責。這種做法,需要收集產品用到所有資源的信息,單調且容易出錯。盡管通常來說文件本身是顯而易見的,但注冊表項,服務和大部分有依賴“內嵌”資源的窗體則不是那么容易在后期重組的:如果沒有可靠的開發文檔,安裝開發人員則不得不從最初的開發人員那里收集相關信息或者得去分析源文件了。
在產品開發和安裝開發集成的環境里,最初的開發人員可在產品開發過程中同步的修改WiX源文件。只要啟動了新的功能模塊,只要編寫了新的注冊表項,服務或者依賴,對應的安裝上的修改也同步進行。通過這種方式,再不會丟失重要的信息,還帶來一個好處,安裝程序將和產品一起完成。
也因此,WiX並不適合所有的開發人員。相對的,其學習難度(剛好也是我們這個教程的目的,幫助您克服這些困難)和不可避免的需要對內部細節的了解,有時,甚至是晦澀難懂的Windows Installer基礎知識都可能讓那些剛接觸的開發人員或者那些根本不需要WiX如此靈活高效的開發人員轉投其他較簡單的,基於界面的安裝開發工具,商用和免費均有。
總結,此工具集的功能和優勢如下:
l 基於聲明式
l 全面支持Windows Installer的各項功能
l 源文件可讀性高
l 與產品編譯過程完全集成
l 可與產品開發過程集成
l 支持團隊開發,內部或第三方
l 免費,開源
您或許想知道WiX是否已經足夠成熟,可以支持大規模,復雜的,需要大量文件部署的產品?嗯,微軟自己已經將所有主流的軟件打包方式轉到WiX。僅舉一個例子,微軟Office 2007的安裝包是完全基於WiX開發的。
我想表達對Rob Mensching的感謝,是他最初創建的這個工具集,還有Neil Sleightholm,Vadym Stetsyak,Robert Pickering,Marc Borgers,John DeSoi,Markus Karg,Greg Glass,Stefan Krüger,Nobuo Kihara,Phil Wilson,Peter Tewkesbury,Nicholas Muguira,David Adams,Mike Green,Chesong Lee和Christophe Michel,感謝他們對此教程做出的重要貢獻。
上一節 << 返回目錄 >> 下一節