在開始使用 WiX toolset 之前,必須先瞭解 Microsoft Windows Installer 相關的基礎知識,因為 WiX toolset 是基於 Windows Installer 技術所開發出來的工具,XML 標籤的組織方式也是依據 Windows Installer 的概念。Windows Installer 是 Windows 作業系統提供的安裝 (installation) 和配置 (configuration) 服務,目前最新的版本是 Windows Installer 5.0。
我們透過安裝包 (installation package) 部署產品 (product) 或應用程式 (application),安裝上最重要的概念是「元件 (Components)」和「功能 (Features)」。一個產品包含一至多個功能,功能之間可以是階層關係 (父功能和子功能 ),而一個功能則由一至多個元件所組成 ,注意到一個元件可能屬於多個功能之中。功能是從使用者的觀點來看,而元件則是從程式設計的觀點來看,使用者通常不會察覺到元件,當使用者選擇安裝的功能後,Installer 會自動安裝相關的元件。因此在打造一個安裝包的過程中,我們必須決定如何組織元件和功能之間的關係。
WiX toolset 是編譯式的工具,需要將 XML 的原始碼透過編譯和連結才能產生 Windows 的安裝包,以下介紹相關的檔案類型和工具。
WiX 工具
- candle.exe
前處理器 (preprocessor) 和編譯器 (compiler),將 XML 的原始碼檔案 (.wxs) 編譯成物件檔 (.wixobj)。 - light.exe
連結器 (linker),將一至多個物件檔連結成 Windows Installer 資料庫 (.msi 或 .msm)。 - lit.exe
用來將多個物件檔變成程式庫 (.wixlib) 以提供 light 連結器使用。 - dark.exe
將 Windows Installer 資料庫轉換成原始碼檔案 (.wxs)。 - heat.exe
將目錄、檔案或專案「收割 (harvest) 」成原始碼檔案 (.wxs)。 - insignia.exe
數位簽章的工具 - melt.exe
將 .msm 換成原始碼檔案 (.wxs) 的元件群組。 - torch.exe
執行 diff 差異產生.wixmst 或 .mst 檔案。 - smoke.exe
執行 .msi 或 .msm 的確認驗證。 - pyro.exe
將 .wixmsp 和 wixmst 產生補丁 (patch) 安裝檔。 - WixCop.exe
原始碼檔案的 schema 升級與格式化。 - WixUnit.exe
驗證 XML 檔案和輸出檔案。 - lux.exe
Wix 的擴充套件,用來做資料驅動的單元測試。 - nit.exe
執行 lux 的單元測試。
WiX 檔案類型
- WiX Include File (.wxi)
類似 C++ 語言的標頭檔,這是一個 XML 檔案,根元素是 <Include>。這個檔案是用來被被引入到其他原始碼檔案中。 - WiX Localization File (.wxl)
語言本地化的檔案,根元素是 <WixLocalization>,這個檔案是用來翻譯顯示的文字。 - WiX Source File (.wxs)
WiX toolset 的原始碼檔案,最重要的一個檔案,根元素是 <Wix>,用來定義安裝包的行為。 - WiX Object File (.wixobj)
candle.exe 編譯原始碼檔案產生的物件檔。 - WiX XML Output File (.wixout)
light.exe 連結各物件檔產生的輸出檔案。 - WiX Library File (.wixlib)
程式庫檔案,在多個 WiX 專案中共用程式碼。 - WiX Debug File (.wixpdb)
由連結器產生的檔案,用來除錯。 - WiX XML Patch File (.wixmsp)
在補丁專案中連結各物件檔產生的輸出檔案。 - WiX Transform File (.wixmst)
用來表示輸出檔之間的差異 - Windows Installer Installation Package (.msi)
安裝包檔案,Windows Installer 最基本的安裝單位。 - Windows Installer Merge Module (.msm)
模組合併檔,用來在多個.msi 檔案之間共用安裝邏輯。 - Windows Installer Transform (.mst)
用來在 .msi 檔案上套用變更。 - Windows Installer Patch Creation Process (.pcp)
使用 Windows Installer SDK 用來建置補丁的輸入檔。
參考資料:
- WiX Toolset v3.x reference manual
http://wixtoolset.org/documentation/manual/v3/ - Creating a Simple Setup
http://wixtoolset.org/documentation/manual/v3/votive/authoring_first_votive_project.html - List of Tools
http://wixtoolset.org/documentation/manual/v3/overview/alltools.html - WiX Tutorial
https://www.firegiant.com/wix/tutorial/ - Windows Installer
https://msdn.microsoft.com/en-us/library/cc185688(v=vs.85).aspx - Property Reference
https://msdn.microsoft.com/en-us/library/aa370905(v=vs.85).aspx