我有一个修改过的FilesInUse对话框。只是将它包含在项目中并在UI中更改引用也没有用 - 我在构建安装项目时得到“ICE20:标准对话框:'对话表中找不到'FilesInUse'”错误。
浏览网络我找到了一条建议 - 为ICE20抑制ICE验证。好吧,使用这样的设置构建项目工作正常,msi也可以正常工作,但我不确定这是一个很好的解决方案。
另一个建议是修改FilesInUse并从引用中删除WixUIExtension,但据我所知这样,我最终会将所有需要的对话框文件复制到我的项目中。这是我想避免的。
那么,可以做些什么来正确地在WIX项目中包含我的自定义FilesInUse?
答案 0 :(得分: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>
您只需使用标记
将此Dialog引用到Custom InstallDialog中<DialogRef Id="FilesInUse" />
提到的所有标签都是ICE20 Dialog Requierements
的一部分希望这会有所帮助。祝你有愉快的一天。
答案 1 :(得分:2)
好的,我只是花了一些时间试图弄清楚如何解决这个问题。
虽然在建议的线程中有一些很好的引用,但我认为FilesInUse
对话框对于自定义更具体,所以我决定为这个问题编写一个更具体的解决方案。
请注意,问题是MSI
会自动使用FilesInUse
对话框,因此如果您尝试以某种方式更改它,则会在对话表中出现FilesInUse
不存在的错误或重复如果您从其他文件引用自定义对话框,则在表格中显示FilesInUse
对话框。
我发现工作的解决方案是根本不使用DialogRef
到Wix的FilesInUse
对话框,而是在主UI文件中创建自定义对话框(我通常会将DialogRef
放到FilesInUse
)并将其命名为FilesInUse
。
希望这有助于其他人遇到同样的问题。
答案 2 :(得分:1)
如果在命令行上构建:light.exe -sice:ICE20 ...
如果在Visual Studio中工作:右键单击安装项目,选择“属性”,在屏幕左侧选择“工具设置”,将“ ICE20”添加到“禁止特定ICE验证:”编辑框。
答案 3 :(得分:0)
请在此处查看相关问题和答案:WiX replace dialog
用户Yan Sklyarenko于2011年3月25日回答:
一些文章可以帮助你:
您应该在那里找到您所需的所有信息。
用户Bob Arnson于2011年3月25日回答:
请参阅主题中的“更改内置对话框集的UI顺序” WiX.chm中的“自定义内置WixUI对话框集”。
答案 4 :(得分:0)
另一个麻烦是,由于在UILevel 3上运行了卸载,因此在“程序和功能”中单击“卸载”时,自定义FilesInUse对话框将不会显示,因此将仅显示内置的FilesInUse。
要解决此问题,请在您的product.wxs中将其包括在内:
<Property Id="ARPNOREMOVE" Value="1" />
然后,当用户按下“程序和功能”中的“更改”(或“修改”)按钮时,“维护”对话框将具有一个可用于卸载的“删除”按钮,并显示自定义对话框。像Visual Studio这样的产品仅具有“更改/修改”按钮。
另一件事是,如果“卸载”键没有ModifyPath设置,则应用程序和功能(Windows 10)将禁用“修改”按钮。应该设置为
MsiExec.exe /I{<yourproductcode>}
您的引导者将需要执行此操作。不确定MSI是否可以设置。