This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Property going missing in UI - Windows 7 / 2008 issue
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 06, 2010
08:54 AM
Property going missing in UI - Windows 7 / 2008 issue
Hi
I recently implemented a web site selection dialog based on the advise I got from this forum. The dialog works like a charm, where my dropdown shows all the sites installed for the pc.
The vbscript routine that gets the sites works well for IIS 6, 7 & 7.5. I tested it. The routine populates a property called WEBSITE_DROPDOWN, code snippet at end of post.
It works 100% on Windows 2003, but for some reason my dropdown is empty on Windows 7 and 2008! There are no errors in my log file. The WEBSITE_DROPDOWN property is in the SecureCustomProperties property.
Please help!
CODE SNIPPET:
On Error Resume Next
Dim objView
Dim objDB
Dim objInstaller
Dim objRecord
Dim objW3SVC
Dim objIisWebSite
Dim lngOrder
Set objDB = Session.Database
Set objInstaller = Session.Installer
Set objView = objDB.OpenView("select * from ComboBox")
lngOrder = 1
if Session.Property("VersionNT")<600 then ' Windows 2003
Set objW3SVC = GetObject("IIS://localhost/W3SVC")
For Each objIisWebSite In objW3SVC
If objIisWebSite.Class = "IIsWebServer" Then
If LCase(objIisWebSite.ServerComment) <> "administration web site" Then
' add site name to ComboBox table (which is used by our dialog ComboBox)
Set objRecord = objInstaller.CreateRecord(4)
objRecord.StringData(1) = "WEBSITE_DROPDOWN" ' property name
objRecord.IntegerData(2) = lngOrder ' order
objRecord.StringData(3) = objIisWebSite.ServerComment ' value
objRecord.StringData(4) = objIisWebSite.ServerComment
Call objView.Execute(objRecord) ' now add the record to the table
Call objView.Modify(7, objRecord) ' (7 = msiViewModifyInsertTemporary)
lngOrder = lngOrder + 1
End If
End If
Next
Else
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSites = oIIS.InstancesOf("Site")
For Each oSite In oSites
Set objRecord = objInstaller.CreateRecord(4)
objRecord.StringData(1) = "WEBSITE_DROPDOWN" ' property name
objRecord.IntegerData(2) = lngOrder ' order
objRecord.IntegerData(3) = oSite.Name
objRecord.StringData(4) = oSite.Name
Call objView.Execute(objRecord) ' now add the record to the table
Call objView.Modify(7, objRecord) ' (7 = msiViewModifyInsertTemporary)
lngOrder = lngOrder + 1
Next
end if
Call objView.Close
I recently implemented a web site selection dialog based on the advise I got from this forum. The dialog works like a charm, where my dropdown shows all the sites installed for the pc.
The vbscript routine that gets the sites works well for IIS 6, 7 & 7.5. I tested it. The routine populates a property called WEBSITE_DROPDOWN, code snippet at end of post.
It works 100% on Windows 2003, but for some reason my dropdown is empty on Windows 7 and 2008! There are no errors in my log file. The WEBSITE_DROPDOWN property is in the SecureCustomProperties property.
Please help!
CODE SNIPPET:
On Error Resume Next
Dim objView
Dim objDB
Dim objInstaller
Dim objRecord
Dim objW3SVC
Dim objIisWebSite
Dim lngOrder
Set objDB = Session.Database
Set objInstaller = Session.Installer
Set objView = objDB.OpenView("select * from ComboBox")
lngOrder = 1
if Session.Property("VersionNT")<600 then ' Windows 2003
Set objW3SVC = GetObject("IIS://localhost/W3SVC")
For Each objIisWebSite In objW3SVC
If objIisWebSite.Class = "IIsWebServer" Then
If LCase(objIisWebSite.ServerComment) <> "administration web site" Then
' add site name to ComboBox table (which is used by our dialog ComboBox)
Set objRecord = objInstaller.CreateRecord(4)
objRecord.StringData(1) = "WEBSITE_DROPDOWN" ' property name
objRecord.IntegerData(2) = lngOrder ' order
objRecord.StringData(3) = objIisWebSite.ServerComment ' value
objRecord.StringData(4) = objIisWebSite.ServerComment
Call objView.Execute(objRecord) ' now add the record to the table
Call objView.Modify(7, objRecord) ' (7 = msiViewModifyInsertTemporary)
lngOrder = lngOrder + 1
End If
End If
Next
Else
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSites = oIIS.InstancesOf("Site")
For Each oSite In oSites
Set objRecord = objInstaller.CreateRecord(4)
objRecord.StringData(1) = "WEBSITE_DROPDOWN" ' property name
objRecord.IntegerData(2) = lngOrder ' order
objRecord.IntegerData(3) = oSite.Name
objRecord.StringData(4) = oSite.Name
Call objView.Execute(objRecord) ' now add the record to the table
Call objView.Modify(7, objRecord) ' (7 = msiViewModifyInsertTemporary)
lngOrder = lngOrder + 1
Next
end if
Call objView.Close
(4) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 06, 2010
11:55 AM
Here are some troubleshooting ideas that should help to diagnose this problem further:
1. Try putting in some default values in the ComboBox table as a test. This will verify that the ComboBox items show up correctly as long as the table is populated. If the default values don't show up, then the problem may be that the height of the ComboBox is not big enough.
2. Put in some msgbox calls in your vbscript to verify that it does find the website information when running in a custom action in your MSI (I know you have verified it outside of the MSI, but this is just a sanity check).
3. Maybe try testing your MSI by launching msiexec from an elevated command prompt or by turning UAC off.
-Ajay
1. Try putting in some default values in the ComboBox table as a test. This will verify that the ComboBox items show up correctly as long as the table is populated. If the default values don't show up, then the problem may be that the height of the ComboBox is not big enough.
2. Put in some msgbox calls in your vbscript to verify that it does find the website information when running in a custom action in your MSI (I know you have verified it outside of the MSI, but this is just a sanity check).
3. Maybe try testing your MSI by launching msiexec from an elevated command prompt or by turning UAC off.
-Ajay
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 06, 2010
05:20 PM
VBScript Custom Actions in general ( and certainly ones that begin with On Error Resume Next ) never end well.
If you need to write unmanaged custom actions, I suggest C++ or InstallScript. InstallSite has a DLL that will help in collection enumeration. If you can take a dependency on .NET 2.0(+) then I reccomend C# or VB.NET DTF.
You will be able to do proper exception handling and debugging of your code. Anything you do to fix your vbscript problem today is frankly just a bandaid.
If you need to write unmanaged custom actions, I suggest C++ or InstallScript. InstallSite has a DLL that will help in collection enumeration. If you can take a dependency on .NET 2.0(+) then I reccomend C# or VB.NET DTF.
You will be able to do proper exception handling and debugging of your code. Anything you do to fix your vbscript problem today is frankly just a bandaid.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 06, 2010
10:08 PM
In the words of the indomitable Homer Simpson - DOH!
A simple bug caused my problem:
objRecord.IntegerData(3) = oSite.Name
should be
objRecord.StringData(3) = oSite.Name
Ajay's approach helped me find the issue, but ultimately Christopher gave me the idea of getting rid of the on error resume next line.
It is weird how one can stare blindly at a piece of code and not see the obvious issue...
A simple bug caused my problem:
objRecord.IntegerData(3) = oSite.Name
should be
objRecord.StringData(3) = oSite.Name
Ajay's approach helped me find the issue, but ultimately Christopher gave me the idea of getting rid of the on error resume next line.
It is weird how one can stare blindly at a piece of code and not see the obvious issue...
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 06, 2010
10:21 PM
I suggest reading:
http://blogs.msdn.com/b/robmen/archive/2004/05/20/136530.aspx
The advice is over 6 years old and every bit true today. This custom action will fail you(r customer) again one day.
http://blogs.msdn.com/b/robmen/archive/2004/05/20/136530.aspx
The advice is over 6 years old and every bit true today. This custom action will fail you(r customer) again one day.