carlldev

I use a subroutine to do the actual insert:


Sub AddToComboBox(ByVal ComboProp, ByVal ComboOrder, ByVal ComboValue, ByVal
ComboText)
    Dim query
    Dim view

    query = "INSERT INTO `ComboBox` " _
             & "(`Property`, `Order`, `Value`, `Text`) " _
             & "VALUES ('" & ComboProp & "', " & ComboOrder _
             & ", '" & ComboValue & "', '" & ComboText & "') TEMPORARY"

    '
    ' Creates the view object based on our query
    '
    set view = Session.Database.OpenView(query)

    '
    ' Invoke the query to add the combo value
    '
    view.Execute
End Sub


and invoke it like so:

function InitializeWebserverCombo()
    Dim ThisServer
    Dim Website
    dim i
    dim s

    Set ThisServer = GetObject("IIS://localhost/W3SVC")

    i = 1    
    For Each Website In ThisServer
        If Website.Class = "IIsWebServer" Then
            call AddToComboBox("WEBSITE", i, Website.Name,
Website.ServerComment)
            i = i + 1
        End If
    Next
End Function


Regards

Rob
 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of carlldev
Sent: Wednesday, January 31, 2007 1:12 PM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Adding records to MSI on the fly


(Wix3, WIN2K3)

Sorry if this is posting a duplicate, but I can't get the solutions from any
of the posts to work...
I'm trying to add the details of installed Websites to a combobox on the
fly. I can see the custom action being executed, but the records are not
being added to the table. I know this because the combobox still only has
the one value ("_DEF_").
The vbscript works too, I have tested it with msgbox's and they return the
correct values.

Can anyone help? Thanks in advance...


<!-- CUSTOM ACTIONS -->
=================================================================
The Custom action, property and binary entries in product.wxs
=================================================================
<CustomAction Id="CAGETWEBSITES" BinaryKey="GETSITESSCRIPT"
Execute="immediate" VBScriptCall="GetWebSites" Return="check" /> <Binary
Id="GETSITESSCRIPT" SourceFile="SCRIPTS.VBS" /> <Property
Id="TARGETWEBCOMBO" Value="_DEF_" />

=================================================================
The dialog with the combobox
=================================================================
<Dialog Id="ConfigureWebsiteDlg" X="50" Y="50" Width="370" Height="270"
Title="[ProductName] Setup">
                        <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0"
Width="370"
Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
                        <Control Id="Title" Type="Text" X="15" Y="6"
Width="200" Height="15"
TabSkip="yes" Transparent="yes" Text="{\WixUI_Font_Title}Configure Website"
/>
                        <Control Id="Description" Type="Text" X="25" Y="23"
Width="280"
Height="10" TabSkip="yes" Transparent="yes" Text="Web site configuration" />
                        <Control Id="lineTopDivider" Type="Line" X="0"
Y="44" Width="370"
Height="2" />
                        <Control Id="Description2" Type="Text" X="20" Y="60"
Width="304"
Height="25" TabSkip="yes" Text="Choose the Web Site under which to install
the Web Service. Leave blank for the Default Web Site." />
                        <Control Id="Description3" Type="Text" X="20" Y="84"
Width="304"
Height="33" TabSkip="yes" Text="Also, you may enter the User and Password to
be used for anonymous access to the Web Service. Leave blank to use the
default account or use the syntax domain\user or .\localuser" />
                        <Control Id="lblWebsite" Type="Text" X="57" Y="132"
Width="70"
Height="16" TabSkip="yes" Text="Website" />
                        <Control Id="cmbWebsite" Type="ComboBox" X="132"
Y="130" Width="124"
Height="16" TabSkip="no" Property="TARGETWEBCOMBO">
                                <ComboBox Property="TARGETWEBCOMBO">
                                        <ListItem Text="_DEF_" Value="_DEF_"
/>
                                </ComboBox>
                        </Control>
                        <Control Id="lblUsername" Type="Text" X="57" Y="152"
Width="70"
Height="15" TabSkip="yes" Text="Username" />
                        <Control Id="txtUsername" Type="Edit" X="132"
Y="150" Width="124"
Height="15" TabSkip="no" Property="WS_BATCHNUMBERS_USER" />
                        <Control Id="lblPassword" Type="Text" X="57" Y="173"
Width="70"
Height="15" TabSkip="yes" Text="Password" />
                        <Control Id="txtPassword" Type="Edit" X="132"
Y="170" Width="124"
Height="15" TabSkip="no" Password="yes" Property="WS_BATCHNUMBERS_PASS" />
                        <Control Id="lineBottomDivider" Type="Line" X="0"
Y="234" Width="370"
Height="2" />
                        <Control Id="Back"   Type="PushButton" X="180"
Y="243" Width="56"
Height="17" Text="&amp;Back" />
                        <Control Id="Next"   Type="PushButton" X="236"
Y="243" Width="56"
Height="17" Text="&amp;Next" />
                        <Control Id="Cancel" Type="PushButton" X="304"
Y="243" Width="56"
Height="17" Text="Cancel" Cancel="yes" >
                                <Publish Event="SpawnDialog"
Value="CancelDlg">1</Publish>
                        </Control>
                </Dialog>


=================================================================
SCRIPT.VBS
=================================================================
Const ERROR_SUCCESS = 0
Const ERROR_INSTALL_FAILURE = 1603

Const msiViewModifyInsert = 1
Const msiViewModifyInsertTemporary = 7
Const IDOK = 1

Function GetWebSites()
    Dim objIIS, oView, oSite, oServer, oReccombo
    Dim r
    
    On Error Resume Next
    Set objIIS = GetObject("IIS://localhost/W3SVC")
    
    
    If Err.Number <> 0 Then
        MsgBox "Unable to open IIS W3SVC Root object - please ensure that
IIS is running" & vbCrLf & _
         "    - Error Details: " & Err.Description & " [Number:" &
Hex(Err.Number) & "]", vbCritical, "Error"
        GetWebSites = ERROR_INSTALL_FAILURE
        Exit Function
    Else
        ' OPEN AND EXECUTE A VIEW TO THE LISTBOX TABLE
        Set oView = Session.Database.OpenView("SELECT * FROM 'ComboBox'")
        oView.Execute
        r = 1
        ' ITERATE THROUGH THE SITES
        For Each oSite in objIIS
            If oSite.Class = "IIsWebServer" Then
                r = r + 1
                'get the properties
                description = oSite.ServerComment
                For Each item in oSite.ServerBindings
                    strServerBinding = item
                    BindingArray = Split(strServerBinding, ":", -1, 1)
                    ipaddress = BindingArray(0)
                    port = BindingArray(1)
                    ' only do it for the first item (don't know how to get
it without "for")
                    Exit For
                Next
                path = oSite.ADsPath
                props = description & ";" + path & ";" & port & ";" & ip
                                'msgbox props
                ' make the first site the default
                if r = 1 Then
                    Session.Property("TARGETWEBCOMBO") = description
                End if
                
                '
                '   ComboBox record fields are Property, Order, Value, Text
                '
                Set oReccombo = Installer.CreateRecord(4)
                oReccombo.StringData(1)  = "TARGETWEBCOMBO"
                oReccombo.IntegerData(2) = r
                oReccombo.StringData(3)  = props
                oReccombo.StringData(4)  = description
                oView.Modify msiViewModifyInsertTemporary, oReccombo
                Database.Commit
            End If
        Next
        oView.Close
        
        'return success to MSI
        GetWebSites = ERROR_SUCCESS
    End If
    'clean up
    Set objIIS = Nothing
    Set oView = Nothing
End Function
--
View this message in context:
http://www.nabble.com/Adding-records-to-MSI-on-the-fly-tf3150241.html#a87341
73
Sent from the wix-users mailing list archive at Nabble.com.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job
easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users




-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to