installierte programme (per windows installer) listen ...

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

installierte programme (per windows installer) listen ...

Beitrag von bingo »

Code: Alles auswählen

;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)
mit dieser routine können alle installierten programme , die per microsoft windows installer installiert wurden , aufgelistet werden . weitere eigenschaften usw. lassen sich ebenfalls realtiv einfach auslesen .

eine alternative wäre , direkt die registry auszulesen (teilweise umständlich ...) oder per wmi (langsamer...) auf die daten zuzugreifen .

da immer mehr packete als xyz.msi zum installieren angeboten werden , wird dieser weg zunehmend interessant :allright:
1:0>1
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

*.msi
Finde ich grässlich. Der Assistent ist sehr nervig und das Format ist nicht
kompatibel mit älteren Systemen wie Win98.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Doch, isses. Aber man muss halt den windows Installer 2.0 installieren, bevor man die eigentliche Software installieren kann... :freak:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Mit diesem magischen

Code: Alles auswählen

RunProgram("RunDll32.exe",  "Shell32.dll,Control_RunDLL Appwiz.cpl,,0","")
kann man alle Programme anzeigen lassen, und nicht nur die, die mit nem MSI Installer installiert wurden.

Unter WinXP erfolgreich getestet. Wenns nicht geht, mal die letzte Zahl im Code in eine 1 ändern ( 0 => 1).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> [...] kann man alle Programme anzeigen lassen, und nicht nur die,
> die mit nem MSI Installer installiert wurden.

und mit dem SIS (ShowInstalledSoftware) geht die Anzeige auch noch 'nen
Tick schneller. ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

@Kiffi

Deine HP finde ich :allright: :allright: :allright:
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Deine HP finde ich :allright:

ist mit UDO erstellt 8)

Danke für's Lob & Grüße ... Kiffi
Antworten