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

人气:892 发布:2022-10-16 标签: wix visual-studio-2019

问题描述

我想通过自定义对话框自定义Sequence 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的损坏的外键(正如您将看到的那样,它具有进入DialogControl表的外键)。

对话框序列:Here is an example on customizing WiX dialog sequence。看看它是否澄清了一些事情。Here is a sample on custom WiX dialogs。

623