【问题标题】:WIX Toolset How to Set a PropertyWIX 工具集如何设置属性
【发布时间】:2015-06-05 14:11:20
【问题描述】:

这似乎应该是直观的,但到目前为止它还不是。当我的自定义对话框首次打开时,如何简单地设置我在 product.wxs 中定义的属性?

我的属性称为“端口”,初始化为空白。我有另一个名为“df_Port”,我将其设置为“8080”。 (这些在我的 Product.wxs 中设置)当我的自定义对话框打开时,我想将“端口”设置为“df_Port”。我在对话框上还有一个编辑控件,其“属性”设置设置为“端口”。所以显然用户应该能够更新端口,但是如果他们点击“返回”按钮,但最终回到这个对话框,编辑控件的默认值应该回到“8080”

我尝试过 SetProperty,但它需要一个 Before 或 After 属性,我对此一无所知。我也尝试过创建一个 CustomAction,但这也没有奏效:

<CustomAction Id="caPort" Property="Port" Value="[df_Port]"/>

控件显示为空白,而不是“8080”

我使用的是 Wix 3.9 R2

【问题讨论】:

    标签: .net visual-studio-2012 wix


    【解决方案1】:

    没有人回答或评论我的问题。然而,经过多次试验和错误,我想出了一个解决方案。我想我会把它放在这里以防其他人遇到同样的问题。

    1) 首先,我必须将属性命名为全部大写。所以在我的 product.wxs 中我声明:

    <Property Id="DF_PORT" Value="8080" Secure="yes"/>
    <Property Id="PORT" Secure="yes"/>
    

    2) 然后我添加一个发布标签并附加到我的自定义配置对话框之前的对话框的下一步按钮:

    <Publish Dialog="PrecedingDialogName" Control="Next" Property="PORT" Value="[DF_PORT]">1</Publish>
    

    3) 在我的自定义对话框中,我只是将一个编辑控件绑定到 PORT 属性:

    <Control Id="Port" Type="Edit" X="130" Y="88" Width="60" Height="16" Property="PORT" Text="{\WixUI_Font_Normal}" Integer="yes" RightAligned="yes" />
    

    控件将显示默认值。如果我编辑了值,然后点击了“返回”按钮,第 2 步将重新加载默认值,而不是记住用户输入的内容。

    在使用 WIX Toolset 几周后,老实说,这是我见过的最糟糕、最不直观的开发作品之一!

    【讨论】:

    • 感谢您发布答案,这是一个很大的帮助
    • 是的,属性名称必须全大写。这是我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    相关资源
    最近更新 更多