Wix安装程序-ICE03:不是有效的外键
我真的在努力找出这些错误。我正在尝试使用以下顺序构建设置: 欢迎屏幕 许可证屏幕 范围屏幕 浏览屏幕 功能屏幕 自定义屏幕 快捷屏幕 安装概览屏幕 安装/进度屏幕 终筛 我想我应该一个接一个地做这些事情,而不是一次就跳进停车场,我甚至可以构建欢迎、许可、范围屏幕 然后,我试图包括功能屏幕,但我有一个错误,我将在下面解释。奇怪的是,当我将FeatureDlg更改为CustomizeDlg时,它就可以工作了 然后我尝试在定制LG之前引入BrowseDlg,但现在我在尝试使用FeaturesDlg时不断出现类似错误 我是Wix的新手,所以如果我遗漏了一些明显的东西,请道歉。我正在使用VS2013来构建这个 Wxs的UI标记中包含以下代码Wix安装程序-ICE03:不是有效的外键,wix,windows-installer,Wix,Windows Installer,我真的在努力找出这些错误。我正在尝试使用以下顺序构建设置: 欢迎屏幕 许可证屏幕 范围屏幕 浏览屏幕 功能屏幕 自定义屏幕 快捷屏幕 安装概览屏幕 安装/进度屏幕 终筛 我想我应该一个接一个地做这些事情,而不是一次就跳进停车场,我甚至可以构建欢迎、许可、范围屏幕 然后,我试图包括功能屏幕,但我有一个错误,我将在下面解释。奇怪的是,当我将FeatureDlg更改为CustomizeDlg时,它就可以工作了 然后我尝试在定制LG之前引入BrowseDlg,但现在我在尝试使用FeaturesDlg时不
<DialogRef Id="BrowseDlg" />
<DialogRef Id="DiskCostDlg" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FatalError" />
<DialogRef Id="FilesInUse" />
<DialogRef Id="MsiRMFilesInUse" />
<DialogRef Id="PrepareDlg" />
<DialogRef Id="ProgressDlg" />
<DialogRef Id="ResumeDlg" />
<DialogRef Id="UserExit" />
<!--<DialogRef Id="FeaturesDlg" />-->
<DialogRef Id="CustomizeDlg" />
<!-- Welcome -->
<Publish Dialog="WelcomeDlg"
Control="Next"
Event="NewDialog"
Value="LicenseAgreementDlg">NOT Installed</Publish>
<!-- License -->
<Publish Dialog="LicenseAgreementDlg"
Control="Back"
Event="NewDialog"
Value="WelcomeDlg">1</Publish>
<Publish Dialog="LicenseAgreementDlg"
Control="Next"
Event="NewDialog"
Value="InstallScopeDlg">LicenseAccepted = "1"</Publish>
<!-- Scope -->
<Publish Dialog="InstallScopeDlg"
Control="Back"
Event="NewDialog"
Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="InstallScopeDlg"
Control="Next"
Event="NewDialog"
Value="BrowseDlg">1</Publish>
<!-- BrowseDlg -->
<Publish Dialog="BrowseDlg"
Control="Back"
Event="NewDialog"
Value="InstallScopeDlg">1</Publish>
<Publish Dialog="BrowseDlg"
Control="Next"
Event="NewDialog"
Value="CustomizeDlg">1</Publish>
<!-- Features -->
<Publish Dialog="CustomizeDlg"
Control="Back"
Event="NewDialog"
Value="BrowseDlg">1</Publish>
<Publish Dialog="CustomizeDlg"
Control="Next"
Event="NewDialog"
Value="CustomFeaturesDlg">1</Publish>
<!--Custom Features--><!--
<Publish Dialog="CustomFeaturesDlg"
Control="Back"
Event="NewDialog"
Value="FeaturesDlg">1</Publish>
<Publish Dialog="CustomFeaturesDlg"
Control="Finish"
Event="EndDialog"
Value="Return">1</Publish>-->
<!-- Finished -->
<Publish Dialog="ExitDialog"
Control="Finish"
Event="EndDialog"
Value="Return"
Order="999">1</Publish>
<UIRef Id="WixUI_Common" />
我不太担心最后一个。。。但是“外国”的关键错误让我抓狂
谁能给我指出正确的方向吗
谢谢。您可以查看一些总体ICE信息(如果您不确定ICE检查的功能,建议阅读)正如您所看到的,在这个特定的ICE中可能存在许多不同的错误,因为它涉及到整个数据库引用完整性(外键在链接表中匹配以便可以联接它们)
我从来没有以这种方式处理过Wix中的对话框,我总是使用它-它很好而且简单,并且能神奇地自动完成任务。但是,我已经按顺序处理了Installshield对话框,始终需要同步每个对话框上的下一个和上一个按钮事件,以便在按下按钮时打开正确的对话框顺序。它的工作原理类似于排序的双链接列表,带有指向下一个对话框的适当指针。如果把对话搞砸了,对话就会随意出现——这会变成非常奇怪的行为。例如,一个按钮可能根本不起作用,它可能会将您带到错误的对话框,甚至可能会过早地启动整个安装
总之:您需要检查已编译的MSI,以验证对话框序列是否正常工作,包括运行安装程序时的交互操作,以及使用或检查已编译的MSI。也许也有帮助?我见过像这样的外键问题与大小写甚至空格有关,或者是真正的不匹配。我想你应该使用InstallDirDlg而不是BrowseDlg。BrowseDlg只是文件夹选择对话框,当您想要更改默认安装位置时,它会从InstallDirDlg打开。它包含确定和取消按钮(没有返回和下一步) 看看这里的例子:(别忘了添加WIXUI\u INSTALLDIR属性-请参阅下面的注释)
对于CustomFeaturesDlg,很可能是同一个故事。请检查。@thierry你修复了吗?@micmica不幸的是,我不记得我是如何修复的,因为我已经看了这么久,一旦我让它工作起来,我就继续前进,除了更新文件之外,我再也不需要更改它了。对不起,我当时没有更新答案!我记得我把所有对话框的定义都拿出来,然后一个接一个地重新添加,始终确保这些对话框是按照正确的顺序定义的,并且每个按钮都是相应地定义的,没有错误。对不起,我帮不上忙了。对不起,回来耽搁了很久。被推到另一个项目!虽然我理解你所说的关于将每个下一个/上一个按钮链接到有效对话框的内容,但它仍然不能解决我的问题,我认为这与一些按钮在某些对话框中不存在有关,因此我目前正在查看codeplex中的每个单独对话框,以确定哪些按钮可用。使用标准设置不是一个选项,因为我需要自定义对话框包括在内,但非常详细的反馈感谢!关于InstallDirDlg与BrowseDlg,您是正确的。我想在安装过程中显示安装文件夹。那么我应该使用什么对话框呢?我会去检查你提供的链接,看看是否有帮助。谢谢
Error 1 ICE03: Not a valid foreign key; Table: ControlEvent, Column: Control_, Key(s): BrowseDlg.Back.NewDialog.InstallScopeDlg.1
Error 2 ICE03: Not a valid foreign key; Table: ControlEvent, Column: Control_, Key(s): BrowseDlg.Next.NewDialog.CustomizeDlg.1
Error 3 ICE03: Not a valid foreign key; Table: ControlEvent, Column: Control_, Key(s): CustomFeaturesDlg.Finish.EndDialog.Return.1
Error 4 ICE03: Not a valid foreign key; Table: ControlEvent, Column: Control_, Key(s): CustomFeaturesDlg.Back.NewDialog.FeaturesDlg.1
Error 5 ICE17: PushButton: 'Back' of Dialog: 'FeaturesDlg' does not have an event defined in the ControlEvent table. It is a 'Do Nothing' button.