【问题标题】:Hide/show controls in uninstall process in Wix Toolset在 Wix 工具集中的卸载过程中隐藏/显示控件
【发布时间】:2018-09-14 07:50:49
【问题描述】:

我创建了一个 WiX 安装程序,并希望在用户完成卸载或安装过程时在最后一个屏幕中隐藏或显示控件。

<Control Id="cbxOpenURL" Type="CheckBox" X="135" Y="160" Width="10" Height="10" Property="OPENURLONEXIT" CheckBoxValue="1">
       <Condition Action="hide">REMOVE</Condition>
       <Condition Action="show">NOT REMOVE</Condition>
</Control>

<Control Id="txtOpenURL" Type="Text" X="150" Y="160" Width="160" Height="20" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDlgOpenurlCheck)" >
              <Condition Action="hide">REMOVE</Condition>
              <Condition Action="show">NOT REMOVE</Condition>
            </Control>

它不起作用。我做错了什么??

【问题讨论】:

  • 我进行了快速测试,但出于某种奇怪的原因,似乎在出现此对话框之前已刷新了许多属性。我不知道为什么——也许 WiX 的人可以解释一下。可能有一些 hacky 方法可以让这个工作 - 例如通过使用注册表,但我不确定这个功能对你有多重要。
  • 在测试过程中,我认为当条件为 REMOVE=ALL 时我看到了它的工作原理,但这没有任何意义。这一定是一个小故障。只是提到它,以防您想确定一下。我没有时间进行更多测试。

标签: wix windows-installer uninstallation


【解决方案1】:

直到 InstallValidate 操作之后才会设置 REMOVE 属性,也就是在 UI 对话框之后。

安装和卸载对话框序列通常是分开的(基于起始对话框中的每个 Next 值),因此当对话框流是唯一的时不会出现此类问题。序列通常基于 Installed 属性开始,在设置 Installed 时从维护类型的对话框开始,在未设置 Installed 时从欢迎类型的对话框开始,每个对话框都有自己的对话框序列。

【讨论】:

  • 在我看来,在安装序列完成后,REMOVE 属性值并没有返回到 UI 序列。不过,我使用 WiX 以外的其他工具进行了测试。不过,在这种安装状态下,我能够获得许多其他属性:ALLUSERSpackage-product-upgrade GUIDsUILevelPrivilegedINSTALLLEVEL... 所以那里是 Session object,它只是不报告 REMOVE 的任何内容。在我的临时测试期间似乎是这样。
  • 我开始怀疑这是否与重大升级行为有关 - 一些属性需要重置 - 但重大升级涉及全新的会话对象,所以这没有任何意义?
猜你喜欢
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2018-11-25
相关资源
最近更新 更多