[英]How do I use the OrignalDatabase from MSI Installer in WIX and pass it to the C++ custom action code
[英]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.