That does indeed work but it's extremely slow compared to the same operation in VBscript.

You won't see it with Products but if you have Office 2000 or XP installed, you should have several hundreds Components installed.

Enumerating them is just too slow:
code:
break on

$installer = CreateObject("WindowsInstaller.Installer")

for $i = 0 to $installer.Components.count

? $installer.Components.item($i)

next

exit 1

And what exactly is the difference between GetObject and CreateObject?

And to answer NTDOC, the ability to access MSI information would allow a KIX script to see if, say, a particular part of Office was installed and from where and under which Suite, etc.