[翻譯] WiX 教程 - 入門


原文地址:http://wix.tramontana.co.hu/tutorial/getting-started

上一節 << 返回目錄 >> 下一節 

入門

就像我們剛才在簡介里提到的,WiX工具集使用XML源文件以組件的形式來描述產品的安裝流程,同時還有其他數據信息,如快捷方式,注冊表或者.ini文件的修改,服務等類似的。除了那些您希望復制到用戶硬盤上的文件外,安裝包還可以包含輔助文件,雖然參與安裝但不會被真地安裝(可以是給界面使用的對話框、圖標和位圖,協議或自述文件以及自定義DLL文件,用以執行Windows Installer不支持的需要編程實現的任務,包括任意形式的用戶注冊,鍵值檢驗等您需要實現的邏輯)。

所有這些將被包含在源文件中並提交給WiX編譯器。工具集由幾部分組成,我們將使用其中的兩個用以編譯出安裝包。假設我們已經准備好文件Sample.wxs,如下命令:

 

candle.exe Sample.wxs

 

將執行編譯的第一步操作,創建Sample.wixobj,一個中間文件(這個仍是XML文件,只是內部機構我們並不感興趣;可以參考常見的object文件在編譯中的解釋)。第二個命令

 

light.exe Sample.wixobj

 

會將中間文件編譯成最終的安裝包,Sample.msi。很像一般的編譯器和鏈接器。事實上鏈接器完成的更多,除非我們指定不執行,鏈接器會進行一次校驗操作,用以檢測已生成的安裝包中是否存在上百種可能的錯誤和問題。

和現在常見的編譯器一樣,命令行不是唯一的使用途徑。與開發環境集成,如Microsoft Visual Studio或者SharpDevelop也支持WiX工程:和開發環境綁定或者作為插件。以Visual Studio為例,WiX 3.0版本可以自動安裝支持組件。通過這種方式,您可以創建單獨的安裝解決方案,或者將安裝工程作為整體方案的一部分。這種情況下,您甚至不需要脫離開發環境就可以編譯出最終的安裝包了。

不過,雖然“編譯”和“鏈接”的比方是非常明了的,它或許能幫助我們理解WiX到底是如何創建出安裝包的,可您不能認為我們在幾分鍾之內寫出WiX的代碼可以像寫其他腳本或者編程語言那樣。我們不需要收集程序安裝所需的步驟或操作,部署程序所用的.msi文件其實不是安裝程序,而是安裝數據庫。Windows Installer內已包含可編程業務邏輯的相關知識點,即關於如何安裝程序,如何修改注冊表鍵值,如何創建快捷方式,用戶和網絡共享,如何操作網站目錄或者注冊服務。我們的安裝文件只是描述了我們希望Windows Installer去做什么,以及提供需要部署的文件(還有安裝過程中的界面元素)。

“數據庫”意味着我們的WiX源文件不會像通常的程序那樣被編譯。在WiX中沒有“順序執行”的概念,也就是說第一行代碼不會比第二行代碼先執行。也沒有相應的聲明用以標明引用關系的優先級。各種元素可以在不同的地方進行描述,並且僅當他們之間存在依賴關系時,其中一個會通過我們必須提供的唯一標示符來引用到另一個。如果您非要按照編程語言的方式進行思考,請將WiX考慮一個功能性的描述語言,而不是命令式規定性語言。

還需要注意,WiX不是一個依賴自身的安裝環境。簡單的說,它是通過一種方便的XML類型的方式來描述安裝需求,並且通過編譯器和鏈接器將其翻譯成Windows Installer .msi數據庫。從這方面講,WiX是一種相對輕量級的圍繞Windows Installer技術的包裝器,雖然確實提供附加的功能用以幫助安裝開發者,但它的能力由底層技術所支撐,它的局限性則不是它本身,而是Windows Installer自己。 

 

上一節 << 返回目錄 >> 下一節  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM