Discussion:
Check if WSE 2.0 is already installed
(too old to reply)
Niels Flensted-Jensen
2004-11-19 10:47:03 UTC
Permalink
Using Visual Studio for putting together my MSI package, I'm having a hard
time setting up a so called "Launch Condition" to check if Web Services
Enhancements 2.0 SP1 is installed. It wants a Component Id which the
documentation says you should find using something like MSI Spy Tool to
locate.

That sounds vague enough as it is, but the Platform SDK doesn't seem to
include such a tool. My best shot is Orca, but where is the ID I'm looking
for?

Any ideas, or is this simply one of those things that I must program my way
out of with a custom installer in .NET?

Thanks,

Niels
Phil Wilson
2004-11-19 15:17:21 UTC
Permalink
This script below should help. It will report component guids and products
using them, so run it on a system with WSE installed. You can also use Orca
to open the WSE MSI file and look at the Component table. Checking for the
SP1 version might be more difficult.

Option Explicit
Public installer, fullmsg, comp, a, prod, fso, pname, ploc, pid, psorce

Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("comps.txt", True)

' Connect to Windows Installer object
Set installer = CreateObject("WindowsInstaller.Installer")
a.writeline ("Components")
on error resume next
For Each comp In installer.components
a.writeline (comp & " is used by:")
for each prod in Installer.ComponentClients (comp)
pid = installer.componentpath (prod, comp)
pname = installer.productinfo (prod, "InstalledProductName")
a.Writeline (" " & pname & " " & prod & " at " & pid)
Next
Next
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
Post by Niels Flensted-Jensen
Using Visual Studio for putting together my MSI package, I'm having a hard
time setting up a so called "Launch Condition" to check if Web Services
Enhancements 2.0 SP1 is installed. It wants a Component Id which the
documentation says you should find using something like MSI Spy Tool to
locate.
That sounds vague enough as it is, but the Platform SDK doesn't seem to
include such a tool. My best shot is Orca, but where is the ID I'm looking
for?
Any ideas, or is this simply one of those things that I must program my way
out of with a custom installer in .NET?
Thanks,
Niels
Kevin Burton
2004-11-20 17:15:03 UTC
Permalink
I am sorry but I am not understanding what you are trying to explain. The
script below seems to be very helpful but I would like to have an indication
that it is installed or not. This script produces a file that is about 3Mb on
my system. I am not sure what to do with that file. I looked in the MSI file
with ORCA and I found three entries in the component table. How should I use
those entries to indicate that WSE is installed or not? I looked at the
registry table and I do see some registry entries which I am guessing that I
could use to check if WSE is installed or not. If it is not installed and I
have the MSI file supplied by Microsoft to install WSE (at least the runtime)
how do I incorporate the automatic installation of WSE from my installation
file?

Thank you for your patience.

Kevin Burton
Post by Phil Wilson
This script below should help. It will report component guids and products
using them, so run it on a system with WSE installed. You can also use Orca
to open the WSE MSI file and look at the Component table. Checking for the
SP1 version might be more difficult.
Option Explicit
Public installer, fullmsg, comp, a, prod, fso, pname, ploc, pid, psorce
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("comps.txt", True)
' Connect to Windows Installer object
Set installer = CreateObject("WindowsInstaller.Installer")
a.writeline ("Components")
on error resume next
For Each comp In installer.components
a.writeline (comp & " is used by:")
for each prod in Installer.ComponentClients (comp)
pid = installer.componentpath (prod, comp)
pname = installer.productinfo (prod, "InstalledProductName")
a.Writeline (" " & pname & " " & prod & " at " & pid)
Next
Next
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
Post by Niels Flensted-Jensen
Using Visual Studio for putting together my MSI package, I'm having a hard
time setting up a so called "Launch Condition" to check if Web Services
Enhancements 2.0 SP1 is installed. It wants a Component Id which the
documentation says you should find using something like MSI Spy Tool to
locate.
That sounds vague enough as it is, but the Platform SDK doesn't seem to
include such a tool. My best shot is Orca, but where is the ID I'm looking
for?
Any ideas, or is this simply one of those things that I must program my way
out of with a custom installer in .NET?
Thanks,
Niels
Phil Wilson
2004-11-20 18:17:09 UTC
Permalink
You use the script at development time, not install time.
The idea of the script is this: If you have some product installed (such as
WSE) on your system, and you need to generate a Windows Installer Component
search (in AppSearch) then you need to know a Component Guid. You might not
have the MSI file that the product was installed from and you might not want
to use Orca to look at the Component table in the MSI file and relate the
keypath to a file table entry. So you can run this script on your system and
it will tell you each Component Guid, the product using it and the keypath.
If you wanted to do an AppSearch for Excel from Office 2003 (and it's on
installed on your development system), you can find the Component Guid for
Excel.exe and use that Guid in your AppSearch.
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
Post by Kevin Burton
I am sorry but I am not understanding what you are trying to explain. The
script below seems to be very helpful but I would like to have an indication
that it is installed or not. This script produces a file that is about 3Mb on
my system. I am not sure what to do with that file. I looked in the MSI file
with ORCA and I found three entries in the component table. How should I use
those entries to indicate that WSE is installed or not? I looked at the
registry table and I do see some registry entries which I am guessing that I
could use to check if WSE is installed or not. If it is not installed and I
have the MSI file supplied by Microsoft to install WSE (at least the runtime)
how do I incorporate the automatic installation of WSE from my
installation
file?
Thank you for your patience.
Kevin Burton
Post by Phil Wilson
This script below should help. It will report component guids and products
using them, so run it on a system with WSE installed. You can also use Orca
to open the WSE MSI file and look at the Component table. Checking for the
SP1 version might be more difficult.
Option Explicit
Public installer, fullmsg, comp, a, prod, fso, pname, ploc, pid, psorce
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("comps.txt", True)
' Connect to Windows Installer object
Set installer = CreateObject("WindowsInstaller.Installer")
a.writeline ("Components")
on error resume next
For Each comp In installer.components
a.writeline (comp & " is used by:")
for each prod in Installer.ComponentClients (comp)
pid = installer.componentpath (prod, comp)
pname = installer.productinfo (prod, "InstalledProductName")
a.Writeline (" " & pname & " " & prod & " at " & pid)
Next
Next
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
Post by Niels Flensted-Jensen
Using Visual Studio for putting together my MSI package, I'm having a hard
time setting up a so called "Launch Condition" to check if Web Services
Enhancements 2.0 SP1 is installed. It wants a Component Id which the
documentation says you should find using something like MSI Spy Tool to
locate.
That sounds vague enough as it is, but the Platform SDK doesn't seem to
include such a tool. My best shot is Orca, but where is the ID I'm looking
for?
Any ideas, or is this simply one of those things that I must program my way
out of with a custom installer in .NET?
Thanks,
Niels
Kevin Burton
2004-11-27 03:05:03 UTC
Permalink
I am going the ORCA/Regisitry route because I am not sure how to modify the
tables to perform an AppSearch using the component GUID. Can you see why the
following in the RegLocator table would not result in a property that I can
see in the logs:

Signature: SIG_WSEPATH
Root: 2
Key: SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Microsoft WSE 2.0
Name: (default)
Type: 2

And in the AppSearch table

Property: WSEPATH
Signature: SIG_WSEPATH

I was expecting to see a property WSEPATH when the properties were dumped in
the log but I don't see it. Any ideas why?

Kevin
Post by Kevin Burton
I am sorry but I am not understanding what you are trying to explain. The
script below seems to be very helpful but I would like to have an indication
that it is installed or not. This script produces a file that is about 3Mb on
my system. I am not sure what to do with that file. I looked in the MSI file
with ORCA and I found three entries in the component table. How should I use
those entries to indicate that WSE is installed or not? I looked at the
registry table and I do see some registry entries which I am guessing that I
could use to check if WSE is installed or not. If it is not installed and I
have the MSI file supplied by Microsoft to install WSE (at least the runtime)
how do I incorporate the automatic installation of WSE from my installation
file?
Thank you for your patience.
Kevin Burton
Post by Phil Wilson
This script below should help. It will report component guids and products
using them, so run it on a system with WSE installed. You can also use Orca
to open the WSE MSI file and look at the Component table. Checking for the
SP1 version might be more difficult.
Option Explicit
Public installer, fullmsg, comp, a, prod, fso, pname, ploc, pid, psorce
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("comps.txt", True)
' Connect to Windows Installer object
Set installer = CreateObject("WindowsInstaller.Installer")
a.writeline ("Components")
on error resume next
For Each comp In installer.components
a.writeline (comp & " is used by:")
for each prod in Installer.ComponentClients (comp)
pid = installer.componentpath (prod, comp)
pname = installer.productinfo (prod, "InstalledProductName")
a.Writeline (" " & pname & " " & prod & " at " & pid)
Next
Next
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Definitive Guide to Windows Installer
http://apress.com/book/bookDisplay.html?bID=280
Post by Niels Flensted-Jensen
Using Visual Studio for putting together my MSI package, I'm having a hard
time setting up a so called "Launch Condition" to check if Web Services
Enhancements 2.0 SP1 is installed. It wants a Component Id which the
documentation says you should find using something like MSI Spy Tool to
locate.
That sounds vague enough as it is, but the Platform SDK doesn't seem to
include such a tool. My best shot is Orca, but where is the ID I'm looking
for?
Any ideas, or is this simply one of those things that I must program my way
out of with a custom installer in .NET?
Thanks,
Niels
Dennis Bareis
2004-11-27 06:24:49 UTC
Permalink
Hi,
Post by Kevin Burton
I am going the ORCA/Regisitry route because I am not sure how to modify the
tables to perform an AppSearch using the component GUID. Can you see why the
following in the RegLocator table would not result in a property that I can
Signature: SIG_WSEPATH
Root: 2
Key: SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Microsoft WSE 2.0
Name: (default)
You didn't actually type in "(default)" did you? If you did then try "".


Bye,
Dennis

Dennis Bareis [MVP] (***@KillSpam.labyrinth.net.au)
http://www.labyrinth.net.au/~dbareis/index.htm

Freeware MSI creation or updating tool ("ORCA automation"):
http://www.labyrinth.net.au/~dbareis/makemsi.htm
Kevin Burton
2004-11-27 08:27:01 UTC
Permalink
I did use the value "(default)" because that is what regedit reported as the
entry name. As you suggested I tried "" and that worked great. Thank you.
Post by Dennis Bareis
Hi,
Post by Kevin Burton
I am going the ORCA/Regisitry route because I am not sure how to modify the
tables to perform an AppSearch using the component GUID. Can you see why the
following in the RegLocator table would not result in a property that I can
Signature: SIG_WSEPATH
Root: 2
Key: SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Microsoft WSE 2.0
Name: (default)
You didn't actually type in "(default)" did you? If you did then try "".
Bye,
Dennis
http://www.labyrinth.net.au/~dbareis/index.htm
http://www.labyrinth.net.au/~dbareis/makemsi.htm
Loading...