当我的自定义对话框从我的 MSI 中的自定义操作脚本中显示时,如何预填充编辑框?
How to prefill edit boxes when my custom dialog is shown from the custom action script in my MSI?
我正在使用 WiX 在我的安装程序中创建自定义 dialog/page,基于 WixUI_Mondo。自定义对话框有编辑控件,类似这样:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="ConfigDlg" Width="370" Height="270" Title="!(loc.SetupTypeDlg_Title)" >
<Control Id="idTxt11" Type="Text" X="20" Y="65" Width="60" Height="16" Text="Name:" />
<Control Id="idEdt11" Type="Edit" X="90" Y="60" Width="120" Height="20" Default="yes" Property="PROP_NAME" />
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="!(loc.WixUINext)" />
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
单击“下一步”按钮时,我可以从我的自定义操作 DLL(用 C++ 编写)中读取这些控件,方法是这样调用它:
<Publish Dialog="ConfigDlg" Control="Next" Event="DoAction" Value="idCA_NextBtn">1</Publish>
但我还需要在页面首次显示时预先填充这些编辑框(通过从注册表中读取这些值)。如果有人正在升级或修复我的软件,可能需要这样做。
问题是,如何通过自定义操作执行此操作?
对于您需要从注册表中读取的每个 属性(对于 upgrades/repairs),只需添加一个 <RegistrySearch>
元素来填充这些属性。
我正在使用 WiX 在我的安装程序中创建自定义 dialog/page,基于 WixUI_Mondo。自定义对话框有编辑控件,类似这样:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="ConfigDlg" Width="370" Height="270" Title="!(loc.SetupTypeDlg_Title)" >
<Control Id="idTxt11" Type="Text" X="20" Y="65" Width="60" Height="16" Text="Name:" />
<Control Id="idEdt11" Type="Edit" X="90" Y="60" Width="120" Height="20" Default="yes" Property="PROP_NAME" />
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Text="!(loc.WixUINext)" />
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
单击“下一步”按钮时,我可以从我的自定义操作 DLL(用 C++ 编写)中读取这些控件,方法是这样调用它:
<Publish Dialog="ConfigDlg" Control="Next" Event="DoAction" Value="idCA_NextBtn">1</Publish>
但我还需要在页面首次显示时预先填充这些编辑框(通过从注册表中读取这些值)。如果有人正在升级或修复我的软件,可能需要这样做。
问题是,如何通过自定义操作执行此操作?
对于您需要从注册表中读取的每个 属性(对于 upgrades/repairs),只需添加一个 <RegistrySearch>
元素来填充这些属性。