samtrex
Goto Top

Software via VBS im Systemstart installieren

Hallo,
ich habe hier einen SBS2003 logischerweise mit AD und sage und schreibe 3 PCs!

Jetzt geht es mir darum, weil ich ja faul bin ... möchte ich sämtliche benötigte Software
am liebsten vom SBS aus zuweisen. Habe aber nur herausgefunden, das ich das mit MSI-Files
machen kann. Leider habe ich nicht immer solche MSIs.
Jedoch können viele Anwendungen im "Silent-Mode" installiert werden.
Das ist der Punkt den ich nutzen möchte.

Ich habe mir ein VBS-Script geschrieben, das sämtliche Abfragen macht und auch alles so installiert wie ich das gerne haben will.
Wenn ich das Script als Admin ausführe ist alles bestens, aber wenn ich es dafür als Admin ausführen muß, kann ich auch
alles selbst installieren. Also habe ich das Script per Richtlinie in den Systemstart (nicht den Autostart!!!) gelegt.

Bein hochfahren zeigt er auch brav an: Startscripts werden ausgeführt

Aber:
1. es dauert ewig! Und ich kann mich erst DANACH anmelden ...
2. die Anwendungen werden nicht installiert!!!

Was muß ich tun damit das Script mit Systemrechten oder mit Adminrechten läuft.
UND ich gleichzeitig normal arbeiten kann? So wie halt in der Installation aus dem AD auch...

Bin für jeden Vorschlag dankbar!
Gruß Sam

PS: Falls wer das Script mal sehen möchte kann ich es bei bedarf mal anhängen...

Content-Key: 52703

Url: https://administrator.de/contentid/52703

Printed on: April 24, 2024 at 04:04 o'clock

Member: rubberduck
rubberduck Apr 12, 2007 at 11:12:33 (UTC)
Goto Top
Falls Du das Problem immer noch hast, würde mich das Script interessieren.
Member: SamTrex
SamTrex Apr 12, 2007 at 16:02:01 (UTC)
Goto Top
Ja, das Problem habe ich immer noch, habe es aber erstmal auf Seite gelegt, da ich ja z.H. nur übe.
Das Script sieht vielleicht etwas skuriel aus, aber es funktioniert.
Leider kann ich, wenn ich Office installieren möchte keine Einstellungen vornehmen, z.B. "ohne Outlook"

Wenn jemand eine Anregung hat wie es einfacher geht immer her damit!

Besten Gruß
Sam

'
'
' Autor: Sam
' Datum: 06.03.2007
' Sprache: VB-Script
'
' Beschreibung:
' Installiert folgende Anwendungen im Hintergrund!
' - Acrobat Reader 8
' - Prüfung ob Acrobat Reader oder Acrobat Pro installiert ist.
' - MS Outlook 2003 Standart
' - Prüfung ob MS Outlook 2003 installiert ist.
'
' Erweiterbar auf andere Anwendungen
'
' HINWEISE:
' Adminrechte erforderlich!!!
'
' (C) 2007 by Dirk Lenzing
'
'


Option Explicit
On Error Resume Next

'Deklarierung
Const DEBUGMODE = false 'Debugmodus true/false

Dim objshell
Dim objapp
Dim objnetwork
Dim objfso


Dim varmachine 'lokaler Rechnername

'Abschnitt "Softwareistallation"
Dim rtcheckkey 'Returncode von CheckKey
Dim arrothersoftwarekey(6,6)'Array für Regestrierungsschlüssel die auf vorhandensein geprüft werden sollen. Müssen immer auf einen Wert bezogen sein! z.B. ("HKLM\...\Displayname")
'Ist einer von ihnen vorhanden wird die Software aus dem Array "arrsoftwarekey" nicht installiert!
'Registrierungsschlüssel der Software: OtherSoftwarekey(x, )
'Softwaretitel: OtherSoftwarekey( ,x)
Dim varothersoftwarekeyindex'Zähler in der Abfrageschleife des Othersoftwarekey-Arrays
Dim varsoftwarekeyindex 'Zähler in der Abfrageschleife des Softwarekey-Arrays
Dim arrsoftwarekey(2,2,2) 'Array für Software; Die Abfrage beginnt bei 1,0,0; Jede neue Software bekommt eine eigene Ziffer im ersten Block!!!
'Softwaretitel: Softwarekey(x, , )
'Installpfad mit Parametern: Softwarekey( ,x, )
Dim arrstringparts 'In dieser Variablen werden Werte in Form eines Strings übertragen. Das Array, der Startwert und der Endwert im Array(arrothersoftwarekey).
'Extrahiert die einzelnen Werte aus dem String z.B. "1,1,2" = Array 1 (In diesem Fall der Adobe Acrobat 8.0 Reader)
'Im Array(OtherSoftwarekey) wir nun von Schlüssel 1 bis 2 nach vorhandener Software gesucht.
'Ist diese vorhanden wird die Installation in Array 1 nicht durchgeführt!!!
'Installation JA / NEIN steht in: Softwarekey( , ,x)
Dim button 'Messageboxabfragevariable

'------------------------------------------------------------------------------------------------------------------------------------------


'Objekte & Variablen initiieren
Set objshell = CreateObject("wscript.shell")
Set objapp = CreateObject("Shell.Application")
Set objnetwork = CreateObject("wscript.network")
Set objfso = CreateObject("scripting.filesystemobject")

varmachine = objnetwork.computername


'------------------------------------------------------------------------------------------------------------------------------------------ Quit auf Server


'Abbruch auf Server!
if lcase(varmachine) = "server" then WScript.quit


'------------------------------------------------------------------------------------------------------------------------------------------ Softwareinstallation


'Array OtherSoftwarekey bestücken
'Erste Ziffer: Zu prüfender Registrierungsschlüssel
'Zweite Ziffer: Anzuzeigender Name für den Debugmode

arrothersoftwarekey(1,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-1033-F400-7760-000000000002}\Displayname"
arrothersoftwarekey(1,1) = "Adobe Acrobat 7.0 Professional"
arrothersoftwarekey(2,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-7AD7-1031-7B44-A80000000002}\Displayname"
arrothersoftwarekey(2,2) = "Adobe Acrobat 8.0 Reader"
arrothersoftwarekey(3,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\F-Secure Product 444\DisplayName"
arrothersoftwarekey(3,3) = "F-Secure Internet Security 2007"
arrothersoftwarekey(4,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90110407-6000-11D3-8CFE-0150048383C9}\Displayname"
arrothersoftwarekey(4,4) = "Microsoft Office 2003 Professional"
arrothersoftwarekey(5,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90E00407-6000-11D3-8CFE-0150048383C9}\Displayname"
arrothersoftwarekey(5,5) = "Microsoft Office Outlook 2003 Standart"
arrothersoftwarekey(6,0) = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4781569D-5404-1F26-4B2B-6DF444441031}\Displayname"
arrothersoftwarekey(6,6) = "Ahead Nero 7 Premium"

'Noch nicht im Array eingetragen!!!
'arrothersoftwarekey(7,0) = "\Displayname"
'arrothersoftwarekey(7,7) = "Alcohol 120%"

'Array Softwarekey bestücken
'Erste Ziffer: Anzuzeigender Name
'Zweite Ziffer: Zu prüfender Registrierungsschlüssel
'Softwarecontrolarray: (a,b,c)
' a = Laufende Nummer aus dem Softwarekeyarray
' b = Begin in OhterSoftwarekeyarray
' c = Ende in OtherSoftwarekeyarray
'
'---------------------
'Index1
arrsoftwarekey(1,0,0) = "Adobe Acrobat 8.0 Reader"
arrsoftwarekey(1,1,0) = "\\Server\ClientApps\acroread8\Setup.exe /sall /norestart"
softwarecontrol("1,1,2")

'---------------------
'Index2
arrsoftwarekey(2,0,0) = "Microsoft Office Outlook 2003 Standart"
arrsoftwarekey(2,2,0) = "\\Server\ClientApps\outlook2003\setup.exe /noreboot /q /PIDKEY=xxx"
softwarecontrol("2,5,5")


'------------------------------------------------------------------------------------------------------------------------------------------

'Abfragen auf Aktualisierungsbedarf
softwarecodes
For varsoftwarekeyindex = 1 To UBound(arrsoftwarekey)
if DEBUGMODE = true then MsgBox ("Software zur Installation:" & vbCr & vbCr & "Softwaretitel: " & arrsoftwarekey(varsoftwarekeyindex,0,0) & vbCr & _
"Installationspfad mit Parametern: " & arrsoftwarekey(varsoftwarekeyindex,varsoftwarekeyindex,0) & vbCr & vbCr & _
arrsoftwarekey(varsoftwarekeyindex,0,0) & " installieren? " & arrsoftwarekey(varsoftwarekeyindex,varsoftwarekeyindex,varsoftwarekeyindex)& "!")
If Not arrsoftwarekey(varsoftwarekeyindex,varsoftwarekeyindex,varsoftwarekeyindex) = "Nein" Then
if DEBUGMODE = true then MsgBox (arrsoftwarekey(varsoftwarekeyindex,0,0) & " kann installiert werden.")
if DEBUGMODE = true then objshell.popup arrsoftwarekey(varsoftwarekeyindex,0,0), 3, "Softwareaktualisierung", vbOKOnly
Dim objsetup 'Dieses Object wird initialisiert um auf den Returncode der Installation zu warten und danach wieder gelöscht.
Set objsetup = objshell.exec(arrsoftwarekey(varsoftwarekeyindex,varsoftwarekeyindex,0))
Do Until objsetup.status = 1
WScript.sleep 100
Loop
objsetup = Nothing
if DEBUGMODE = true then objshell.popup "Die Installation von " & arrsoftwarekey(varsoftwarekeyindex,0,0) & " ist abgeschlossen!", 3, "Softwareaktualisierung",vbOKOnly
Else
if DEBUGMODE = true then MsgBox (arrsoftwarekey(varsoftwarekeyindex,0,0) & " oder eine im Array(OtherSoftwarekey) hinterlegte Anwendung ist bereits installiert!")
End If
Next


'
'
ENDE DES SCRIPTS
'


'------------------------------------------------------------------------------------------------------------------------------------------ SUBs


'Überprüft Registrierungsschlüssel auf existens und gibt einen Returncode zurück; Existiert der Schlüssel ist der Returncode 0;


Sub checkkey(keystring)
'<--------------------------option explicit
On Error Resume Next
Err.number = 0
if DEBUGMODE = true then MsgBox ("Der Errorcode wird vor dem Auslesen des Schlüssels auf 0 gesetzt." & vbCr & "Errorcode: " & Err.number)
objshell.regread (keystring)
if DEBUGMODE = true then MsgBox ("Der Schlüssel wurde ausgelesen:" & vbCr & vbCr & "Errorcode: " & Err.number & vbCr & vbCr & "Wenn der Errorcode 0 ist, ist der Schlüssel vorhanden!")
rtcheckkey = Err.number
End Sub


'------------------------------------------------------------------------------------------------------------------------------------------


'Überprüft ausgewählte Registrierungsschlüssel auf existens. Existiert einer der Registrierungsschlüssel so wird in das jeweilige
'Array "arrsoftwarekey(_,_,x) ein Wert eingetragen, dieser führt ggf. dazu das die Software aus dem Array "arrsoftwarekey"
'nicht installiert wird.


Sub softwarecontrol(strwerte)
On Error Resume Next
'<--------------------------option explicit
arrstringparts = Split(strwerte, ",",3)
For varothersoftwarekeyindex = arrstringparts(1) To arrstringparts(2)
if DEBUGMODE = true then MsgBox ("Prüfe auf Software: " & arrothersoftwarekey(varothersoftwarekeyindex,varothersoftwarekeyindex))
checkkey(arrothersoftwarekey(varothersoftwarekeyindex,0))
If rtcheckkey = 0 Then
if DEBUGMODE = true then MsgBox ("Software gefunden! Schreibe nach: arrsoftwarekey" & "(" & arrstringparts(0)& "," & arrstringparts(0) & "," & arrstringparts(0) & ")")
arrsoftwarekey(arrstringparts(0),arrstringparts(0),arrstringparts(0)) = "Nein" 'Gefunden: JA / Installieren: NEIN
Exit For
Else
arrsoftwarekey(arrstringparts(0), arrstringparts(0), arrstringparts(0)) = "Ja" 'Gefunden: NEIN / Installieren: J
End If
Next
End Sub


'------------------------------------------------------------------------------------------------------------------------------------------


'

' ENDE DER SUBS
'



'
'
* ENDE *
'**
Member: rubberduck
rubberduck Apr 13, 2007 at 09:12:38 (UTC)
Goto Top
Erstmal Danke.
Das Script ist aber nicht vollständig, oder? Ich finde den Teil, wo die Installation angestossen wird nicht...

Wenn Du das Script im StartUp hast, wird es als LocalSystem gestartet. HKCU is nich.
Als Anmeldescript hingegen ist das Problem, das Du im User-Kontext bist.
Keine Adminrechte = keine Installation

Ich würde Dir ans Herz legen ein MSI-Packager zu nehmen und das ganze als *.MSI zu paketieren und zu verteilen.

Bsp.:
http://www.aksdb.org/produkte.php?pid=1&pname=MSImaker#
http://www.dev4pc.com/installer2go_screenshots.html
http://www.advancedinstaller.com/feats-list.html

Für Deine Bedürfnisse sollten die Freeware-Tools ausreichend sein.

Hat es einen wirklich guten Grund, wieso es mit einem Script installiert werden muss?
Member: SamTrex
SamTrex Apr 13, 2007 at 15:38:19 (UTC)
Goto Top
Danke für den Hinweis .... werde mich mal damit beschäftigen!

Aber ich hab da noch ein, zwei Fragen.

1. Was meinst du mit dem Abschluss der Installation?
Das Setup wird als "Silent" gestartet und unternimmt nach Abschluss nichts ...

2. Warum ist das Script im Userkontext? Es liegt doch laut Richtlinie im Systemstart.
Nicht im Benutzer- oder Autostart!!! Demnach müsste es doch Adminrechte haben!?

- Mit so einem MSI-Packer habe ich mich schon mal beschäftigt, habe mir zu dem Zweck extra
eine saubere VM mit nur XP erstellt. Ging anfangs auch ganz gut, nur beim 2. Scan kam dann
immer eine Fehlermeldung, so das ich es nachher drangegeben habe...

- Der einzige Grund für das Script ist das was einen Absatz weiter oben steht. Ich habs nicht
hinbekommen so ein MSI zu erstellen...

Hoffe das ich mit den Tools aus Deinen Links mehr Glück habe!
Danke.

Gruß Sam
Member: rubberduck
rubberduck Apr 16, 2007 at 06:24:56 (UTC)
Goto Top
1. Was meinst du mit dem Abschluss der
Installation?
Das Setup wird als "Silent"
gestartet und unternimmt nach Abschluss
nichts ...
Sorry, jetzt hab ich's gesehen
2. Warum ist das Script im Userkontext? Es
liegt doch laut Richtlinie im Systemstart.
Nicht im Benutzer- oder Autostart!!!
Demnach müsste es doch Adminrechte
haben!?
So, wie ich es im Kopf habe funktioniert es so:
Startup Logon
Systemstart Benutzer loggt ein
kein Benutzer angemeldet Benutzer angemeldet
LocalSystem Benutzer
Adminrechte Benutzerrechte

Frage: Wenn es als LocalSystem installiert wird und Du nicht eine "AllUser" Installation machst, wohin wird es installiert?
Kenne die Situation leider nicht, da wir eine eigene SW-Managementlösung haben.

Tipp:
Wenn es unbedingt ein Script sein muss, dann schreib doch alle relevanten Ereignisse in ein LogFile, oder in den Eventviewer.
(objshell.LogEvent 4 "Meine Eregnisse")
Nach der Analyse solltest Du schlauer sein wo das Problem liegt.
- Mit so einem MSI-Packer habe ich mich
schon mal beschäftigt, habe mir zu dem
Zweck extra
eine saubere VM mit nur XP erstellt. Ging
anfangs auch ganz gut, nur beim 2. Scan kam
dann
immer eine Fehlermeldung, so das ich es
nachher drangegeben habe...
2. Scan? Was meinst Du damit? Du meinst aber nicht SysDiff, oder?
Member: SamTrex
SamTrex Apr 16, 2007 at 07:43:13 (UTC)
Goto Top
Also zu dem Systemstart, so wie du es geschrieben hast habe ich mir das auch vorgestellt...
Am liebsten währe es mir natülich ohne Script ganz einfach über die Richtlinie.
Mit dem Scannen meine ich wahrscheinlich das Sysdiff.
(1. Scan - Installation - 2.Scann - MSI erstellen).
Da hatte ich immer ne Fehlermeldung.
Bei uns in der Firma wird Netinstaller verwendet. Wollte mir das auch schon mal als Demo zulegen, und etwas spielen. Aber dann läuft wieder auf jedem Client eine Anwendung und in der Firma zieht der ganze Schnickschnack den die Installiert haben das Netz sowie den Rechner in den Keller. (5-8 min Systemstart + Anmeldung)

Sprich ich werde mich nochmal mit dem MSI beschäftigen.
Danke für deine Tipps!!!

Gruß Sam