baal_vig 10 Geschrieben 9. Januar 2004 Melden Teilen Geschrieben 9. Januar 2004 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. Zitieren Link zu diesem Kommentar
gr@mlin 10 Geschrieben 9. Januar 2004 Melden Teilen Geschrieben 9. Januar 2004 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 Zitieren Link zu diesem Kommentar
baal_vig 10 Geschrieben 9. Januar 2004 Autor Melden Teilen Geschrieben 9. Januar 2004 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.