Edit Comment
IT-Stuff, Tutorials, Software, Internet, Unterhaltung Willkommen auf IMA

Registry Werte aus der Registry auslesen ist ein alter Hut, no problem. Auch ganze Pfade aus der Registry lesen stellt grundsätzlich kein Problem dar. Schwierig wird es jedoch, wenn der auszulesende Pfad Leerzeichen enthält. Und seit Windows Vista enthalten ja fast alle Pfade ein Leerzeichen: C:\Program Files\…

Dieser Post dient der Zusammenfassung der wichtigsten Batch Registry Abfragen.

Einfache Werte und Pfade ohne Leerzeichen

@echo on & Color 9f & setlocal
REM einfache Werte
set ff=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 ff=%%c
echo %ff%

REM einfache Pfade
set spath=0
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Ghisler\Total Commander" /v "IniFileName"^|findstr "IniFileName"') do set spath=%%c
echo %spath%

Also eine festgelegte Anzahl an Tokens, Leerzeichen als Delimiter, der dritte Token ist der Registry Wert. Token 1 und 2 sind der Name des Registry Werts und der Wert-Typ.

Werte oder Pfade mit Leerzeichen

REM Werte mit Leerzeichen
set value=0
for /f "usebackq skip=2 tokens=1,2*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /v "Startmenu"`) do set value=%%c
echo %value%

REM Pfade mit mehreren Leerzeichen
set path1=0
set path2=0
REM Möglichkeit 1: mit Option usebackq, /ve (liest den (Standard) Wert aus)
for /f "usebackq skip=2 tokens=1,2*" %%a in (`reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /ve`) do set path1=%%c
echo %path1%
REM Möglichkeit 2: ohne Option usebackq
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FileZilla Client" /ve') do set path2=%%b
echo %path2%

Für Werte oder Pfade mit Leerzeichen müssen 3 Dinge beachtet werden:
1. Die Delimiter entfallen.
2. Tokens empfangen mit * mehrere durch Leerzeichen getrennte Werte und packen sie in den letzten Token zusammen; den wir dann abfragen.
3. Bei der Methode 1 mit usebackq müsst ihr unbedingt auf die Anführungszeichen achten! Der komplette Inhalt in den Klammern wird mit einem “backquote”, also `, eingeschlossen. Das ` ist kein ” und kein ‘ und kein ´ usw, achtet darauf! Alle anderen Angaben kommen wie gewohnt in doppelte Anführungszeichen. Bei der Methode ohne usebackq kommt der Klammerinhalt in normale einfache Anführungszeichen ‘.

Das Ergebnis aller obrigen Code-Schnipsel:
registry werte mit batch auslesen mit leerzeichen usebackq Batch   Registry Werte mit und ohne Leerzeichen auslesen


Firefox 26.0 AD Script Deployment (Update)

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. Ich möchte das hier für die aktuellste Version 26.0 zusammenfassen.

Firefox 26.0

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 retry=0
set versionEL=9
set instEL=999
REM ######## EDIT THIS ####
set newversion=26.0
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
echo %date% %time% - %computername% (%instversion%) installiert %newversion%... >> %log%
taskkill /F /IM firefox.exe
ping localhost -n 2
"%wd%\Firefox%newversion%.exe" -ms
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

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"

echo %date% %time% - %computername% Installation abgeschlossen, Errorlevel %instEL% >> %log%
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

In Zeile 10 immer die aktuelle Version eintragen und den Installer entsprechend diesem Schema umbenennen: Firefox[Version].exe (z.B. Firefox26.0.exe)

local-settings.js:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");

mozilla.cfg:

//Firefox Default Settings

// Standard Browser Check
// pref("browser.shell.checkDefaultBrowser", true);

// Firefox Update Check
pref("app.update.enabled", true);

// stops the 'know your rights' button from displaying on first run
pref("browser.rights.3.shown", true);

// stops the request to send performance data from displaying
pref("toolkit.telemetry.enabled", false);

// Disable JS windows popping up without direct action from the user
// (as lots of porn and spam sites do)
pref("dom.disable_open_during_load", true);

// Syntax highlighting in View Source.
pref("view_source.syntax_highlight", true);

// Ein paar Anpassungen von http://www.amsys.co.uk/2013/blog/configuring-firefox-17-for-deployment/#.UPAXNuT8Jn4
// This will stop the ‘Thanks for installing Firefox’ from showing when first launching Firefox.
pref("app.update.showInstalledUI", false);
// This will stop another ‘Congratulations on installing Firefox’ screen when launching Firefox.
pref("browser.startup.homepage_override.mstone", "ignore");

Ich habe mal wieder alle Eigenschaften überprüft und alle veralteten Settings entfernt. Diese hier sollten alle noch stimmen.

override.ini:

[XRE]
EnableProfileMigrator=false

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 460x164 Firefox 26.0 AD Script Deployment (Update)


Flash ist eine weitere Standardsoftware auf den meisten Windows PCs, die regelmäßig aktualisiert werden muss. Also wieder ein Fall für eine Verteilung im Netzwerk. Nach den letzten Deployments [Skype, Java, Reader (Update), Firefox/Thunderbird (Update)] ist die Verteilung von Flash fast ein Kinderspiel.

Anmerkungen

Wie üblich wird zuerst die Version aus der Registry gelesen, überprüft und schlussendlich erfolgt die Installation .exe Dateien:

start /w flash-%version%_IE.exe -install
start /w flash-%version%_OTHER.exe -install

Achtung: Flash muss in 2 verschiedenen Ausführungen installiert werden. Auf der Downloadseite ist die Rede vom Internet Explorer und “Plug-In basierten Browsern”; also praktisch allen anderen Browsern. Daher 2 aufeinanderfolgende Installationen.
In 99% der Fälle bereitet die Installation keine Probleme. Für die restlichen 1% habe ich auch in diese Verteilung Fehlererkennung und ein Retry eingebaut. Die Fehler 1618, 1602 und 1603 resultieren in einem erneuten Installationsversuch 5 Minuten später.

Konfiguration

Nach der Installation wird noch eine Konfigdatei kopiert, die Flash mit einigen wenigen Einstellungen versieht.
mms.cfg:

AutoUpdateDisable=1
SilentAutoUpdateEnable=0
SilentAutoUpdateVerboseLogging=0

flash deployment working dir mms config file scriptbasiertes Flash Deployment im AD – flexibel, angepasste Einstellungen, Logging, Retry
Die Datei könnt ihr natürlich so anpassen, wie ihr die Einstellungen wollt.

Verteilung

Hier das Installer Script für die aktuellste Flash Version:
flash-installer.bat:

@echo off & Color 9f & setlocal

set wd=\\lea\Deployment\Software\Flash
set log=%wd%\flash-log.txt
REM --- Version hier ändern ---
set version=12.0.0.38
REM ---------------------------
set tools=\\lea\Deployment\Sonstiges\tools
set flashieEL=999
set flashplEL=999
set combinedEL=999
set versionEL=999
set instversion=000
set retry=0

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 check installed version
for /f "tokens=1,2,3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin" /v "Version"^|findstr "Version"') do set instversion=%%c
if "%instversion%"=="000" goto install
%tools%\VersionCompare.exe %instversion% %version%
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% (neu) installiert >> %log% & goto end

:install
echo %date% %time:~0,8% - %computername% (%instversion%) startet die Installation... >> %log%
start /w %wd%\flash-%version%_IE.exe -install
set flashieEL=%errorlevel%
start /w %wd%\flash-%version%_OTHER.exe -install
set flashplEL=%errorlevel%

if %flashieEL%==1618 goto retry REM msiexec process in use, installation already in progress
if %flashieEL%==1602 goto retry REM user canceled installation
if %flashieEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java)
if %flashplEL%==1618 goto retry REM msiexec process in use, installation already in progress
if %flashplEL%==1602 goto retry REM user canceled installation
if %flashplEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java)
if %flashieEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end
if %flashplEL%==1041 echo %date% %time:~0,8% - %computername% strange 1041 open browser fail, end >> %log% & goto end

set combinedEL=%flashieEL%%flashplEL%
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, errorlevel: %combinedEL% >> %log%
goto finish

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat nicht Errorlevel 00 erreicht, retry in 5min... >> %log%
set retry=1
ping localhost -n 300 > nul
goto install

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

:finish
REM copy flash config file for silent background updates
if "%processor_architecture%"=="x86" xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y & goto end
xcopy "%wd%\mms.cfg" "%systemroot%\SysWOW64\Macromed\Flash" /y
xcopy "%wd%\mms.cfg" "%systemroot%\System32\Macromed\Flash" /y
goto end

:end
endlocal

Anpassungen

In dem Script tragt ihr in Zeile 8 immer die gewünschte Version ein und benennt die Installationsdateien nach folgendem Schema um:
flash-[Version]_IE.exe (z.B. flash-12.0.0.38_IE.exe)
flash-[Version]_OTHER.exe (z.B. flash-12.0.0.38_OTHER.exe)
Die Verteilung besteht wie üblich aus den üblichen Verteilungsdateien, eurer angepassten Konfigurationsdatei mms.cfg und den umbenannten Installationsdateien.

Fertig!
script based flash deployment ad gpo files log 460x336 scriptbasiertes Flash Deployment im AD – flexibel, angepasste Einstellungen, Logging, Retry

Weiterführende Links:
Flash Downloads for Deployment
Ivan Dretvic’s Guide zu Flash 11 Deployment via GPO / 11.2 with auto-update
Adobe Flash Player Administration Guide


Datenschutz und Verschlüsselung sind große Themen zurzeit, seit der NSA Story wichtiger als je zuvor. In Zeiten von Whatsapp und Facebook wird trotzdem fröhlich weiter offen kommuniziert. Oftmals werden auch private, geheime oder sicherheitskritische Informationen in diesen Netzwerken verschickt, beispielsweise Bankdaten, Zugänge oder Passwörter.

Was nun aber tun, wenn man eine geheime Information schnell und einmalig an eine andere Person schicken muss?

OneTimeSecret.com! Diese Seite bietet einen unschätzbaren Service an, super einfach zu benutzen.
Informationen eingeben (bis zu 25.000 Zeichen sind möglich), ggf. ein Zugangsschlüssel (“Passphrase”)eingeben, Link generieren lassen.
onetimesecret.com generate secret 460x297 Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com
Ist der Link erst einmal generiert kann die Information nicht mehr verändert werden. Mit Passphrases verschlüsselte Informationen werden nicht einmal mehr angezeigt.
onetimesecret.com generated secret page 460x250 Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com
Tipp: speichert euch den Link dieser Seite. später könnt ihr auf dieser Seite erfahren, wann das Geheimnis abgerufen wurde.

Die Information kann nur ein einziges Mal über den generierten Link abgerufen werden. Danach wird sie direkt unwiderruflich gelöscht. Für Geheimnisse, die mit einer Passphrase verschlüsselt wurden, muss der Empfänger des Links natürlich auch die Passphrase erhalten.
onetimesecret.com view secret reply Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

Wie gesagt kann der Ersteller des Geheimnisses mit dem gespeicherten Link nach dem Erstellen seines Links jederzeit abfragen, ob seine Information abgerufen wurde.
onetimesecret.com generated secret recieved Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com

Ich finde die Seite echt super praktisch und ebenso einfach zu benutzen. Ich werde sie bestimmt noch oft gebrauchen. Meine Empfehlung: niemals sensible Informationen in den heutigen Netzwerken oder Kommunikationswegen verteilen. Ein wenig paranoid könnte man eigentlich schon behaupten: Alles ist einsehbar icon wink Private/Geheime Informationen einmalig im Internet teilen mit OneTimeSecret.com


Die aktuelle Version von KMPlayer, Version 3.7, bringt neue Funktionen, leider aber auch neue Schwierigkeiten. Während der Installation wird, relativ unscheinbar, ein Feature namens Pandora TV installiert. Es steht in der Feature-Liste ganz unten.
kmp player 3.7 pandora service installation1 KMPlayer 3.7 mit umstrittenem Pandora TV Service
Pandora TV ist ein Video-Hoster wie Youtube, der vor allem in Korea einen großen Marktanteil hält. Von Pandora gibt es sowohl Software als auch Plugins, die sich leider sehr tief in das System eingraben. KMPlayer scheint ein Kooperation eingegangen zu sein und installiert nun auch Pandora TV Dienste im Rahmen seiner KMP+ Dienste, die direkt an mehreren Stellen im System abgelegt werden.
Ab diesem Moment fängt bei mir der Malwarebytes Anti-Malware Scanner an, ausgehende Verbindungen von einer kmpservice.exe zu der IP 111.111.111.111 zu blockieren; im 60 Sekunden Takt! Außerdem kursieren Gerüchte, dass KMPlayer oder Pandora anhand dieser ständigen Abfragen das Verhalten des Nutzers protokollieren.

Wer ähnliche Probleme hat bzw. wie ich dieses Feature während der Installation weder entdeckt noch deaktiviert hat, hat nun 2 Möglichkeiten:

1. Deinstallation von KMPlayer
Während des Updates von KMPlayer 3.6 auf 3.7 durch den Auto-Updater musste ich 4 oder 5 Adware/Toolbar Installationen abwenden, die standardmäßig mitinstalliert werden. Das ist schon ziemlich heftig. Die dicke Kooperation mit Pandora TV macht mich ebenfalls stutzig.
In einem Bereich wie Video Player Freeware ist das alles Grund genug nach Alternativen zu suchen. Es gibt relativ viele Freeware Player, einige davon bekannter, einige weniger. Daher mal die Frage an meine Leser: Welche Video Player Software nutzt ihr? Habt ihr verschiedene Player für verschiedene Zwecke oder diesen einen perfekten multifunktionalen Player?

2. Deaktivierung und Deinstallation von Pandora
Wer das KMP+ Feature sowie die Pandora Dienste im KMPlayer nicht nutzt, kann diese Dinge deaktivieren bzw. deinstallieren. Dadurch wird der KMPlayer als solches nicht verändert, er funktioniert danach immernoch.

Zuerst empfehle ich die Deaktivierung des Pandora Dienstes. Dies geht ganz normal über die services.msc Dienste Übersicht:
kmp player 3.7 pandora service beenden 460x296 KMPlayer 3.7 mit umstrittenem Pandora TV Service
Anschließend sollte Pandora TV komplett deinstalliert werden. Das Programm erscheint natürlich nicht in der Programme Übersicht von Windows und hat keine Startmenüeinträge, also muss die Deinstallation manuell über die unins000.exe im Ordner
c:\Program Files (x86)\PANDORA.TV\PanService\
bzw.
c:\Program Files\PANDORA.TV\PanService\
gestartet werden.
In diesem Ordner liegen auch die ganzen KMPlayer Dateien, die das Programm zum Dienst befördern: KMPServiceStarter.exe, KMPService.exe, KMPProcess.exe, KMPElevateExecutor.exe. Das klingt schon alles ganz schön heftig dafür, dass der vom Nutzer eingegebene Installationspfad ganz woanders ist.
Nach der Deinstallation sollte Pandora auch aus der Dienste Liste verschwunden sein.
Das müsste reichen um KMPlayer etwas sicherer zu nutzen.


Letzte Woche hatte ich das skriptbasierte Skype Deployment im AD gezeigt. Wie das Glück so will wurde kurz darauf die neue Version 6.11.32.102 freigegeben und ich darf nochmal verteilen. Ich nutze die Gelegenheit um die Vorbereitung und Verteilung des Updates nochmal im Schnelldurchlauf durchzugehen, diesmal sogar mit Bildern! icon smile Skype Update (6.11.32.102) Deployment Kurzfassung

Schritt 1: Download

Auf skype.com/go/getskype-msi gibt es wieder die aktuellste MSI.

Schritt 2: AIP erstellen

msiexec /a SkypeSetup.msi TARGETDIR=c:\skype\6.11

Schon ca. 1 Sekunde nach dem Befehl sollten alle Daten entpackt worden sein:
skype script deployment update install 460x146 Skype Update (6.11.32.102) Deployment Kurzfassung

Schritt 3: MST erstellen/überprüfen (optional)

Anmerkung: Dieser Schritt ist optional, die Installation ist auch ohne MST möglich. Dabei wird dann eine Standardinstallation durchgeführt. Mit msiexec Parametern wie “FEATURE_IEPLUGIN=0 FEATURE_FFPLUGIN=0″ lassen sich bestimmte Einstellungen auch ohne MST anpassen. Mehr Links dazu im originalen Artikel.
MSI mit Orca öffnen, die (von der Version 6.10) bereits existierende MST (Download) anwenden und nachschauen ob alle Änderungen noch stimmen:
skype script deployment update orca msi mst 460x286 Skype Update (6.11.32.102) Deployment Kurzfassung

Schritt 4: Kopieren

Damit die Skriptverteilung mit meinem Deployment Skript (siehe unten) funktioniert, müssen die in Schritt 2 entpackten AIP Installationsdateien sowie die MST aus Schritt 3 in einem bestimmten Ordner liegen.
Und zwar, relativ vom Skype Deployment Ordner gesehen, in einem Unterordner \deploy\[Version], also in diesem Fall:
\\server\Software\Skype\deploy\6.11.32.102\*AIP-Daten*
skype script deployment update dir Skype Update (6.11.32.102) Deployment Kurzfassung

Schritt 5: Deployment

Holt euch das Installationsskript aus meinem Skype Deployment Post, es wurde seit dem nicht verändert.
Dann muss nur noch in Zeile 13 die neue Version “6.11.32.102” eingetragen werden.
Und los gehts!
skype script deployment update log 460x193 Skype Update (6.11.32.102) Deployment Kurzfassung


Skype Deployment via Startscript im AD

Thema heute: Skype Deployment im Active Directory via GPO Startscript.

Ziemlich straight forward eigentlich:

Schritt 1: Download

Es gibt immer die aktuellste MSI unter dieser statischen URL.

Schritt 2: AIP erstellen

Damit könnt ihr dann direkt mit folgendem CMD Befehl in einem temporären Ordner ein AIP erstellen:

msiexec /a SkypeSetup.msi TARGETDIR=c:\skype\6.10

Schritt 3: MST erstellen

Ihr könnt eure eigene MST erstellen (MSI mit Orca öffnet, Transform -> New Transform) oder meine MST hier herunterladen. Meine MST enthält die folgenden Änderungen:
Property -> ProductLanguage: 1031
Property -> ProductLanguageCode: de
Registry -> “Software\Microsoft\Windows\CurrentVersion\Run” gelöscht
Shortcut -> “SkypeDesktopShortcut” gelöscht

Mehr Hinweise zur MSI, MST und den Parametern hier, hier und hier.

Schritt 4: Skript

Nachdem ihr die fertigen AIP Daten auf ein Netzlaufwerk geschoben habt, kann es eigentlich auch schon losgehen mit der Skriptverteilung.
Ein Skript überprüft die Version der installierten Skype Version und patcht dann auf die neue Version falls nötig.
Hier also das install Script:
Stand: 15.01.2014 (Skype 6.11.32.102), working

@echo on && color 9f && setlocal
set wd=\\lea\Deployment\Software\Skype
set log=%wd%\skype.log
set tools=\\lea\Deployment\Sonstiges\tools
set skypedir=none
set skypeEL=999
set instversion=0.0
set versionEL=9
set regEL=999
set exepath=none
set retry=0
REM ######## EDIT THIS ####
set newversion=6.11.32.102
REM #######################

REM insert all sysinternals eula accepts
start /wait "" cmd /c \\lea\Deployment\Sonstiges\sysinternals\sysinternalseulaaccept.bat

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\Skype\Phone\skype.exe" set exepath="c:\Program Files\Skype\Phone\skype.exe"
if exist "c:\Program Files (x86)\Skype\Phone\skype.exe" set exepath="c:\Program Files (x86)\Skype\Phone\skype.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 end
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log% & goto end

:install
echo %date% %time:~0,8% - %computername% installiert... >> %log%
msiexec.exe /i %wd%\deploy\%newversion%\SkypeSetup.msi /qn /norestart TRANSFORMS=%wd%\deploy\%newversion%\DE-norun-nodesktopshortcut.mst FEATURE_IEPLUGIN=0 FEATURE_FFPLUGIN=0
set skypeEL=%errorlevel%
if %skypeEL%==1618 goto retry REM msiexec process in use, installation already in progress (eg. windows updates running)
if %skypeEL%==1602 goto retry REM user canceled installation (eg. taskkill)
if %skypeEL%==1603 goto retry REM fatal error, some use it for "already installed" (eg. java)
if %skypeEL%==1638 goto uninstall REM another product is already installed, denies an update
echo %date% %time:~0,8% - %computername% hat Version %newversion% mit EL %skypeEL% abgeschlossen >> %log%
if %processor_architecture%==x86 goto reg32
if %processor_architecture%==AMD64 goto reg64
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hatte den Fehler %skypeEL%, 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, 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%
msiexec /x {1845470B-EB14-4ABC-835B-E36C693DC07D} /qn /norestart
echo %date% %time:~0,8% - %computername% - %instversion% deinstalliert, retry... >> %log%
set retry=1
goto install

:reg32
%COMSPEC% /C reg add "HKLM\Software\Policies\Skype\Phone" /v "DisableVersionCheck" /d "1" /t REG_DWORD /f
set regEL=%errorlevel%
%COMSPEC% /C reg add "HKLM\Software\Policies\Skype\Phone" /v "DisableSupernode" /d "1" /t REG_DWORD /f
set regEL=%regEL%%errorlevel%
echo %date% %time:~0,8% - %computername% hat die (32bit) Reg Keys mit EL %regEL% importiert >> %log%
goto end

:reg64
%COMSPEC% /C reg add "HKLM\Software\Wow6432Node\Policies\Skype\Phone" /v "DisableVersionCheck" /d "1" /t REG_DWORD /f
set regEL=%errorlevel%
%COMSPEC% /C reg add "HKLM\Software\Wow6432Node\Policies\Skype\Phone" /v "DisableSupernode" /d "1" /t REG_DWORD /f
set regEL=%regEL%%errorlevel%
echo %date% %time:~0,8% - %computername% hat die (64bit) Reg Keys mit EL %regEL% importiert >> %log%
goto end

:end
endlocal

Hm ja, wurschtelt euch durch, hier die Key-Features kurz gefasst:
Sysinternals EULA Accept (siehe unten)
Clientfilter
– Versionsüberprüfung anhand der .exe (32bit/64bit angepasst) mit Sigcheck statt per Registry. Ich bin mir noch unsicher ob ich in Zukunft auf die .exe oder Registry setze
skype script deployment version 460x115 Skype Deployment via Startscript im AD
– Versionsvergleich mit versioncompare.exe
– Installation per MSI mit einer MST Anpassung für: Allusers, kein Desktop Shortcut, kein Autorun, deutsche Sprache.
- Fehlermanagement für typische Fehler: 1618, 1602 und 1603 mit 5 Minuten warten Retry und 1638 mit Uninstall und Retry. Der Uninstall Product Code müsste für Skype 5.9 und aufwärts stimmen
– Registry Key Imports für no-Autoupdate und “DisableSupernode”, was auch immer das ist, sieht man aber sehr häufig, 32bit/64bit angepasst
– alles wird gut in einer Logdatei festgehalten (siehe unten)

Die in Zeile 17 verwendete sysinternalseulaaccept.bat gebe ich euch auch noch. Sie bewirkt, dass die Sysinternals Tools benutzt werden können, ohne, dass das “EULA akzeptieren” Popup erscheint. Denn ich glaube, dass die Tools sich per Kommandozeile nicht verwenden lassen, solange man nicht diese EULA einmal händisch akzeptiert hat. Nach dem Ausführen dieser Batch Datei sollte das keine Probleme mehr machen.

REM  Thanks: Peter Hahndorf
REM  URL: http://peter.hahndorf.eu/blog/2010/03/07/WorkAroundSysinternalsLicensePopups.aspx

reg.exe ADD "HKCU\Software\Sysinternals\AccessChk" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AccessEnum" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdExplorer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdInsight" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\AdRestore" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Autologon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Autoruns" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\BgInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\BlueScreen" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\CacheSet" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ClockRes" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Contig" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Coreinfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Ctrl2cap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DebugView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Desktops" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Disk Usage" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Disk2vhd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DiskExt" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Diskmon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\DiskView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\EFSDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Handle" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Hex2dec" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Junction" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LDMDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ListDLLs" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LiveKd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LoadOrder" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\LogonSessions" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\MoveFile" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\NTFSInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PageDefrag" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PendMoves" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PipeList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PortMon" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ProcDump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Process Explorer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Process Monitor" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ProcFeatures" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsExec" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsFile" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsGetSid" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsInfo" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsKill" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsLoggedOn" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsLogList" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsPasswd" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsService" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsShutdown" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsSuspend" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\PsTools" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RAMMap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RegDelNull" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RegJump" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\RootkitRevealer" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\SDelete" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ShareEnum" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ShellRunas" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Sigcheck" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Streams" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Strings" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Sync" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\TCPView" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\VMMap" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\VolumeId" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\Whois" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\WinObj" /v EulaAccepted /t REG_DWORD /d 1 /f
reg.exe ADD "HKCU\Software\Sysinternals\ZoomIt" /v EulaAccepted /t REG_DWORD /d 1 /f
exit

Sie muss eigentlich nur einmal pro PC ausgeführt werden, danach sind die Reg Keys ja drin. Jedoch dauert die Ausführung eh nur 1-2 Sekunden, eine Überprüfung würde da kaum Sinn machen.

Hier ein Auszug aus der Logdatei:
skype script deployment log 460x274 Skype Deployment via Startscript im AD
Hier sieht man gut die verschiedenen Abläufe:

  • Rechner 60, 42 und 28 deinstallieren zuerst eine alte Version, bei der die Installation der neuen Version mit Fehlercode 1638 abbrach. Nach der Deinstallation erfolgt die Neuinstallation problemfrei.
  • Rechner 9 und 54 haben bereits diese oder eine neuere Version installiert.
  • Und der Rechner 36 hatte eine ältere Version installiert, die ohne Deinstallation erfolgreich aktualisiert werden konnte.

Somit wurden bisher alle Computer letztendlich mit Errorlevel 0 erfolgreich bedient.

Download

Ich habe mal alle nötigen Dateien zu einem Download zusammengefasst:
skype script deployment download Skype Deployment via Startscript im AD
download b Skype Deployment via Startscript im AD
skype [.zip]




Translator

Categories

Admin

Sie möchten hier werben oder Sponsor auf längere Zeit werden? Ich garantiere Ihnen unschlagbare Preise bei meinen Besucherzahlen. Egal ob Banner, Textlinks oder andere Werbeformen. Informieren Sie sich bei mir unter werbung@hannes-schurig.de