Wix 学习
最近在学习Wix toolset (版本3.10),阅读了官网的文档和教程,记录下所学和遇到的一些问题。
Wix可以通过配置xml格式的文件.wxs生成.msi安装包,下载之后将安装目录下的bin文件夹添加到系统的环境变量下,这样我们就可以在cmd里面使用Wix的命令行了,打包主要用到的命令行是candle.exe和light.exe。
candle.exe将目标*.wxs转换成light.exe可识别的*.wixobj文件。light.exe则是生成最终*.msi的工具。
开始使用Wix
可以从教程中下载到一个最简单的例子,这个例子没有引导界面,直接将程序安装好,程序中需要替换GUID为自定义的ID,打包成.msi只需要执行
使用Wix自带的引导界面
要使用Wix自带的引导界面需要在light.exe命令后时添加选项-ext WixUIExtension
同时在.wxs中添加
Id为Wix Extension提供的5中引导界面之一
- WixUI_Mondo
- WixUI_FeatureTree
- WixUI_InstallDir
- WixUI_Minimal
- WixUI_Advanced
详情可参考教程
引导界面使用中文
在Product和Package标签中有Language,Codepage,Languages和SummaryCodepage属性,可以根据微软的语言列表查到需要用到的语言所对应的Id,LANGID对应Language和Languages,ASCII code page对应Codepage和SummaryCodepage。
在修改完ID之后,打包时需要添加命令
-cultures:zh-CN,不同语言对应的code参考这里,否则语言修改将不会生效。
自定义引导界面
Wix只提供了5中固定格式的引导界面,所以有时候我们需要自己订制界面,可以参考教程中提供的这个例子,这是一个增加引导界面流程的例子。
Wix扩展的这些所有界面的配置文件我们可以在安装目录下的\SDK\wixui中找到对应.wxs文件。
通过观察这些文件我们可以发现Wix扩展的这些引导界面是通过如下方法来控制界面跳转的
通过Control的Next和Back属性表示用户操作的时间,来控制对应的事件。
如果我们需要删除协议许可窗口可以将对应组件的引导界面的.wxs(\SDK\wixui目录中)复制到自己的当前项目中,并修改<UI Id="你自己的ID">UI标签的ID为自定义标签,命名为YOU_WXS.wxs(此处自己命名),然后将LicenseAgreementDlg对应的部分删除比替换有关LicenseAgreementDlg窗口的跳转。打包的命令为
详情可以参考教程。