Installationsscript

  • Zitat

    Hi,
    ich habe es mit dem Domänenbenutzer kopiert, da der lokale Admin ja keine rechte hat Augenzwinkern danach dann das Script als lokaler Admin ausgeführt.

    ?(

    Jetzt wird's ein wenig kompliziert, aber nach knapp 4o Antworten sollten wir langsam zu Potte kommen... ;) :D

    Also noch einmal, bitte:
    Wie soll der genaue Ablauf aussehen !?!
    Wer soll was ausführen und von wo !?!?


    Gruß

    Edit: http://www.microsoft.com/technet/sysint…es/PsTools.mspx
    GhostScript und den PDF-Heini mit FileInstall in's RunAsSet-Install-Script packen, auf den Client kopieren, und dann mit PSTools vom Server aus ausführen ...


    Einmal editiert, zuletzt von Greenhorn (12. Oktober 2007 um 18:40)

  • Der Ablauf:
    Daten liegen auf einen Fileserver. Ein Domänenbenutzer hat lesend zugriff auf die Freigabre, aber keine lokalen Adminrechte. Der lokale Admin hat keine Rechte auf dem Share. Also muss das Script mit dem User ausgeführt werden. Dieses kopiert dann die Setupdateien auf den Client und startet ein 2. Script, dass mit lokalen Adminrechten die Setups ausführt. Hoffe das war verständlich ;)

  • ok, kurze übersetzung:

    du kannst vom client nicht als lokaler admin auf den server zugreifen, deshalb kopierst du das script(oder die scriptE) als normaler user.
    Ausführen kannst du das 2. script aber nur mit adminrechten, deshalb das RunAsSet

    <---stimmt das jetzt?

    und das PROBLEM ist jetzt, bzw. immer noch, dass du das 2. script nicht als user mit RunAsSet(lokaler admin) ausführen kannst, weil er meckert, falsches login oder keine berechtigung, oder?

  • Ja, der Ablaufplan ist deutlich genug... ;) :D

    Ich glaube wir haben etwas grundlegendes Übersehen...

    Spoiler anzeigen
    [autoit]

    Func install_ghost($software)
    ;GUISetState(@SW_DISABLE, $installGUI)
    RunAsSet($admin, @Computername, $pwd) ;Adminrechte geben
    Run($software,"c:\temp\")
    ;RunAsSet() ;Adminrechte nehmen ?? Fehler, weil Setup noch nicht beendet ??

    AutoItSetOption("WinTitleMatchMode", 2) ;Mode geändert - sucht nach irgendeiner Übereinstimmung
    If WinWaitActive("gs854w32.exe","",3) Then
    ControlClick("gs854w32.exe","",1,"&Setup") ;setup ausführen
    If WinWaitActive("AFPL") Then
    ControlCommand("AFPL","All Users","Button3","Check","") ;für alle User installieren
    ;Installation beginnen
    ControlClick("AFPL","",1004,"This install")
    ;Installation ist beendet - das Iconfenster lässt sich irgendwie nicht schließEndFunc
    WinWaitClose("AFPL") ;schließen des Installationsfensters
    EndIf
    Else
    MsgBox(0,"Error","Das benötigte Fenster ist nicht vorhanden.")
    Exit
    EndIf
    RunAsSet() ;Adminrechte nehmen ?? Richtig, weil Setup beendet ??
    EndFunc

    [/autoit]


    Ich hab's noch nicht probiert, aber klingt einleuchtend, oder ?
    Das Setup muss bis zum Schluss mit Adminrechten laufen, also muss RunAsSet() ans Ende der Funktion.

    Oder versuchen das komplette Script mit RunAsSet($admin, @Computername, $pwd) laufen zu lassen...

    Probier's doch mal aus...


    Gruß
    Greenhorn


  • ich habe es ;) ;)

    Erstmal vielen Dank für eure Hilfe und Geduld. Es lag an den Run-Befehl. Mir kamm es irgendwie komsich vor, dass der 2. Parameter das Workdir ist und ich habe etwas probiert und herraus gefunden, dass der Aufruf

    Code
    Run("c:\temp\"&software1,"c:\temp\")

    heißen muss. Nur mit Angabe des Workdir hat der lokale Admin das Recht die Scripte auszuführen und das vor der Var der richtige Pfad steht ist ja eigentlich normal. Ich dachte erst, dass dies der Workdir Parameter ist. ;)

    2 Dinge funktionieren aber nicht richtig und das liegt wohl an Autoit. 1. Er schließt ein Teilfenster nicht. Titel:

    Zitat

    Title: C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Ghostscript

    2. er löscht die lokal kopierte Datei "FreePDFXP3.24.EXE" nicht. Ich habe winwaitactiv und winkill ausprobiert, aber beide funktionieren nicht. Naja wäre ein Schönheitsfehler.

  • Zitat


    WinTitleMatchMode


    ja benutze ich - Mode 2

    Zitat


    Ich habe winwaitactiv und winkill ausprobiert, aber beide funktionieren nicht.

  • Hi,
    da ich das PW in der Kompilierten Datei momentan nicht verschlüsseln kann, frage ich nach User und PW. Falls jemand falsche Daten eingibt möchte ich das unschöne Autoit Fehlerfenster abfangen/ersetzten.

    Kann mir dazu jemand einen kurzen Tipp geben? Ich schaue grade Richtung "ObjEvent".

    Danke

    edit:
    so habe ich es jetzt gelöst:

    [autoit]


    ;bei falschem User/PW Script beenden
    if @error=1 Then

    RunAsSet() ;Adminrechte nehmen
    MsgBox(0,"Installationsfehler","Scriptabbruch! Falscher Benutzer oder Passwort.")
    Exit
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von sunghost (17. Oktober 2007 um 16:32)