msi - installer ... MsiGetProductInfo handling ?

Everything else that doesn't fall into one of the other PB categories.
User avatar
bingo
Enthusiast
Enthusiast
Posts: 210
Joined: Fri Apr 02, 2004 12:21 pm
Location: germany/thueringen
Contact:

msi - installer ... MsiGetProductInfo handling ?

Post by bingo »

to enumerate all msi-products ...

Code: Select all

buffer_guid = AllocateMemory(39)

Repeat

If MsiEnumProducts_(i,buffer_guid) = #ERROR_NO_MORE_ITEMS : Break : EndIf
i+1
Debug PeekS(buffer_guid) ;all products-guid

ForEver

FreeMemory(buffer_guid)
but how use MsiGetProductInfo to find "INSTALLPROPERTY_PRODUCTNAME" ?

sample:
http://msdn.microsoft.com/library/defau ... ontext.asp
["1:0>1"]
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
User avatar
bingo
Enthusiast
Enthusiast
Posts: 210
Joined: Fri Apr 02, 2004 12:21 pm
Location: germany/thueringen
Contact:

Post by bingo »

Code: Select all

buffer_guid = AllocateMemory(39) 

Repeat 

If MsiEnumProducts_(i,buffer_guid) = #ERROR_NO_MORE_ITEMS : Break : EndIf 
i+1 
Debug PeekS(buffer_guid) ;all products-guid 

bufferlen = 255
buffer.s = Space(bufferlen)

Debug MsiGetProductInfo_(PeekS(buffer_guid),"INSTALLPROPERTY_PRODUCTNAME",@buffer,@bufferlen) ;allways error 1608 = ERROR_UNKNOWN_PROPERTY ?

Debug buffer
Debug bufferlen
  

ForEver 

FreeMemory(buffer_guid)
:evil:
["1:0>1"]
User avatar
bingo
Enthusiast
Enthusiast
Posts: 210
Joined: Fri Apr 02, 2004 12:21 pm
Location: germany/thueringen
Contact:

Post by bingo »

:lol:

Code: Select all

;INSTALLPROPERTY_PACKAGENAME          = "PackageName";
;INSTALLPROPERTY_TRANSFORMS           = "Transforms";
;INSTALLPROPERTY_LANGUAGE             = "Language";
;INSTALLPROPERTY_PRODUCTNAME          = "ProductName";
;INSTALLPROPERTY_ASSIGNMENTTYPE       = "AssignmentType";
;INSTALLPROPERTY_PACKAGECODE          = "PackageCode";
;INSTALLPROPERTY_VERSION              = "Version";
;INSTALLPROPERTY_PRODUCTICON          = "ProductIcon";
;INSTALLPROPERTY_INSTALLEDPRODUCTNAME = "InstalledProductName";
;INSTALLPROPERTY_VERSIONSTRING        = "VersionString";
;INSTALLPROPERTY_HELPLINK             = "HelpLink";
;INSTALLPROPERTY_HELPTELEPHONE        = "HelpTelephone";
;INSTALLPROPERTY_INSTALLLOCATION      = "InstallLocation";
;INSTALLPROPERTY_INSTALLSOURCE        = "InstallSource";
;INSTALLPROPERTY_INSTALLDATE          = "InstallDate";
;INSTALLPROPERTY_PUBLISHER            = "Publisher";
;INSTALLPROPERTY_LOCALPACKAGE         = "LocalPackage";
;INSTALLPROPERTY_URLINFOABOUT         = "URLInfoAbout";
;INSTALLPROPERTY_URLUPDATEINFO        = "URLUpdateInfo";
;INSTALLPROPERTY_VERSIONMINOR         = "VersionMinor";
;INSTALLPROPERTY_VERSIONMAJOR         = "VersionMajor";


buffer_guid = AllocateMemory(39) 
buffer_name_len = 500
buffer_name = AllocateMemory(buffer_name_len) 
i.l

While MsiEnumProducts_(i,buffer_guid) <> #ERROR_NO_MORE_ITEMS 
i+1 
;Debug PeekS(buffer_guid) ;all products-guid 

If MsiGetProductInfo_(PeekS(buffer_guid),"InstalledProductName",buffer_name,@tmp_buffer_name_len) = 0
;Debug tmp_buffer_name_len
Debug PeekS(buffer_name)
tmp_buffer_name_len = buffer_name_len
EndIf

If MsiGetProductInfo_(PeekS(buffer_guid),"InstallSource",buffer_name,@tmp_buffer_name_len) = 0
;Debug tmp_buffer_name_len
Debug PeekS(buffer_name)
tmp_buffer_name_len = buffer_name_len
EndIf

If MsiGetProductInfo_(PeekS(buffer_guid),"PackageName",buffer_name,@tmp_buffer_name_len) = 0
;Debug tmp_buffer_name_len
Debug PeekS(buffer_name)
tmp_buffer_name_len = buffer_name_len
EndIf

Wend

FreeMemory(buffer_guid)
FreeMemory(buffer_name)
now ... the right strings for szProperty (MsiGetProductInfo) and it works :P
["1:0>1"]
Post Reply