.msi und RunAs

  • Hallo,

    ich hab mal wieder ein Problem.

    Ich habe mir ein Script erstellt in dem ich mit verschiedenen Admin-Passwörtern Programme installieren kann. Das funktionierte auch. Aber jetzt habe ich eine .msi-Datei. Und damit funktionier es nicht.

    In der Hilfe hab ich gelesen wie man mit .msi-Dateien umgehen muss.
    Leider weiss ich aber in meinem Fall nicht, wo und wie ich das hinschreiben soll.

    Hier das Script:

    [autoit]

    Local $UserName = "Administrator"
    Local $Password = "*****"
    Local $Password2 = "*****"
    Local $ScriptDir = @UserProfileDir & "\Temp\Access_Runtime\"
    Local $Program = $ScriptDir & "\ACCESSRT.msi"
    Local $workingdir = @UserProfileDir & "\Temp\Access_Runtime\"

    [/autoit][autoit][/autoit][autoit]

    DirCreate($ScriptDir)
    MsgBox(0, "Access-2003-Runtime-Installation", "Die Dateien werden nun kopiert und anschließend ausgeführt.")
    FileCopy("\\elkafax\VOL1\01-EDV\01-Standardsoftware\22-Access-Runtime\*.*", $ScriptDir, 9)
    $Fehler=RunAs($UserName, @ComputerName, $Password, 0, $Program, $workingdir)
    If $Fehler = 0 Then
    RunAs($UserName, @ComputerName, $Password2, 0, $Program, $workingdir)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WinWait("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    WinActivate("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    ControlClick("Access 2003 Runtime-Setup","Setup ist zur Installation bereit","Button1","left")

    [/autoit][autoit][/autoit][autoit]

    WinWait("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    WinActivate("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    ControlClick("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen","Button2","left")

    [/autoit][autoit][/autoit][autoit]

    DirRemove($ScriptDir, 1)

    [/autoit]

    Kann mir da jemand helfen?

  • Du kannst eine MSI-Datei wahrscheinlich (ich habe es jetzt nicht extra getestet) nicht mit Run starten. Laut Hilfe nur EXE, BAT, COM, PIF.

    Für Deinen Zweck musst Du MSIEXEC.exe nutzen. z.B.: "msiexec.exe /i <Produkt.msi>".

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • [autoit]

    RunAs ( 'UserName', 'DomainName', 'PassWord', 0, @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb', ,@SW_HIDE )

    [/autoit]

    Denke das wäre mal ein Ansatz ;)

  • [autoit]

    RunAs ( 'UserName', 'DomainName', 'PassWord', 0, @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb', ,@SW_HIDE )

    [/autoit]

    Denke das wäre mal ein Ansatz ;)

    Obwohl das "@COMSPEC & '/c'" hier unnötig ist und die Sache nur verkompliziert.
    MSIEXEC ist ja kein interner Befehl der Windows-Kommandozeile !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • probier am besten mal das ganze paket in der komandozeile zu starten also dein

    @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb'

    und wenn dus dann so hast das es klappt sollte es unter autoit nicht mehr das problem sein

  • Irgendwie funktioniert das ganze nicht.

    weil in dieser Zeile:

    [autoit]

    RunAs ( 'UserName', 'DomainName', 'PassWord', 0, @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb', ,@SW_HIDE )

    [/autoit]

    fehlt doch irgendwie das Programm. Das muss doch auch irgendwo eingetragen werden, so wie in der Originalzeile auch:

    [autoit]

    RunAs($UserName, @ComputerName, $Password, 0, $Program, $workingdir)

    [/autoit]
  • Die frage ist, ob Du in einem Unternehmensnetzwerk bist..

    Probiers mal mit $DomainName="localhost" am Anfang...

    [autoit]

    Local $UserName = "Administrator"
    Local $Password = "*****"
    Local $Password2 = "*****"
    Local $ScriptDir = @UserProfileDir & "\Temp\Access_Runtime\"
    Local $Program = $ScriptDir & "\ACCESSRT.msi"
    Local $workingdir = @UserProfileDir & "\Temp\Access_Runtime\"
    DirCreate($ScriptDir)
    MsgBox(0, "Access-2003-Runtime-Installation", "Die Dateien werden nun kopiert und anschließend ausgeführt.")
    FileCopy("\\elkafax\VOL1\01-EDV\01-Standardsoftware\22-Access-Runtime\*.*", $ScriptDir, 9)
    $Fehler=RunAs ( $UserName, $DomainName, $Password, 0, @ComSpec & ' /c msiexec /i ' & $workingdir & $program & ' /qb', ,@SW_HIDE )
    If $Fehler = 0 Then
    RunAs ( $UserName, $DomainName, $Password2, 0, @ComSpec & ' /c msiexec /i ' & $workingdir & $program & /qb', ,@SW_HIDE )
    EndIf
    WinWait("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    WinActivate("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    ControlClick("Access 2003 Runtime-Setup","Setup ist zur Installation bereit","Button1","left")
    WinWait("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    WinActivate("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    ControlClick("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen","Button2","left")
    DirRemove($ScriptDir, 1)

    [/autoit]
  • Irgendwie funktioniert das ganze nicht.

    Ich habs ja gesagt. Unnötig kompliziert ;-))

    Du brauchst eigentlich nur:

    Local $Program = $ScriptDir & "\ACCESSRT.msi"

    in:

    Local $Program = "msiexec /i " & $ScriptDir & "\ACCESSRT.msi"

    tauschen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"