自定义Wix对话框:移除“需要时安装功能”等选项
移除Wix工具集特性安装对话框中的选项
不管用Mondo还是Advanced模板,都可以通过自定义UI或修改Feature配置来隐藏不需要的安装选项,具体实现如下:
针对Mondo模板(WixUI_Mondo)
Mondo模板的UI封装较紧密,需要自定义替换默认的特性选择对话框:
- 从WixUI扩展中提取默认的
FeatureTree对话框代码,复制到你的项目UI文件中 - 禁用“按需安装”选项:给所有
<Feature>元素添加Advertise="no"属性,这样“Entire feature will be installed when required”选项会直接消失——这个选项对应特性的广告安装功能,禁用后就不会显示 - 控制本地安装选项:如果要移除“Entire feature will be installed on local hard drive”,可以在自定义的FeatureTree对话框中调整控件逻辑,或者通过设置Feature的
InstallDefault属性为固定值(比如local),并隐藏对应的菜单选项 - 在你的UI序列中,用自定义的对话框替换原有的Mondo模板FeatureTree引用
针对Advanced模板(WixUI_Advanced)
Advanced模板本身提供更高的自定义自由度,操作更灵活:
- 隐藏按需安装选项:同样给所有
<Feature>元素添加Advertise="no",直接禁用该选项的显示 - 控制本地安装选项:
- 如果只想保留本地安装选项:可以设置所有Feature的
InstallDefault="local",并通过自定义UI控件的条件,隐藏其他选项 - 如果要移除本地安装选项:可以调整FeatureTree控件的上下文菜单,或者通过设置Feature的安装级别和条件,限制仅显示你需要的选项(比如“Not available”)
- 如果只想保留本地安装选项:可以设置所有Feature的
- 也可以直接修改Advanced模板自带的UI对话框代码,调整FeatureTree控件的可用选项列表
关键代码示例
禁用按需安装的Feature配置
<Feature Id="CoreFeature" Title="核心功能" Level="1" Advertise="no"> <ComponentRef Id="CoreComponent" /> </Feature>
自定义FeatureTree对话框示例
<Dialog Id="CustomFeatureSelection" Width="370" Height="270" Title="[ProductName] 功能选择"> <Control Id="FeatureTree" Type="FeatureTree" X="20" Y="20" Width="330" Height="200" Property="INSTALLLEVEL" /> <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&Back"> <Publish Event="NewDialog" Value="InstallDir">1</Publish> </Control> <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="&Next"> <Publish Event="NewDialog" Value="VerifyReady">1</Publish> </Control> <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Text="Cancel"> <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> </Control> </Dialog>
内容的提问来源于stack exchange,提问作者Sonnich Jensen
相关产品推荐
相关产品推荐

