0

我有一个修改过的 FilesInUse 对话框。仅将其包含在项目中并在 UI 中更改引用无济于事 - 构建安装项目时出现“ICE20:标准对话框:对话框表中未找到'FilesInUse'”错误。

浏览网络我发现了一个建议——禁止对 ICE20 进行 ICE 验证。好吧,使用这样的设置构建项目可以正常工作,msi 也可以正常工作,但我不确定这是解决问题的好方法。

另一个建议是修改 FilesInUse 并从引用中删除 WixUIExtension,但据我所知,我最终会将所有需要的对话框文件复制到我的项目中。这是我想避免的。

那么,如何正确地将我的自定义 FilesInUse 包含在 WIX 项目中?

4

5 回答 5

5

您可以通过以下方式使用自定义 FilesInUse 对话框:

<Fragment>
<UI>
  <Dialog Id="FilesInUse" Width="370" Height="270" Title="Your product name">
    <Control Id="Retry" Type="PushButton" X="304" Y ="243" Width="56" Height="17" Text="Retry" Default="yes" Cancel="yes">
      <Publish Event="EndDialog" Value="Retry">1</Publish>
    </Control>
    <Control Id="Ignore" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Ignore">
      <Publish Event="EndDialog" Value="Ignore">1</Publish>
    </Control>
    <Control Id="Exit" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Exit">
      <Publish Event="EndDialog" Value="Exit">1</Publish>
    </Control>
    <Control Id ="InUseFiles" Type="ListBox" Width="300" Height="150" X="30" Y ="60" Property="FileInUseProcess" Sorted="yes" TabSkip="yes" />
  </Dialog>
</UI>
</Fragment>

您只需使用标签将此对话框引用到您的自定义安装对话框中

<DialogRef Id="FilesInUse" />

提到的所有标签都是ICE20 对话要求的一部分

希望这可以帮助。祝你今天过得愉快。

于 2013-12-20T22:32:37.127 回答
2

好的,我只是花了一些时间试图弄清楚如何解决这个问题。

虽然在建议的线程中有一些很好的参考资料,但我认为该FilesInUse对话框更具体地需要自定义,所以我决定为这个问题写一个更具体的解决方案。

看,问题是自动MSI使用对话框,因此如果您尝试以某种方式更改它,如果您从其他文件引用自定义对话框,则会FilesInUse出现错误,例如FilesInUse对话框表中不存在或表中重复对话框。FilesInUse

我发现工作的解决方案根本不用于DialogRefWix 的FilesInUse对话框,而是在主 UI 文件(我通常放在DialogRef的位置FilesInUse)中制作我的自定义对话框并将其命名为FilesInUse.

希望这可以帮助其他有同样问题的人。

于 2012-05-04T14:27:14.257 回答
1

如果在命令行上构建:light.exe -sice:ICE20...

If working in Visual Studio: Right click your setup project, select "Properties", Select "Tool settings" on left side of screen, Add "ICE20" to the "Suppress Specific ICE validation:" edit box.

于 2020-01-22T20:28:57.343 回答
0

在此处查看相关问题和答案:WiX 替换对话框

用户 Yan Sklyarenko 在 2011 年 3 月 25 日回答:

几篇文章可以帮助你:

WiX 教程

尼尔·斯莱特霍尔姆的文章

您应该在那里找到您的案件所需的所有信息。

用户 Bob Arnson 在 2011 年 3 月 25 日回答:

请参阅 WiX.chm 中“自定义内置 WixUI 对话框集”主题中的“更改内置对话框集的 UI 序列”。

于 2011-05-04T05:49:09.517 回答
0

另一个问题是,在“程序和功能”中单击“卸载”时不会显示自定义 FilesInUse 对话框,因为卸载是使用 UILevel 3 运行的,因此只会显示内置的 FilesInUse。

要解决此问题,请将其包含在您的 product.wxs 中:

<Property Id="ARPNOREMOVE" Value="1" />

然后,当用户按下程序和功能中的更改(或修改)按钮时,维护对话框将有一个删除按钮,他们可以用来卸载,这将显示自定义对话框。像 Visual Studio 这样的产品只有一个更改/修改按钮。

另一件事是,如果卸载键没有 ModifyPath 设置,应用程序和功能 (Windows 10) 将禁用修改按钮。它应该设置为

MsiExec.exe /I{<yourproductcode>}

您的引导程序将需要执行此操作。不确定MSI是否可以设置它。

于 2018-07-19T23:33:13.000 回答