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