繁体   English   中英

如何通过自定义操作以编程方式 go 到 MSI 安装程序中的下一个屏幕?

[英]How to programmatically go to the next screen in the MSI installer from a custom action?

我有一个 WiX 自定义对话框ConfigDlg ,里面有我自己的控件:

  <Fragment>    
    <UI Id="My_WixUI_Mondo">

      <Publish Dialog="ConfigDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish>
      <Publish Dialog="ConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

    </UI>
  </Fragment>

我需要对 Next 按钮进行编程以检查用户在我的 ConfigDlg 中输入的内容,如果此类检查失败,则禁止“Next”屏幕。 所以我改变了我的 XML 来调用我的idCA_NextBtn自定义操作:

  <Fragment>    
    <UI Id="My_WixUI_Mondo">

      <Publish Dialog="ConfigDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish>
      <Publish Dialog="ConfigDlg" Control="Next" Event="DoAction" Value="idCA_NextBtn">1</Publish>

    </UI>
  </Fragment>

在哪里:

<Binary Id="caBinDll" SourceFile="$(var.SourceFldrBld)ca_Installer.dll" />
<CustomAction Id="idCA_NextBtn" Execute="immediate" BinaryKey="caBinDll" DllEntry="caNextButton" Return="check" />

我的caNextButton function 在自定义操作 DLL 被调用,但我不知道如何从它前进到下一个屏幕(或VerifyReadyDlg ):

extern "C" UINT APIENTRY caNextButton(MSIHANDLE hInstall)
{
    return ERROR_SUCCESS;
}

还是模拟?

  <Publish Dialog="ConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

控件可以有多个 ControlEvents(发布元素)并且按顺序处理。 您要做的是首先调用自定义操作并将 SomeProperty 设置为 null 或 1 然后有两个互斥事件。

发布 DoAction CustomActionName 条件 1 (true/always)

发布 SpawnDialog CustomBrandedMessageBoxDialog Condition Not SomeProperty

发布 NewDialog VerifyReadyDlgCondition SomeProperty

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM