Wix自定义对话框错误:ICE03:不是有效的外键Visual Studio 2019

问题描述

我想通过一个自定义对话框来自定义序列wix安装程序,在继续安装之前,我可以在其中处理来自用户的输入

我用

  <UI Id="WixUI_Minimal">
   <TextStyle Id="WixUI_Font_normal" FaceName="Tahoma" Size="8" />
   <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
   <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />

   <Property Id="DefaultUIFont" Value="WixUI_Font_normal" />
   <Property Id="WixUI_Mode" Value="Minimal" />

   <!--Define all needed dialogs-->
   <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="WelcomeDlg" />
  
   <DialogRef Id="UserRegDialog" />
   <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="UserRegDialog">1</Publish>
   <Publish Dialog="UserRegDialog" Control="" Event="NewDialog" Value="PrepareDlg">1</Publish>
   <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">2</Publish>
   <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg" Order="2">2</Publish>
   <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg" Order="2">2</Publish>
   <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg" Order="2">2</Publish>
   <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">2</Publish>

   <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">2</Publish>

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

  </UI>

我的自定义内容是:

其中UserRegDialog是我的自定义对话框

  <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="UserRegDialog">1</Publish>
  <Publish Dialog="UserRegDialog" Control="" Event="NewDialog" Value="PrepareDlg">1</Publish>

但是当我建立设置时,我遇到一个问题:

ICE03:不是有效的外键;表:ControlEvent,列:Control_,键:UserRegDialog.Next.NewDialog.PrepareDlg。

解决方法

ICE&ICE3 ICE03通常为explained with an example here

参照完整性 :您没有为 UserRegDialog 留空控制字段。你为什么这样做?实际上,这可能会导致ICE03,因为它构成了ControlEvent table中损坏的外键(如您所见,它在 Dialog {{1 }} 表)。

对话框顺序 Here is an example on customizing WiX dialog sequence。看看它是否可以澄清。 Here is a sample on custom WiX dialogs