【问题标题】:wix disable directory browse buttonwix 禁用目录浏览按钮
【发布时间】:2010-03-01 16:16:14
【问题描述】:

我们一直在使用 wix UI 扩展库中的 CustomizeDlg 作为功能选择对话框,但出现了一个新要求,即如果软件正在更新,则应禁用浏览按钮。

所以我从库中复制了对话框wxs文件以便对其进行自定义,将代码更改如下

<Control Id="Tree" Type="SelectionTree" X="25" Y="85" Width="175" Height="115" Property="_BrowseProperty" Sunken="yes" TabSkip="no" Text="!(loc.CustomizeDlgTree)"  />
    <Control Id="Browse" Type="PushButton" X="294" Y="210" Width="66" Height="17" Text="!(loc.CustomizeDlgBrowse)">
      <Publish Event="SelectionBrowse" Value="BrowseDlg">1</Publish>          
      <Condition Action="hide">Installed</Condition>
      <Condition Action="disable">UPGRADE = 1</Condition>
    </Control>

问题是浏览按钮永远不会被禁用,有人可以指出我在这里做错了什么吗?

非常感谢

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    根据Windows Installer Property Reference,根本没有UPGRADE 属性。要验证这是问题所在,请从命令行使用日志记录选项运行安装程序,如下所示:

    msiexec /lvx* logfile.txt /i myinstaller.msi
    

    日志文件将显示升级期间使用的所有属性的值。

    您正在寻找的条件可能是

    <Condition Action="disable">UPGRADINGPRODUCTCODE</Condition>
    

    但我没有测试过。

    【讨论】:

    • UPGRADE 属性是我添加的,设置正确,问题是即使设置了属性,浏览按钮仍然启用
    【解决方案2】:

    如果您正在为您尝试安装的 Feature 元素设置 ConfigurableProperty 属性,它似乎会阻止修改 Browse 按钮​​(或可能与 SelectionBrowse 事件关联的任何控件)的状态。您可以在看似安装后修改状态,这就是如果您尝试更改/删除该功能,隐藏操作将起作用的原因。我还没有找到解决方法;我不确定这是 Windows Installer 构造还是 WiX 中的某些错误。我现在假设前者。

    编辑 (最初由 David J. Antoine 在附加答案中)

    您必须向 SelectionBrowse 事件以及 Browse 按钮​​本身添加一个条件。使用您原来的浏览按钮代码,它看起来像这样:

    <Control Id="Browse" Type="PushButton" X="294" Y="210" Width="66" Height="17" Text="!(loc.CustomizeDlgBrowse)">
      <Publish Event="SelectionBrowse" Value="BrowseDlg">NOT Installed AND NOT (UPGRADE = 1)</Publish>          
      <Condition Action="hide">Installed OR UPGRADE = 1</Condition>
      <Condition Action="disable">Installed OR UPGRADE = 1</Condition>
    </Control>
    

    不幸的是,即使使用它,我也无法禁用浏览按钮。充其量,它已启用,但单击时什么也没做。因此,我最终在这两种情况下都使用代码禁用它,以防止 UI 混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2011-02-01
      • 2020-12-08
      • 2011-07-26
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多