Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mit Delphi auf MSI Dateien zugreifen! (https://www.delphipraxis.net/41957-mit-delphi-auf-msi-dateien-zugreifen.html)

TriLine 11. Mär 2005 09:42


Mit Delphi auf MSI Dateien zugreifen!
 
Hallo,

ich bin seit längerem auf der Suche nach der Möglichkeit Windows Installer Dateien (MSI Pakete) per Delphi zu öffnen bzw. auszulesen und analysieren.
Kennt irgendjemand zu diesem Bezug eine verfügbare Komponente die dies einfach ermöglicht?
(Darf auch etwas kosten!)

Für Tipps wäre ich euch Dankbar!

In diesem Sinne....

schonmal danke!

Martin

generic 11. Mär 2005 20:25

Re: Mit Delphi auf MSI Dateien zugreifen!
 
der windowsinstallerdienst hat eine com schnittstelle.
diese ist u.a. im win-installer-sdk (plattform-sdk) erklaert.

wenn dir das zu kompliziert ist kannst du aber auch mir dem WiX msi in xsl umwandeln und vice versa.

MathiasSimmack 11. Mär 2005 21:07

Re: Mit Delphi auf MSI Dateien zugreifen!
 
COM-Schnittstelle? :gruebel: Es gibt ganz gewöhnliche API-Funktionen für den MSI. Ansonsten empfehle ich ganz einfach MSDN-Library durchsuchenOrca (ist auch beim PSDK dabei). Man muss ja nicht alles per Delphi machen wollen. ;)


Edit: Ach so, generic meint vermutlich die Möglichkeit, bspw. über VB-Skript auf Eigenschaften usw. zuzugreifen. Wie das funktioniert, demonstrieren die beiliegenden Skripte, wenn man das Installer-SDK installiert.

Robert Marquardt 12. Mär 2005 07:35

Re: Mit Delphi auf MSI Dateien zugreifen!
 
Das MSI API ist bei http://www.sf.net/projects/jedi-apilib mit dabei.

TriLine 14. Mär 2005 07:44

Re: Mit Delphi auf MSI Dateien zugreifen!
 
Danke für den Tip mit der Jedi API!

Ist dort eine kleine Demo mitdabei? :-D
Oder kennt jemand einen Link für eine kleine Demo?

Trotzdem Danke für den guten Tip!!!!!

MathiasSimmack 14. Mär 2005 08:28

Re: Mit Delphi auf MSI Dateien zugreifen!
 
Eine Demo ist, AFAIK, nicht dabei. Außerdem: Was soll sie denn können? Es gibt so viele Dinge, die man mit dem MSI-API anstellen kann. Die beste Lektüre zum Thema ist eben immer noch das Installer-SDK bzw. das PSDK bzw. das MSDN.

generic 14. Mär 2005 12:04

Re: Mit Delphi auf MSI Dateien zugreifen!
 
klar com, du kannst dir aus der c:\winnt\system32\msi.dll das interface importieren und dann loslegen.

ungefair so sieht das in meinen prg aus.
Delphi-Quellcode:
          oInstaller:=CreateComObject(DIID_Installer) as Installer;

          state:=oInstaller.FeatureState[c_Verwaltung,c_Feature];
          if state=msiInstallStateLocal then
            oInstaller.ReinstallFeature(c_Verwaltung, c_Feature, msiReinstallModeFileReplace)
          else
            oInstaller.ConfigureFeature(c_Verwaltung, c_Feature, msiInstallStateLocal);
klar du kannst auch die nativ api nutzen, dazu müsste man aber eine übersetzung der msi.h usw. haben.
diese gibt es auch wie oben gepostet, aber ist diese ich glaube für den version1.1.
der installer liegt aber schon in version 3 vor.

hat sich aber nicht soviel getan zwischen 1.1 und 3.
features nachinstallieren geht auf jedenfall in allen versionen.

MathiasSimmack 14. Mär 2005 18:22

Re: Mit Delphi auf MSI Dateien zugreifen!
 
Zitat:

Zitat von generic
klar com, du kannst dir aus der c:\winnt\system32\msi.dll das interface importieren und dann loslegen.

Was aber, sorry!, Schwachsinn ist, eben weil es die API-Funktionen gibt. Die COM-Schnittstelle lohnt sich IMHO nur, wenn du via VB- oder JavaScript auf bestimmte Installerfunktionen zugreifen willst.

Zitat:

klar du kannst auch die nativ api nutzen, dazu müsste man aber eine übersetzung der msi.h usw. haben. diese gibt es auch wie oben gepostet, aber ist diese ich glaube für den version1.1. der installer liegt aber schon in version 3 vor.

hat sich aber nicht soviel getan zwischen 1.1 und 3.
Also braucht man, mit anderen Worten, nicht wirklich eine brandaktuelle Version der "msi.h". :roll: Das einzige Problem ist ohnehin nur, dass Delphi nichts mit den Headerdateien von C anfangen kann. Würden wir hier nicht mit Delphi sondern mit C arbeiten, dann bräuchten wir nur das jeweils aktuelle PSDK, und wir hätten eine aktuelle "msi.h", und wir könnten sofort loslegen. Oder anders gesprochen: Würde Microsoft neben Headerdateien auch Delphi-Units ausliefern, hättest du die COM-Schnittstelle vermutlich gar nicht erst angesprochen, weil du dann selbst wissen würdest, dass sie überflüssig ist. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz