Zum Inhalt wechseln


Foto

Software per VB-Script installieren


  • Bitte melde dich an um zu Antworten
3 Antworten in diesem Thema

#1 Bluemax

Bluemax

    Newbie

  • 11 Beiträge

Geschrieben 25. November 2007 - 10:27

Hallo (Scripting) Gemeinde.


Ich habe ein Problem mit einem VB-Script.

Zu meiner grossen Schande muss ich allerdings gestehen, dass Ich vom VB-Scripting ungefähr so viel Ahnung habe, wie eine Kuh vom Fliegen. Leider habe ich keine Möglichkeit gehabt, den "Auftrag" abzubiegen ...


Aufgabe:

Dieses Script soll nach Abfrage eines Registry-Flags auf einem lokalen PC (OS win2K oder Win XP) eine Software (Paradox 7 Runtime) einmalig installieren, wenn dieses Flag auf "0" steht - anderenfalls (Flag = "1") soll nichts passieren. Nach erfolgreicher Installation wird das Flag auf "1" gesetzt.

Im Moment (Testhalber - als proof of concept) soll die SW von einem lokalen Laufwerk installiert werden. Im Echtbetrieb wird die Installation von einer Freigabe erfolgen (UNC-Pfad). Als Installations-Benutzer ist ist ein administrativer Domänen-Account vorgesehen (hier allerdings noch nicht - die Feinheiten kommen später).


Zum Problem:

Die Abfrage des Flags funktioniert und die "setup.exe" wird auch aufgerufen ... danach passiert erstmal eine Weile nichts. Es kommt dann die Meldung mit dem errReturn = "3".
Dass anschliessend das Flag trotzdem auf "1" gesetzt wird, ist schon ok...

Warum wird das Setup der Paradox 7 Runtime nicht ausgeführt bzw. warum erhalte ich den Returncode "3"? Was bedeutet der überhaupt? Ich habe mir schon einen Wolf gesucht.



Hier nun das Script. Meine Kommentare und die Zeilen für die Fehlermeldungen bitte ignorieren - die werden später wieder entfernt...




Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

Call Paradoxinstall()
WScript.Quit

'==========================================================================

Sub Paradoxinstall()
key = "HKCU\Test\Paradoxinstall"
WScript.Echo "Paradox-Runtime Flag: "& wshshell.regread(key)
If wshshell.regread(key) = "0" Then
Const Administrators = True
Set objService = GetObject("winmgmts:")
Set objSoftware = objService.Get("Win32_Product")
errReturn = objSoftware.Install("c:\RUN32\setup.exe", ,Administrators)
' ... maybe shit happened ... :-((
Wscript.Echo "Returncode: " & errReturn
' Setting flag to one after work is done ;-)
WSHShell.RegWrite "HKCU\Test\Paradoxinstall", "1", "REG_DWORD"

WScript.Echo "Paradox-Runtime installiert und Flag gesetzt."

Else
' Next 3 lines only for testing - will be deleted
WScript.Echo "Paradox-Runtime NICHT installiert und Flag NICHT gesetzt."
' setting flag to zero again - maybe shit happened ...
WSHShell.RegWrite "HKCU\Test\Paradoxinstall", "0", "REG_DWORD"
end If
End Sub



Wer kann mir helfen? Oder hat jemand so ein Problem bzw, solch eine Aufgeabe zur Zufriedenheit Aller gelöst?

Vielen Dank im Voraus für Eure Hilfe.
Greetz

Bluemax

------------------------------------------

K'pla! (live long & prosper)

#2 vmorbit

vmorbit

    Board Veteran

  • 593 Beiträge

Geschrieben 26. November 2007 - 07:55

also das mit objsoftware.install kenn iich gar nicht...bin aber auch nicht der vbscript spezialist.
da dieses setup aber eine normale .exe ist würd ich sie folgendermaßen starten:

Set objShell = CreateObject("WScript.Shell")

und dann enteder mit run oder mit exec die anwendung starten.

objshell.run
=> damit kannst du ein programm z.b. starten oder
objshell.exec
=> wie run, nur dass du mit dem laufenden programm kommunizieren kannst

dazu würd ich mir an deiner stelle die windows script host 5.6 doku von MS downloaden...
dort kannst du alle befehle (methoden) bequem nachschlagen...
Mama, wenn ich groß bin will ich mal MCSE werden...

#3 Bluemax

Bluemax

    Newbie

  • 11 Beiträge

Geschrieben 27. November 2007 - 14:43

Danke für den Tipp. Funktioniert prächtig - zumindest bis dahin ...
Ein Problem habe ich jetzt aber immer noch: Am Ende des Setup steht eine Eingabeaufforderung "Beenden".
Egal, wieviele "Sendkeys" oder/und "Sleep"-Befehle ich zwischenschalte, die Abfrage ignoriert mich...
Wenn ich allerdings hergehe, und "Alt + F4" als letzte Befehl übertrage, bricht das setup während der installation ab ...

Ich weiss einfach nicht, wie ich das Setup korrekt beende ... Jemand anderes vielleicht?
Greetz

Bluemax

------------------------------------------

K'pla! (live long & prosper)

#4 Bluemax

Bluemax

    Newbie

  • 11 Beiträge

Geschrieben 27. November 2007 - 15:16

Habs!!!!

Damit funktioniert es einwandfrei:


Do Until Success = True
Success = objShell.AppActivate("Name_des_Fensters")
Wscript.Sleep 1000
Loop
Greetz

Bluemax

------------------------------------------

K'pla! (live long & prosper)