Auch dieser Artikel reiht sich in die Liste der Software-Batch-AD-Deployment-Guides ein.
Im Falle von HipChat wird der Artikel recht kurz, denn hier passiert nichts ungewöhnliches.

Vorbereitung

Das Bild zeigt das HipChat Deployment Verzeichnis mit seinen üblichen DateienDer aktuellste HipChat-Installer (für Windows) ist als .exe immer unter dieser URL verfügbar.
Anschließend wird wieder ein übliches Deployment-Verzeichnis auf einem für die PCs verfügbaren Netzlaufwerk erstellt: Installer, Installer-Batch, allowedPCs.txt und deniedPCs.txt (mehr Informationen zum Clientfilter hier). Im Standardfall (so auch in diesem Deployment-Script) wird die deniedPCs.txt benutzt, um einzelne Clients von der Verteilung auszuschließen. Die Textdatei muss dann Computernamen enthalten, einen pro Zeile.
Der HipChat-Installer muss folgendermaßen umbenannt werden: „HipChat_[Version].exe“ und der Versionsstring muss in das Deployment-Script in Zeile 11.

Deployment-Script

19.09.2016: Version 4.27.1.1658 getestet und verteilt.

Hinweis: Wer nicht nur ein Update sondern eine komplette Reinstallation von Hipchat im Netzwerk ausrollen will, kann mein angepasstes Script – hier als Download – nutzen. Die benötigte VersionCompare.exe erhaltet ihr hier.

Hier das Script für ein normales Update:

@echo off && color 9f && setlocal
set wd=\\lea\Deployment\Software\Hipchat
set log=%wd%\hipchat.log
set tools=\\lea\Deployment\Sonstiges\tools
set hipEL=999
set instversion=0.0
set versionEL=9
set exepath=none
set retry=0
REM:: ######## EDIT THIS ####
set newversion=4.1658
REM:: #######################


REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
if exist "C:\Program Files (x86)\Atlassian\HipChat4\HipChat.exe" set exepath="C:\Program Files (x86)\Atlassian\HipChat4\HipChat.exe"
::if exist "c:\Program Files (x86)\Skype\Phone\skype.exe" set exepath="c:\Program Files (x86)\Skype\Phone\skype.exe"
if %exepath%==none echo %date% %time:~0,8% - %computername% findet das .exe Verzeichnis nicht && goto taskkill
goto checkversion

:checkversion
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k )
%tools%\VersionCompare.exe %instversion% %newversion%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto taskkill
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto end
goto end

:taskkill
TASKKILL /f /im hipchat.exe
goto install

:install
echo %date% %time:~0,8% - %computername% installiert... >> %log%
::msiexec.exe /i %wd%\deploy\%newversion%\SkypeSetup.msi /qn /norestart FEATURE_IEPLUGIN=0 FEATURE_FFPLUGIN=0
start /w %wd%\HipChat_%newversion%.exe /verysilent /norestart /restartapplications /lang=german /lang=1031 /64 /64bit /x64
set hipEL=%errorlevel%
if %hipEL%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running)
if %hipEL%==1602 goto retry REM:: user canceled installation (eg. taskkill)
if %hipEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %hipEL%==1638 goto uninstall REM:: another product is already installed, denies an update
if %hipEL%==1625 goto uninstall REM:: skype installer sometimes threw this one, don't know why
set hipEL=%errorlevel%
echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %hipEL% abgeschlossen >> %log%
md %wd%\done\%computername%
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %hipEL%, retry in 500Sek... >> %log%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 500 > nul
goto taskkill

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! >> %log%
goto end

:uninstall
if %retry%==1 goto retryfailed
TASKKILL /f /im hipchat.exe
echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion%... >> %log%
start /w "" "C:\Program Files (x86)\Atlassian\HipChat4\unins000.exe" /s /silent /qn
del /q /s "C:\Program Files (x86)\Atlassian"
echo %date% %time:~0,8% - %computername% - %instversion% deinstalliert, retry... >> %log%
set retry=1
goto taskkill

:end
endlocal
exit

Und das war’s auch schon. Bei einem Update muss nur die neue .exe-Datei heruntergeladen und die Version in Zeile 11 angepasst werden.
Das Script kommt als Computer-Startscript in das GPO und schon startet die Verteilung:
Das Bild zeigt die Logausgaben des HipChat-Deployments
Das Bild zeigt das Deployment der 1648er Version anhand des allnew-Update-Scripts (siehe Hinweis und Download oben). Dabei wird an jedem PC, unabhängig der installierten Version (deswegen wird überall „Version 0.0“ deinstalliert), HipChat komplett deinstalliert und neu installiert. Beim Umstieg auf 1648 würde ich das empfehlen, weitere Update werden ich auch wieder mit dem normalen Script erledigen.

Neu in meiner Software-Deployment Auflistung ist ab jetzt KeePass 2, eine ziemliche gute und erweiterbare Passwortmanagement-Freeware.
Zu KeePass selbst werde ich in Zukunft noch einige Artikel schreiben, von der Installation bis zur Integration in Browser und Smartphone. Jetzt erstmal schnell das Deployment im Windows Active Directory via Batch Script, im üblichen Stil.

Vorbereitung

Das Bild zeigt die vielen Deploymentparameter und -optionen des KeePass 2 InstallersDer .exe Installer von der Homepage (Pro Version) liefert beim Aufruf mit dem Parameter „/?“ eine lange Liste von Optionen zur Anpassung der Installation. Diese findet ihr hier auch nochmal zur besseren Lesbarkeit in HTML Form.
Praktisch: Ihr könnt mit allen Parametern die Installation anpassen und bei der ersten Installation mit dem Parameter /SAVEINF=filename das Set an Optionen in eine Konfigurationsdatei speichern. Für die nächste Installation reicht als Parameter dann nur noch /LOADINF. So lassen sich beispielsweise unterschiedliche Deploymentprofile erstellen und nutzen.

Plugins

Eine der Stärken von KeePass ist die starke Erweiterbarkeit mit Hilfe der vielen Plugins und Tools. Die Installation und Verteilung ist bei fast allen relativ einfach: es reicht schon die entsprechende Plugin-Datei (z.B. .plgx) in das Programmverzeichnis zu legen, ggf. auch in einen seperaten „plugins“ Unterordner für eine verbesserte Übersicht. Beim nächsten Start von KeePass wird das Plugin automatisch erkannt und geladen.
Aus diesem Grund kopiert das Deployment-Script benötigte Plugins einfach nur in den Installationsordner – fertig!

Deployment

Aktuell: Version 2.34 via .exe
Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

@echo off && color 9f && setlocal

set wd=\\lea\Deployment\Software\KeePass
set log=%wd%\keepass.log
set tools=\\lea\Deployment\Sonstiges\tools
set instversion=0.0
set versionEL=9
set regEL=999
set exepath=none
set retry=0

REM:: ######## EDIT THIS ####
set newversion=2.34
REM:: #######################

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
REM::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
REM::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
if exist "c:\Program Files (x86)\KeePass2\KeePass.exe" set exepath="c:\Program Files (x86)\KeePass2\KeePass.exe"
if exist "c:\Program Files\KeePass2\KeePass.exe" set exepath="c:\Program Files\KeePass2\KeePass.exe"
if %exepath%==none goto install
goto checkversion

:checkversion
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k )
%tools%\VersionCompare.exe %instversion% %newversion%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto plugins
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto plugins

:install
echo %date% %time:~0,8% - %computername% installiert... >> %log%
TASKKILL /f /im KeePass.exe
start /w %wd%\KeePass-%newversion%.exe /VERYSILENT /SP- /SUPPRESSMSGBOXES /LOG="logs/%computername%.log" /NORESTART /CLOSEAPPLICATIONS /SAVEINF="standardsetup.inf" /DIR="%ProgramFiles%\KeePass2" /GROUP="KeePass 2"
set kpel=%errorlevel%
if %kpel%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running)
if %kpel%==1602 goto retry REM:: user canceled installation (eg. taskkill)
if %kpel%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
if %kpel%==1638 goto retry REM:: another product is already installed, denies an update
echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %kpel% abgeschlossen >> %log%
goto plugins

:plugins
REM:: copy plugins
if exist "c:\Program Files (x86)\KeePass2\KeePass.exe" xcopy /Y /S /I "%wd%\plugins" "c:\Program Files (x86)\KeePass2\plugins"
if exist "c:\Program Files\KeePass2\KeePass.exe" xcopy /Y /S /I "%wd%\plugins" "c:\Program Files\KeePass2\plugins"
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %kpel%, retry in 500Sek... >> %log%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 500 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, RETRY FAILED! >> %log%
goto end

:end
endlocal
exit

Meine letzten Posts zum Firefox Script Deployment sind schon etwas älter: 17.0.2, 9.0, 8.0.1.
Sie beschreiben die zugrundeliegende Technik, mit der Firefox verteilt werden kann.

Update 19.09.2016: aktualisiertes Script beachtet jetzt die beiden verfügbaren 32/64bit-Architekturen von Firefox und updatet die installierte Architektur passend. Dafür müssen beide Installer in dem Format „Firefox48.0.2-32.exe“ und „Firefox48.0.2-64.exe“ vorliegen.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

Firefox 47.0.1

Das Installationsscript:

@echo off & Color 9f & setlocal
set wd=\\lea\Deployment\Software\Firefox
set log=%wd%\firefox.log
set tools=\\lea\Deployment\Sonstiges\tools
set instversion=0.0
set updateretry=0
set retry=0
set versionEL=9
set instEL=999
REM:: ######## EDIT THIS ####
set newversion=48.0.2
REM:: #######################

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto check
::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:check
REM:: prüfe ob eine 32bit Version von Firefox schon installiert ist
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c
REM:: falls keine 32bit Version von Firefox gefunden wurde, prüfe 64bit
if "%instversion%"=="0.0" for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox" /v "CurrentVersion"^|findstr "CurrentVersion"') do set instversion=%%c

REM:: Wenn Version nicht gleich: vergleiche Versionen mit dem Versionchecker
%tools%\VersionCompare.exe %instversion% %newversion%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto install
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log% & goto end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto end

:install
if "%processor_architecture%"=="AMD64" goto inst64

echo %date% %time% - %computername% (%instversion%) installiert %newversion% (32bit)... >> %log%
taskkill /F /IM firefox.exe
ping localhost -n 4
"%wd%\Firefox%newversion%-32.exe" -ms
goto cont

:inst64
echo %date% %time% - %computername% (%instversion%) installiert %newversion% (64bit)... >> %log%
taskkill /F /IM firefox.exe
ping localhost -n 4
"%wd%\Firefox%newversion%-64.exe" -ms
goto cont

:cont
set instEL=%errorlevel%
if %instEL%==1618 goto retry REM:: msiexec process in use, installation already in progress (eg. windows updates running)
if %instEL%==1602 goto retry REM:: user canceled installation (eg. taskkill)
if %instEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
::if %instEL%==1638 goto uninstall REM:: another product is already installed, denies an update

echo %date% %time% - %computername% Installation abgeschlossen, Errorlevel %instEL% >> %log%
goto settings

:settings
REM:: Install 32-bit customisations
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%programfiles%\Mozilla Firefox\"
if exist "%programfiles%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%programfiles%\Mozilla Firefox\defaults\preferences"

REM:: Install 64-bit customisations
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\override.ini" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\mozilla.cfg" "%ProgramFiles(x86)%\Mozilla Firefox\"
if exist "%ProgramFiles(x86)%\Mozilla Firefox\" copy /Y "%wd%\local-settings.js" "%ProgramFiles(x86)%\Mozilla Firefox\defaults\preferences"

goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %instEL%, retry in 5min... >> %log%
set retry=1
REM:: 5 Minuten warten
ping localhost -n 300 > nul
goto install

:retryfailed
echo _!_ %date% %time:~0,8% - %computername% hat die Installation abgebrochen, %instEL%, RETRY FAILED! >> %log%
goto end

:uninstall
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion% aufgrund EL 1638 Fehler... >> %log%
taskkill /F /IM firefox.exe
start /w "%programfiles%\Mozilla Firefox\uninstall\helper.exe" -ms
start /w "%programfiles(x86)%\Mozilla Firefox\uninstall\helper.exe" -ms
echo %date% %time:~0,8% - %computername% - %instversion% fertig deinstalliert, retry... >> %log%
set retry=1
goto install

REM:: Removes Firefox Desktop Icon - Windows XP
::if exist "%allusersprofile%\Desktop\Mozilla Firefox.lnk" del "%allusersprofile%\Desktop\Mozilla Firefox.lnk" /S

REM:: Removes Firefox Desktop Icon - Windows 7
::if exist "C:\Users\Public\Desktop\Mozilla Firefox.lnk" del "C:\Users\Public\Desktop\Mozilla Firefox.lnk"

:end
endlocal
exit

Datei install.ini hatte ich in den letzten Posts immer noch mit drin. Ich glaube jedoch, dass die Datei gar nicht mehr benutzt wird und habe sie mittlerweile aus meiner Verteilung entfernt.

Die Verteilung läuft bereits seit Langem ohne Probleme.
script-based-firefox-26-deployment-log

Dieser Artikel soll nochmal als eine Kurzfassung meines kürzlich veröffentlichten Reader Deployment Guides, inklusive einer Anleitung für das Update der Verteilung auf Version 11.0.05, die kürzlich veröffentlicht wurde.

Die Schritte bleiben sehr ähnlich:

Schritt 1: Installer laden

Beachtet, dass das Update 11.0.04 als Grundlage braucht. Also holt euch 11.0.0, 11.0.04 und 11.0.05.
you know how…

Schritt 2: AIP lokal erstellen

msiexec /a AcroRead.msi

und einen lokalen Pfad angeben (z.B. „C:\Reader11.0.0mui“)

Schritt 3: Patchen

Erst 11.0.04 integrieren, dann 11.0.05:

X:\Software\Reader\installer>cd 11.0.04.63-mui
X:\Software\Reader\installer\11.0.04.63-mui>msiexec /a "C:\Reader11.0.0mui\AcroRead.msi" /p "AdbeRdrUpd11004_MUI.msp"
X:\Software\Reader\installer\11.0.04.63-mui>cd..
X:\Software\Reader\installer>cd 11.0.05-all
X:\Software\Reader\installer\11.0.05-all>msiexec /a "C:\Reader11.0.0mui\AcroRead.msi" /p "AdbeRdrSecUpd11005.msp"

adobe-reader-11-0-05-update-deployment-install

Schritt 4: Customization Wizard

Mit dem Customization Wizard die .msi bearbeiten und speichern. Wenn dabei ein setup.ini Fehler kommt, einfach eine leere setup.ini im selben Ordner wie die Installation erstellen, der Wizard füllt die dann.
adobe-reader-11-0-05-update-deployment-customization-wizard

Schritt 5: MST Eigenschaften überprüfen

Wie schon im letzten Artikel erwähnt, kann es sein, dass trotz Customization Wizard Anpassung einige Einstellungen der MST nicht ganz stimmen und dadurch z.B. die Sprache nicht korrekt auf Deutsch gestellt wird.
Öffnet also die Installationsdatei .msi und ladet die angepasste .mst Datei mit Orca über Transform -> “Apply Transform” ein.
Überprüft in der Property Tabelle folgende Wertepaare:

Propertyalter Wertneuer Wert
ProductLanguage10331031
ISLANGFLAGENUDEU
ProductCode{AC76BA86-7AD7-FFFF-7B44-AB0000000001}{AC76BA86-7AD7-1031-7B44-AB0000000001}
AgreeToLicenseNoYes
ENABLE_CACHE_FILESYesNo
EULA_ACCEPTNoYes
RebootYesNoYesNo

Schritt 6: Deployment

Nun könnt ihr dieses fertig geschnürte Paket in den deploy/[version] Ordner ablegen und das Verteilungsscript (siehe Deployment Artikel) anpassen, damit die neue Version verteilt wird. Dazu reicht es, die neue Version (muss dem Ordnernamen im deploy Ordner entsprechen) in Zeile 11 einzutragen.

Fertig!
Dieser Prozess, inklusive Tests auf einigen Rechnern, dauerte bei mir weniger als 30 Minuten. Ein Update ist also relativ schnell eingespielt.

Ich hatte in letzter Zeit öfter mit der Installation von Windows 7 auf älteren Computern zu tun. Damit meine ich Computer mit 1,6GHz Single Core, 1GB RAM, onboard Grafik und einer 40GB Festplatte.
Hier zusammengefasst ein paar Tipps & Tricks, die bei der Installation und Optimierung eines Windows 7 auf solchen Uralt-PCs helfen.

Wie viel Platz braucht Windows 7?
Je nach Version (Starter, Home, Pro, Enterprise) und je nach Architektur (32, 64) benötigt eine blanke Installation von Windows zwischen 4GB und 9GB Speicherplatz. Hinzu kommen die 2 Daten für die Auslagerung und den Ruhestand (pagefile und hyberfil), für gewöhnlich jeweils so groß wie der eingebaute RAM. Also ein frisch installiertes Windows 7 Home Premium 32bit mit 1,5GB RAM verbraucht etwa 7-8GB (4-5GB + 1,5GB + 1,5GB). Nun kommen noch große Datenmengen an Treibern, Windows Updates und temporären Daten hinzu. Dieses frisch installierte Windows 7 wächst von seinen 7-8GB auf 13GB allein nur durch die Installation aller Windows Updates und Service Pack 1 (Stand Feb 2013). Dazu kommen jetzt noch Treiber und Standardprogramme wie DirectX, Flash, Java, etliche Frameworks usw, die zum Betrieb aktueller Software oder Internetseiten gebraucht werden; 14-15GB für ein ausgestattetes System kann man also einplanen. Deswegen spricht Microsoft von einer Mindestanforderung von 16GB diese sind mindestens zu empfehlen. 20GB oder besser 30GB sollte die Partition fassen, wenn das System zukunftstauglich eingerichtet werden soll. Denn es folgen sicher weitere Updates, die Computerbenutzung schafft schnell neue Datenmengen, das Entpacken von Archiven benötigt ebenfalls temporären Platz auf der Systempartition.


Sollte ich alle Updates installieren?
Je nach Festplattenplatz und Nutzung des Computers empfiehlt es sich, die Windows Updates zumindest einmalig vollständig zu installieren. Updates sollen in erster Linie ja die Sicherheit und Stabilität verbessern. Aber auch wenn der Computer nicht in’s Internet gehen soll, also Sicherheit nicht so relevant ist, gibt es viele Updates die bestimmte Funktionen von Windows nachrüsten (z.B. die Erkennung von SD Karten mit mehr als 32GB) oder Voraussetzungen installieren (.NET Framework), die für den täglichen Gebrauch nützlich oder erforderlich sind.
Das Deaktivieren der Windows Updates verschafft dem PC etwas mehr Ruhe und entlastet das Netzwerk, ist aber grundsätzlich nicht zu empfehlen, da die Sicherheit des Computers stark beeinträchtigt wird.
Wenn der freie Platz der Partition zu klein wird, empfiehlt es sich die Sicherungsdateien der Updates zu löschen. Startet die „Datenträgerbereinigung“ des Systemlaufwerks und lasst die „Service Pack Sicherungsdateien“ aufräumen.


Performance-Tuning im „Leistungsinformationen- und tools“ (einfach in der Startmenü Suche eingeben):

Visuelle Effekte optimieren -> Für optimale Leistung anpassen: deaktiviert alle grafischen Spielereien, die vor allem Computer mit alter CPU und onboard Grafik in die Kniehe zwingen. Einzelne Effekte können auf Wunsch aktiviert werden, wenn man darauf Wert setzt. Zum Beispiel empfinden viele Menschen es als besonders anstrengend den Effekt „Kanten der Bildschirmschriftarten verfeinern“ zu deaktivieren. Wer nicht den kompletten Uralt Style erträgt kann auch „Visuelle Stile für Fenster und Schaltflächen“ wieder aktivieren.

Indizierungsoptionen anpassen -> Der Indizierungsdienst verbessert die Windows Suche durch das ständige Durchsuchen von Daten. Das kostet dauerhaft Leistung und hilft eher selten. Ich deaktiviere diesen Dienst auf den meisten PCs.
Entweder über „Dienste“ -> „Windows Search“ -> Beenden & Starttyp auf Deaktiviert stellen oder über die CMD mit den 2 Befehlen:

net stop wssearch
sc config wsearch start= disabled

Datenträgerbereinigung öffnen -> Wenn der PC normal läuft und auch noch einigen Neustarts wie gewünscht funktioniert kann man in der Datenträgerbereinigung einige überflüssige Daten loswerden. Am größten wird der Posten „Service Pack Sicherungsdateien“ sein, aber auch die „Temporary Internet Files“ und die Einträge der Fehlerberichterstattung können noch einige Megabyte enthalten. Lasst diese Punkt von Windows mal bereinigen. Alternativ ist auch der CCleaner ein super Tool zum Aufräumen.
Unter Windows XP gibt es im Ordner C:\Windows die berühmten $NtUninstall und $NtServicePackUninstall Ordner. Auch die können Weg um Speicher freizugeben, wenn alles läuft.


Dienste deaktivieren:
Dies ist immer ein kritischer Part, hier muss jeder selber entscheiden wie wichtig die Stabilität des Systems gegenüber dem Performancegewinn ist.

Hier eine Liste der Windows Dienste, die man (zumindest laut dem Autor des verlinkten Artikels) deaktivieren könnte: LINK.
Und noch eine Liste aller Dienste mit ihren Funktionen, empfohlenen Einstellungen und möglichen Nachteilen: LINK.

Allgemein kann man im „Dienste“ Dialog von Windows jeden Dienst erst Beenden (falls er läuft) und dann den Starttyp auf Manuell oder deaktiviert setzen.
Ich habe kaum einen Dienst deaktiviert (Windows Search, Design), kann hier also nicht viele Tipps geben. An dieser Stelle werde ich mich aber nochmal belesen und sicher ein paar Dienste wie Windows Error Reporting Service oder Windows Media Center Service Launcher nochmal überdenken. Denn außerhalb der Arbeit benötige ich viele Funktionen wirklich nicht.


Systemstart überprüfen:
Eine gute alte Möglichkeit die Leistung und vor allem den Systemstart zu erhöhen ist das Aufräumen der Autostart-Programme. Diese Programme werden automatisch mit Windows gestartet und bleiben meistens dauerhaft aktiv.

Das Tool „msconfig“ enthält den Tab „Systemstart“ und listet dort alle Programme auf, die mit Windows gestartet werden können. Alle gesetzten Haken zeigen aktive Autostarts an und sollten überprüft werden. Hier erfordert es ein wenig IT Hintergrund wissen, überflüssige Programme auszusortieren. Die Startup Application Knowledge Base verrät zur Not Informationen zu bekannteren Programmen.


Unbenötigte Windows Funktionen deaktivieren:
Viele Funktionen sind standardmäßig aktiviert, bleiben aber unbenutzt. Diese Liste der Funktionen findet ihr über die Startmenü Suche via „Windows-Funktionen aktivieren oder deaktivieren“, auch ein Menüpunkt in „Programme und Funktionen“.

Schaut die aktivierten Listenpunkte durch und deaktiviert auf Wunsch die Punkte. Ein Tooltip (bei Mouseover) verrät oftmals ausreichend, wofür die Funktion zuständig ist.
Ich habe Funktionen wie „Internetdruckclient“, „Windows DVD Maker“, „Windows Media Center“, „Plattform zu Windows-Minianwendungen“, „Remoteunterschiedskomprimierung“ und „Tablet-PC-Komponenten“ deaktiviert.

Update: Achtung! An dieser Stelle nicht „Windows Search“ deaktivieren, dann verschwindet die Suchleiste im Startmenü. Windows Search nur unter „Dienste“ deaktivieren.


Kleinkram:

Protokollierung deaktivieren: in der Registry unter HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\CIMOM die Einträge „EnableEvents“ und „Logging“ auf 0 setzen.

Werbeblocker: Werbung im Internet ist nicht nur anstrengend und nervig, sie verlangsamt auch den Aufbau einer Internetseite. Installiert Werbeblocker wie Adblock Plus in eurem Browser!

Registry Fehler suchen: CCleaner, RegCleaner und viele andere Programme suchen in der Registry nach fehlerhaften Einträgen und bereinigen diese. Das kann die Performance ebenfalls leicht verbessern.

Unnötige Programme deinstallieren: Programme und FUnktionen aufrufen und unnötige Programme deinstallieren, logisch.


Tuning Tools:
Das alles ist viel Arbeit und Fummelei, einige wenige kostenlose Tools übernehmen viele dieser Tuning Tipps. Für das Windows Tweaking ist aber 1 Freeware besonders gut geeignet und sehr zu empfehlen: Ultimate Windows Tweaker. Die kleine .exe Datei ist sehr mächtig, über 150 Tweaks können angewendet werden, sollte aber mit Vorsicht benutzt werden.


via, via, via, via, via

Das Deployment von .msu Dateien kann, laut Google, auf verschiedene Wege vollbracht werden; viele davon sehen recht kompliziert aus. Wer einen WSUS hat versucht via Rechtsklick -> Updates importieren im Microsoft Update Katalog dieses Update zu finden. Soll das Update ohne WSUS verteilt werden, hier mein Vorschlag:

wusa.exe Update.MSU /quiet

erledigt genau diesen Job!

Ein fertiges Startscript wäre zum Beispiel:

@echo on
setlocal

set wd=\\server\pfad\System\Sonstiges\Druckerfix
set log=\\server\pfad\System\Sonstiges\Druckerfix\log.txt

echo %date% %time% %computername% - startet die Installation >> %log%
wusa.exe %wd%\Windows6.1-KB982728-x86.msu /quiet /norestart
echo %date% %time% %computername% - abgeschlossen mit Fehlercode %errorlevel% >> %log%

endlocal

Das Script installiert die MSU still und leise, notiert alles in der Log und startet den Client nicht neu. Das heißt zwar, dass in der Log immer der Fehlercode 3010 eingetragen wird (Neustart benötigt); die Mitarbeiter werden dafür nicht weiter belästigt. Der

/norestart

Switch ist natürlich optional.

.vbs und .wsf Fehler

Folgende Fehler haben mich jetzt echt lange aufgehalten:

.vbs per Doppelklick:
Skriptmodul „VBScript“ für Skript „C:\test.vbs“ wurde nicht gefunden.
Can’t find script engine „VBScript“ for script „C:\test.vbs“.

.vbs per CMD:
CScript-Fehler: Skriptmodul „VBScript“ für Skript „C:\test.vbs“ wurde nicht gefunden.

.wsf:
Immer ein Fehler in Zeile 0.


6 Lösungsmöglichkeiten!

1)
Die einfachste Lösung, die auf so ziemlich jeder Internetseite steht, ist ein Set aus 3 CMD Befehlen:

regsvr32.exe VBScript

,

regsvr32.exe jscript.dll

und/oder

regsvr32.exe jscript.dll

. Darauf folgt jeweils ein Popup, die Komponente sei erfolgreich registriert werden o.Ä.

2)
Von diesen 6 hier präsentierten Lösungsmöglichkeiten hat nur dieser hier bei mir funktioniert, also, lesen!
In der Registry wurde dieser Schlüssel

HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32

von einem Antivirensystem modifiziert.

Dem (Standard) Key wurde folgender Wert zugewiesen:

C:\\Program Files\\Common Files\\McAfee\\SystemCore\\ScriptSn.20110513152421.dll

und keine Änderungen waren ohne Weiteres erlaubt. Deswegen konnte regsvr32 diesen Key nicht updaten.

Also Rechtsklick auf InprocServer32 -> Berechtigungen und dem aktuellem Nutzer oder Jeder Vollzugriff geben. Den Wert auf

C:\Windows\system32\vbscript.dll

setzen und die Berechtigungen wieder normalisieren.

Fertig! Ein Hoch auf die einzigen 2 Webseiten im Netz auf denen ich diesen Lösungsansatz gefunden habe: 1 und 2 !

3)
Schaut in eurem Windows\system32\ Ordner nach der vbscript.dll. Merkt euch Dateigröße; die exakte Größe in Bytes(!) findet ihr in den Eigenschaften der Datei. Schaut auf einem Vergleichssystem (selbes OS, funktionierendes VBScript) nach dieser Datei und vergleicht Größe und Daten. Wenn sie auffällig unterschiedlich sind ersetzt ihr die Datei auf dem fehlerhaften System mit der Datei auf dem fehlerfreien System (selber OS!). Wiederholt Schritt 1).
Downloadet euch alternativ Windows Script 5.7, entpackt die .exe und nutzt die darin enthaltenen .dll Dateien. Allerdings ist der Download nur für Windows XP Systeme, keine Garantie, dass das funktioniert!

4)
In den Internet Optionen kann man im Scripting Bereich noch die 2 Einstellungen von Active Scripting and Java Applets überprüfen, sollten beide Enabled sein.

5)
Mir fiel noch ein Tool aus meinem vorletzten Windows 7 Seminar ein: sfc.exe! Das System File Checker Programm scannt alle wichtigen Systemdateien nach Änderungen und kann korrupte Dateien auf den Standard wiederherstellen. Dafür nutzt es die Windows Resource Protection, die Änderungen an Systemdateien mit speziellen DACLs und ACLs erkennt.
Also:

sfc.exe /scannow

und abwarten. Möglicherweise werden keine „Integritätsverletzungen“ festgestellt, möglicherweise wurden welche festgestellt und konnten behoben werden, vielleicht wurden auch welche festgestellt und konnten nicht behoben werden.
Dann hilft der Befehl

findstr /c:"[SR]" %windir%\logs\cbs\cbs.log >sfcdetails.txt

um alle nicht reparierbaren Fälle in eine neue .txt Datei zu filtern.

Mehr zu sfc

6)
Windows XP User können testweise Windows Script neu installieren. „Windows Script 5.7“ für Windows XP gibt es hier als Download. Windows Vista/7 Nutzer brauchen es gar nicht erst zu probieren, die Installation lässt sich auch mit Kompatibilitätseinstellungen nicht durchführen.
Aber die .exe kann man mit fähigen Programmen entpacken. Enthalten sind viele wichtige .dll und .exe Dateien, die nützlich sein könnten.

Ich hoffe einer dieser Tipps hat für euch funktioniert und eure .vbs und .wsf Scripte funktionieren wieder. Bei mir hat Punk 3) zumindest für beide Scripttypen die Lösung gebracht.