There are several ways to do it apparent, but this is what works for
me...

Set up your control up like this...
<Control Id="CmbSQLServerInstance" Property="SQLSERVERINSTANCE"
Type="ComboBox" Height="15" Width="140" X="14" Y="93" Text="Ppphhh"
ComboList="yes" ToolTip="The instance of SQL Server you would like to
attach to.">          
          <ComboBox Property="SQLSERVERINSTANCE">
            <ListItem Value="MSSQLSERVER"/>            
          </ComboBox>
    </Control>

There must be at least 1 dummy ListItem, otherwise the appropriate table
will not be created. 
As you can see mine is MSSQLSERVER. In VBscript here is the abridged
version of what I do...

Dim oView
      
      ' open and execute a view to the ComboBox table      
      Set oView = Session.Database.OpenView("SELECT * FROM `ComboBox`")
      oView.Execute
      
      ' Delete the dummy record
      DeleteItemFromComboBox oView


You can add a "where property =..." if you have more than one Combobox
within your project.
Create a stringlist of sorts, then....

       intI = 0   
        For Each sSQLInstance In sSQLInstances

          AddItemToComboBox oView, Session.Property("ComputerName") &
"\" & sSQLInstance, intI
          
          intI = intI + 1          
        Next


And here are the functions I use...

Function DeleteItemFromComboBox( oComboBox )
        Set oListItem = oComboBox.Fetch()
      
        LogSessionInfo "GetSQLServerInstancesAction - Deleting item" 
        oComboBox.Modify msiViewModifyDelete, oListItem
        
        oComboBox = Nothing
      End Function

Function AddItemToComboBox( oComboBox, oItem, iItemNo )
        ' ComboBox record fields are Property, Order, Value, Text 
        LogSessionInfo "GetSQLServerInstancesAction - Adding " & oItem &
" to ComboBox."
        Set oReccombo = Session.Installer.CreateRecord(4)
        oReccombo.StringData(1) = "SQLSERVERINSTANCE"
        oReccombo.IntegerData(2) = iItemNo
        oReccombo.StringData(3) = oItem
        oReccombo.StringData(4) = oItem        
        oComboBox.Modify msiViewModifyInsertTemporary, oReccombo
      End Function

Function LogSessionInfo(msg) 
      Const MESSAGE_TYPE_INFO = &H04000000
      Dim rec
        Set rec = Session.Installer.CreateRecord(1) 
        rec.StringData(0) = msg
        LogSessionInfo = Session.Message(MESSAGE_TYPE_INFO, rec)
      End Function

There are probably better ways, if so hopefully someone on here will
point out my mistakes.

I hope this helps. I'm hoping to do something similar for ListViews.

Dominique


-----Original Message-----
From: Uma Harano [mailto:uhar...@esri.com] 
Sent: 12 October 2009 23:59
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] How to populate a list box in a msi dialog
duringruntime

Hi,
I need to populate a ListBox control in a MSI dialog at runtime. What is
the best way to do this?
Thanks!
Uma-
AMX

AMX UK
Auster Road
Clifton Moor
York, North Yorkshire
United Kingdom
YO30 4GD

+44 (0) 1904 343100     office
+44 (0) 1904 343101     fax

AMX South
6th Floor Salisbury House
London Wall
London
United Kingdom
EC2M 5QQ

+44 (0) 2076 529450     office
+44 (0) 8701 991661     fax

AMX Belgium
Boerenkrijglaan, 96a
B-2260
Westerlo
Belgium


+ 32 (0) 1454 2763      office
+ 32 (0) 1454 2766      fax

######################################################################
Attention: 
This e-mail message is privileged and confidential. If you are not the 
intended recipient please delete the message and notify the sender. 
Any views or opinions presented are solely those of the author.

This email was scanned and cleared by NetIQ MailMarshal.
######################################################################

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to