我试图这样做,以便当用户通过复选框选择某些内容时,将安装相应的功能.我知道Wix提供的预构建功能树,但我正在做的其他一些事情不允许我使用此功能.我很好奇如何将两者连接在一起,以便当用户选中"安装功能X"复选框时,在用户单击安装按钮时安装功能X ...任何建议将不胜感激.
我找到了解决我问题的方法.为了按照我的意图去做,我需要为每个单独的功能创建一个复选框.
<Control Id="FeatureX" Type="CheckBox" X="191" Y="50" Width="140" Height="17"
Property="FEATUREX_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" />
<Control Id="FeatureY" Type="CheckBox" X="191" Y="67" Width="140" Height="17"
Property="FEATUREY_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" />
<Control Id="FeatureZ" Type="CheckBox" X="191" Y="84" Width="140" Height="17"
Property="FEATUREZ_CHECKED" CheckBoxValue="myValue" Text="Install feature 1" />
Run Code Online (Sandbox Code Playgroud)
现在,一旦我这样做,我就为每个添加了相应的发布,并创建了一个条件,使得只有选中该复选框才会安装该功能.像这样:
<Control Id="Next" Type="PushButton" Text="Next" X="254" Y="243" Height="17" Width="56">
<Publish Event="Remove" Value="ALL" Order="1">1</Publish>
<Publish Event="AddLocal" Value="FeatureX" Order="2">
<![CDATA[FEATUREX_CHECKED]]>
</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)
删除用于取消选择安装的所有内容(引起我的注意,一旦调用UI,更改功能级别为时已晚).
然后检查每个功能以查看是否已选择"相应的复选框",如果是,则将其添加到"AddLocal"属性.如果要查看它,AddLocal看起来像这样:
ADDLOCAL=FeatureX,FeatureY,FeatureZ...
Run Code Online (Sandbox Code Playgroud)
为了让它工作,我需要做的最后一件事是检查我的main.wxs以确保复选框中使用的FeatureID与使用的ComponentGroupRefID匹配:
<ComponentGroupRef Id="FeatureX"/>
Run Code Online (Sandbox Code Playgroud)
所以它就是......我再次感谢大家对此的帮助.如果读到这篇文章的人对任何事情感到困惑,请随时给我留言,我会尽力解释一下.
| 归档时间: |
|
| 查看次数: |
10359 次 |
| 最近记录: |