Page 1 of 1

msi - installer ... MsiGetProductInfo handling ?

Posted: Sun Oct 16, 2005 5:22 pm
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

Posted: Sun Oct 16, 2005 11:42 pm
by va!n

Posted: Mon Oct 17, 2005 9:03 am
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:

Posted: Mon Oct 17, 2005 2:35 pm
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