Jump to content

msiinstallproduct


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ich versuch mit einem kleinen VB tool sämmtliche MSI Files in einem Folder zu installieren:$

 

Funktion zur installation eines MSI Files die ich im Internet gefunden hab:

 

Const ERROR_SUCCESS = 0

Declare Function MsiInstallProduct Lib "msi.dll" _
(ByVal szPackagePath As String, ByVal szCommandLine As String) As Long
Sub InstallMSI(ByVal remove As Boolean, ByVal MSIFile As String)
   Select Case remove
       Case True
           If MsiInstallProduct(MSIFile, "REMOVE=ALL") = ERROR_SUCCESS Then MsgBox ("OK")
       Case False
           If MsiInstallProduct(MSIFile, "INSTALLDIR=c:\programme\test") = ERROR_SUCCESS Then MsgBox ("OK")
   End Select
End Sub

 

Ich bekomme aber immer den Fehler

 

Can't find DLL entry point MsiInstallProduct in msi.dll

 

Kennt sich jemand damit aus?

 

Laut http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/msiinstallproduct.asp ist das eine offizielle API Funktion von Windows XP.

Link zu diesem Kommentar

hallo baal_vig,

 

ich kenn mich zwar mit scripting nicht gut aus, hab aber noch ein anderes vbs im netz gefunden, das msi-files installiert:

 

http://www.codecommunity.de/frameset.aspx?section=skripte&id=1708

 

vielleicht kann dir aber auch bei deinem prob der "msi entry point commander" helfen?

 

http://www.windowsinstaller.ch/tools/MSIEPC.asp

 

aber wie gesagt - so richtig ahnung hab ich davon auch nicht.

 

gruss,

 

gr@mlin

Link zu diesem Kommentar

Problem selber gelöst nach nun fast 7 Stunden.

 

Die Funktionsdeklaration war mangelhaft. ein Alias musste da noch hin:

 

Private Declare Function MsiInstallProduct Lib "msi.dll" Alias "MsiInstallProductA" _
(ByVal szPackagePath As String, ByVal szCommandLine As String) As Long

 

Ich steh jedoch schon beim zweiten Problem an. Ich will irgendwie an die Guid dieses Files kommen bevor ich es installier um mir noch mehr infos über das file zu holen. Das mach ich so:

 

Dim PropLen As Long

PropLen = 255

z = MsiOpenPackage("C:\Testfile.msi", myHandle)

y = MsiGetProductProperty(myHandle, "ProductCode", a, PropLen)

 

Ich bekomm jedoch nur den Fehler 6 zurück: Falscher MSI Handler!

 

MyHandle hat das Format MSIHANDLE.

Wie deklarier ich MSIHANDLE? Oder hat das einen andern Grund, dass myHandle bei der Zweiten Funktion nicht mehr funzt? Das das msi File geöffnet wird wird mit Error_Success bestätigt.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...