Hi,

 

can somebody help me to make choosing website dynamically during the
installation. 

 

But the ListBox is always empty.

 

 

 

 

Here you can see some code snippets:

 

installui.wxi(it's an include):

 

            <Dialog Id="ChooseWebsiteDlg" Width="370" Height="270"
Title="[ProductName] [Setup]" NoMinimize="yes" TrackDiskSpace="yes">

                  <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0"
Width="370" Height="44" TabSkip="no" Text="[BannerBitmap]" />

                  <Control Id="Next" Type="PushButton" X="236" Y="243"
Width="56" Height="17" Default="yes" Text="[ButtonText_Next]">

                        <Publish Event="NewDialog"
Value="LicenseAgreementDlg">1</Publish>

                  </Control>

                  <Control Id="Cancel" Type="PushButton" X="304" Y="243"
Width="56" Height="17" Cancel="yes" Text="[ButtonText_Cancel]">

                        <Publish Event="SpawnDialog"
Value="CancelDlg">1</Publish>

                  </Control>

                  <Control Id="Back" Type="PushButton" X="180" Y="243"
Width="56" Height="17" Text="[ButtonText_Back]">

                        <Publish Event="NewDialog"
Value="CustomizeDlg">1</Publish>

                  </Control>

                  <Control Id="WebSites" Type="ListBox" Sorted="no"
Property="TARGETWEBCOMBO"  X="180" Y="190" Width="100" Height="50" >

                        <Text><![CDATA[TARGETWEBCOMBO]]></Text>

                  </Control>

 

                  <Control Id="BottomLine" Type="Line" X="0" Y="234"
Width="370" Height="0" />

                  <Control Id="BannerLine" Type="Line" X="0" Y="44"
Width="370" Height="0" />

            </Dialog>

 

Install.wxs:

 

            <CustomAction BinaryKey="GETSITESSCRIPT"
Execute="firstSequence" Id="caGetWebSites" VBScriptCall="GetWebSites"
Return="check" />

            <Binary Id="GETSITESSCRIPT" SourceFile="c:\iis.vbs" />

            <InstallExecuteSequence>     

                  <LaunchConditions After="AppSearch" />

                  <Custom Action="caGetWebSites" Sequence="2" />

                  <RemoveExistingProducts After="InstallFinalize" />

            </InstallExecuteSequence>

            <Property Id="TARGETWEBCOMBO" />

            <Property Id="SERVERCOMMENT" />

 

 

 

Iis.vbs:

 

 Const ERROR_SUCCESS = 0

 Const ERROR_INSTALL_FAILURE = 1603

 Const msiViewModifyInsertTemporary = 7

 

 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'")

         Set oPropertyView = Session.Database.OpenView("SELECT * FROM
`Property` WHERE [Property] ='TARGETWEBCOMBO'")

         oView.Execute

         oPropertyView.Execute

         oPropertyView.Fetch

         r = 0

 

         For Each oSite in objIIS

             If oSite.Class = "IIsWebServer" Then

                                                                r = r +
1

                Set oServer=GetObject(oSite.ADsPath)

                'if r = 1 Then

 
Session.Property("TARGETWEBCOMBO")= oSite.Name

 
Session.Property("SERVERCOMMENT") = oServer.Get("ServerComment")

                'End if

                '

                '               ComboBox record fields are Property,
Order, Value, Text

                '

                 Set oReccombo = Session.Installer.CreateRecord(4)

                 oReccombo.StringData(1)  = "TARGETWEBCOMBO"

                 oReccombo.IntegerData(2) = r

                 oReccombo.StringData(3)  = oSite.Name

                ' oReccombo.StringData(3)  =
oServer.Get("ServerComment")

                 oReccombo.StringData(4)  = oServer.Get("ServerComment")

                 oView.Modify msiViewModifyInsertTemporary, oReccombo

 

             End If

         Next

 

         oView.Close

         'return success to MSI

         GetWebSites = ERROR_SUCCESS

     End If

     'clean up

     Set objIIS = Nothing

     Set oView = Nothing

 End Function

 

 

Best Regards

 

Silvio

 

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to