Hello,
I had the same problem.
You can try to do so.
1. Write function on install script like this:
NUMBER hDatabase, hView, hRec;
STRING sQuery;
//open msi database
hDatabase = MsiGetActiveDatabase(hMSI);
//query ListBox to add items in it
sQuery = "SELECT * FROM ListBox WHERE Property='[YOURSPROPERTY]''";
MsiDatabaseOpenView(hDatabase, sQuery, hView);
//create one record
hRec=MsiCreateRecord(4);
// add new item to ListBox
MsiRecordSetString(hRec, 1, "[YOURSPROPERTY]");
MsiRecordSetInteger(hRec, 2, [Number);
MsiRecordSetString(hRec, 3, [YouItem]);
MsiRecordSetString(hRec, 4, [YouItem]);
// to save view
MsiViewModify(hView, MSIMODIFY_INSERT_TEMPORARY, hRec);
//close view
MsiViewClose(hView);
+++++++++++++++++
where [YOURSPROPERTY] is Value ofProperty of you ListBox (see you dialog and Property of control),
[Number] is record number such as 1, 2,....
[YouItem] is item in you list.
This code add only one record to ListBox. You can do loop to add anymore.
2. Create dialog with ListBox and set its Property as YOURSPROPERTY, items are empty.
3. Create Custom Action to call this function (type Run InstallScript code).
4. Insert this Custom Action before your dialog in UI sequence,
It should be work.
Good luck,