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

Geschrieben

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.

Geschrieben

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

Geschrieben

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.

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...