Wix新手--但我想这是显而易见的。我正在为一个应用程序使用WixUI FeatureTree扩展的修改版本,该应用程序基本上只是将文件复制到特定的目录。安装需要根据复选框选择复制或删除。

我对每个安装包都有一个特性。我正在为每个选项创建属性,并将它们作为每个特性的条件,将特性级别更改为1或0。
<!--Features for REVIT v2020-->
<Feature Id="Product2020" Title="Performance Seating v2020" Level="1">
<Condition Level="1">
<![CDATA[REVIT2020SELECTED = "Selected"]]>
</Condition>
<Condition Level="0">
<![CDATA[REVIT2020SELECTED <> "Selected"]]>
</Condition>
<!--Reference to Components.wxs component list hard coded-->
<ComponentGroupRef Id="2020Components" />
</Feature>在UI中,我在复选框中设置属性的状态。
<Control Id="cbRevit2020"
Type="CheckBox"
Property="REVIT2020SELECTED"
X="50"
Y="110"
Height="10"
Width="150"
CheckBoxValue="Selected"
Text="Revit 2020"/>安装按照预期在第一次运行特性是根据复选框选择安装。卸载也很好。但是,不管复选框状态如何,修改都不会执行任何操作。除了引用自定义的FeatureTree.wxs文件之外,我没有在CustomizeDlg自定义文件中更改任何内容。
我在这里找到了这个问题的参考(我认为)-- https://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/,但是它已经有10年多的历史了,而且对于我需要做的事情来说似乎过于复杂了。
有人有更好的方法吗?
顺便说一下-是的,我知道这是可以通过使用FeatureTree元素来解决的。这纯粹是个人喜好,因为我不喜欢这个应用程序中的用户界面。
谢谢你的帮助。
发布于 2022-01-22 22:10:43
问题解决后,经过相当多的搜索和张贴,以防止它帮助其他人。
本文描述了我的愿望,并给出了一个很好的描述所发生的事情。https://www.joyofsetup.com/2007/05/30/feature-conditions-and-ui/
我从特性中删除了这个条件,并将它作为一个发布事件在Next按钮控件下移动到对话框中。
<Control Id="Next" Type="PushButton" X="248" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Subscribe Event="SelectionNoItems" Attribute="Enabled" />
<Publish Event="AddLocal" Value="ALL">1</Publish>
<Publish Event="Remove" Value="PRODUCT2020">NOT REVIT2020SELECTED</Publish>
<Publish Event="Remove" Value="PRODUCT2021">NOT REVIT2021SELECTED</Publish>
<Publish Event="Remove" Value="PRODUCT2022">NOT REVIT2022SELECTED</Publish>
<Publish Event="Remove" Value="PRODUCTFAMILIES">NOT FAMILIESSELECTED</Publish>我根据安装条件预置对话框中的选择。
<SetProperty Id="REVIT2020SELECTED"
After="MigrateFeatureStates"
Value="Selected">
<![CDATA[REVIT2020INSTALLED AND (NOT Installed OR NOT !PRODUCT2020=2)]]>
</SetProperty>https://stackoverflow.com/questions/70779006
复制相似问题