首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用自定义属性修改Wix中的功能安装

如何使用自定义属性修改Wix中的功能安装
EN

Stack Overflow用户
提问于 2022-01-19 23:21:33
回答 1查看 95关注 0票数 0

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

我对每个安装包都有一个特性。我正在为每个选项创建属性,并将它们作为每个特性的条件,将特性级别更改为1或0。

代码语言:javascript
复制
    <!--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中,我在复选框中设置属性的状态。

代码语言:javascript
复制
                <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元素来解决的。这纯粹是个人喜好,因为我不喜欢这个应用程序中的用户界面。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-01-22 22:10:43

问题解决后,经过相当多的搜索和张贴,以防止它帮助其他人。

本文描述了我的愿望,并给出了一个很好的描述所发生的事情。https://www.joyofsetup.com/2007/05/30/feature-conditions-and-ui/

我从特性中删除了这个条件,并将它作为一个发布事件在Next按钮控件下移动到对话框中。

代码语言:javascript
复制
<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>

我根据安装条件预置对话框中的选择。

代码语言:javascript
复制
    <SetProperty Id="REVIT2020SELECTED" 
                 After="MigrateFeatureStates" 
                 Value="Selected">
        <![CDATA[REVIT2020INSTALLED AND (NOT Installed OR NOT !PRODUCT2020=2)]]>
    </SetProperty>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70779006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档