You need to insert row into ComboBox table to bind the List values. If you open the msi in ORCA Editor, you can find the msi tables and rows.
You should include EnsureTable element if you don’t use any other ComboBox element in your msi.
<EnsureTable Id="ComboBox"/>
You can insert the rows from Custom action.
static int index = 1;
public static void FillComboBox(Session session, string text, string value)
{
View view = session.Database.OpenView("SELECT * FROM ComboBox");
view.Execute();
Record record = session.Database.CreateRecord(4);
record.SetString(1, "COUNTRIES");
record.SetInteger(2, index);
record.SetString(3, value);
record.SetString(4, text);
view.Modify(ViewModifyMode.InsertTemporary, record);
view.Close();
index++;
}
Inside the Custom action call the FillComboBox
method.
public static ActionResult FillList(Session xiSession)
{
FillComboBox(xiSession, "US", "United States");
FillComboBox(xiSession, "CA", "Canada");
FillComboBox(xiSession, "MX", "Mexico");
return ActionResult.Success;
}
Execute the Custom action in InstallUIsequence before run that Combo Box dialog.
<InstallUISequence>
<Custom Action="INSERT_ROWS" After="AppSearch">Not Installed</Custom>
</InstallUISequence>