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)

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