Flickr ist ein sehr bekannter und guter Foto Dienst. Dort erstellte Alben sind schön anzusehen und bieten viele Funktionen. Nur eine Sache fehlt bis heute: der Download aller Fotos eines Nutzers, einer Gruppe bzw. eines Albums. Einzelne Fotos lassen sich herunterladen, dazu muss man nur das Foto öffnen, alle Größen anzeigen lassen und den dortigen Download Link nutzen. Bei mehreren Fotos sind externe Programme oder Dienste nötig.

Hier stelle ich ganz kurz 2 Programme und 1 Browser Plugin vor, die diesen „Massen-Download“ ermöglichen:

Downloadr (Freeware)

Downloadr ist ein kleines (<1MB) kostenloses Tool, welches neben dem Download von Flickr Bildern noch viele weitere Funktionen bietet. Diese lassen sich über viele Einstellungsmöglichkeiten im Programm einfach konfigurieren. Die Fotos werden immer in der größten Größe heruntergeladen, alle Bildinformationen (EXIF/IPTC) werden eingebettet, dank Authentication können auch private Bilder geladen werden, 1-Klick Backup aller Fotos, automatische Programm-Updates.
flickr-downloader-downloadr-settings flickr-downloader-downloadr-user-set-album

Daumen hoch, die Software ist einfach, effizient und hat echt viel Funktionen for free.

Bulkr (Shareware)

Bulkr ist eine Adobe AIR Anwendung, die ebenfalls sehr viele Funktionen in einer schönen und übersichtlichen Oberfläche bereitstellt; leider viele Funktionen nur für PRO User ($30 aufwärts). So kann man zwar umfangreiche Suchen starten, Bilder herunterladen, aber vieles geht dann nicht mehr: alle Fotos markieren, Fotos sortieren, in „Original“ Größe herunterladen, Bildinformationen einbetten und mehr bleibt den PRO Users vorenthalten. Trotzdem lassen sich alle Fotos eines größeren Sets auf einmal markieren, indem man das erste Foto markiert, zum letzten Foto scrollt und dieses dann mit Shift+Klick markiert. Immerhin.
flickr-downloader-bulckr-download flickr-downloader-bulckr-pro

Also als Pro User scheint man den gleichen Funktionsumfang zu haben wie bei Downloadr, nur etwas hübscher.

DownFlickr (Chrome)

DownFlickr ist ein Chrome Plugin mit 2 Hauptfunktionen: Einzelne Fotos und Foto-Sets erkennen und herunterladen. Dazu reicht es das Foto oder Set aufzurufen und auf das Extension Icon zu klicken; das Element wird erkannt und die Elemente automatisch angezeigt. Der Klick auf „Download All“ öffnet für jedes Bild einen neuen Tab, der automatisch sofort den Download initiiert, der Tab wird sofort wieder geschlossen. Im Endeffekt also ein bequemer 1-Klick-Download ohne, dass eine Software installiert werden muss; dadurch auch betriebssystemunabhängig.
flickr-downloader-downflickr-download

Für registrierte Flickr Nutzer könnte FlickAndShare noch interessant sein. Dort soll auch einiges möglich sein, wenn man diesen Dienst mit dem eigenen Flickr Account verknüpft. Allerdings bin ich nicht bei Flickr und konnte das gerade nicht weiter untersuchen.

WordPress mit Hilfe von XAMPP (oder einem anderen Ableger der lokalen Webserver) auf dem eigenen PC zu installieren, ist leichter als je zuvor. Die Installation macht sich eigentlich von ganz allein solange man die wp-config.php mit den korrekten Daten füllt.
Nach der Installation ist der Blog über localhost erreichbar. Beispielsweise:
wordpress-local-xampp-install-login
Easy peasy.

UND

Wenn man nun versucht von einem anderen PC aus dem eigenen Netzwerk auf diesen Blog zuzugreifen, muss man statt localhost logischerweise den Computernamen oder die IP des Hosts nehmen:
http://barketing055:8080/wsp/wp-login.php
Funktioniert auch.

ABER

Nach einem erfolgreichen Login erfolgt eine automatische Weiterleitung, normalerweise nach wb-admin.
Blöderweise erfolgt die Weiterleitung immer nach localhost, also nach
http://localhost:8080/wsp/wp-admin
was auf dem entfernten Rechner natürlich einen 404 Fehler erzeugt.

Lösung

Mit ein paar Änderungen kann diese Weiterleitung angepasst werden:
wp-login.php:
Folgende Zeile:

<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />

(müsste 2x auftauchen, der 2. Fund so bei Zeile 864+- ist für das Login Form zuständig)
ersetzen mit:

<input type="hidden" name="redirect_to" value="http://barketing055:8080/wsp/wp-admin/" />

wp-config.php:
Folgende 2 Zeilen hinzufügen:

define('WP_HOME','http://barketing055:8080/wsp');
define('WP_SITEURL','http://barketing055:8080/wsp');

Danach erfolgt nach einem Login die Weiterleitung nicht mehr zu localhost sondern zu der gewünschten URL.

Windows Update Fehler Code 80072EE2… verdammt nochmal, was ist das für ein Fehler?!
windows-update-fehler-error-code-80072ee2

Laut Microsoft Hilfe werden „möglicherweise ungewöhnlich viele Updates von den Windows Update-Servern angefordert.“. Also die Server oder das Netzwerk sind überlastet. Bei einem lokalen WSUS Server im Netzwerk an einem ruhigen Freitag kann man das eher ausschließen.

Es gibt aber auch Meinungen, nach denen der Fehler an fehlender oder geblockten Verbindung zum Update Server liegt, wie in diesem Video angesprochen. Also die Verbindung zum WSUS Server prüfen, Antivirenprogramme prüfen, ggf. vorübergehend deaktivieren.

Hilft nicht? Dann helfen vielleicht folgende Tools:

Microsoft Fix-It zum Zurücksetzen der Update Komponenten:
windows-update-fehler-error-code-80072ee2-fix-it

Hilft nicht? Bei mir auch nicht.
Weiter mit dem PC-WELT-Fix für Windows Update:
windows-update-fehler-error-code-80072ee2-ct-fix-it
Dieses Tool ist relativ aktuell und dadurch für die Systeme XP bis Windows 8 geeignet. Auf älteren Systemen (XP/Vista) kann man es ggf. auch mit dem pcwUpdateRepair probieren. Vermutlich sind diese Fixes aber im aktuellen Fix It mit enthalten.

Bei der Gelegenheit ein Hinweis für Admins: das PC-WELT Fix It Pack enthält ein paar nette kleine Tools im schnellen Zugriff für die Erste Hilfe am PC. Manche sind bereits fertig installiert, andere müssen noch schnell installiert werden. Die Installer sind aber in den Pack schon enthalten. Die Software ist neben der mächtigen Sammlung WSCC, welche alle nirsoft und sysinternals Tools enthält, eine kleine Alternative:
pc-welt-fix-it-pack-for-admins-usage

Hilft uns jetzt aber erstmal nicht weiter.

Der Fehler bleibt ungelöst und es geht wieder zurück zum Troubleshooting:

  • Ping/Remotezugriff zum WSUS Server (bzw. Windows Update) funktioniert?
  • Hat der WSUS Server den Computer in seiner Computerliste gelistet?
  • Wann war die letzte Aktualisierung laut WSUS?
  • Werden dort Fehler oder fehlerhafte Updates angezeigt?
  • Ggf. die Updates des WSUS bereinigen lassen (WSUS -> Optionen -> Assistent für die Serverbereinigung).
  • Antivirenprogramme/Firewalls/andere Verbindungsblocker sowohl auf dem Client als auch auf dem Server temporär deaktivieren. Achtung, natürlich alles so schnell wie möglich wieder aktivieren.

Ich vermute der Fehler liegt am Netzwerk des PCs. Zwar funktionieren Pings und Serverzugriffe, jedoch zeigen die Netzwerkfunktionen teilweise abnormales Verhalten. Die Netzlaufwerke spinnen; sobald ich versuche Daten dort abzuspeichern, stürzt der Explorer (auch der Total Commander) ab und alle Netzlaufwerke sind nicht mehr erreichbar. Trotz WSUS Ping wird der Rechner nicht in der Computerliste des WSUS gelistet. Vielleicht Fehler in der Netzwerkkarte.

Weitere Windows Update Fehler und ihre Lösung findet ihr hier.

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

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
Die Datei könnt ihr natürlich so anpassen, wie ihr die Einstellungen wollt.

Deployment

Update 19.09.2016: Version 23.0 getestet und läuft.
Info: Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

flash-installer.bat:

@echo off & Color 9f & setlocal
set wd=\\server\Deployment\Software\Flash
set log=%wd%\flash-log.txt
REM:: --- Version hier ändern ---
set version=23.0
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 von %version% 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 200Sek... >> %log%
set retry=1
ping localhost -n 200 > 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
exit

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-21.0_IE.exe)
flash-[Version]_OTHER.exe (z.B. flash-21.0_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

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

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-installation
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
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.

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\

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:
Update 17.03.2016: – Version 7.21 getestet und läuft.
Das im Skript verwendete Programm VersionCompare ist eine Eigenprogrammierung und hier als Download verfügbar.

@echo off && 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=7.21
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 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

:taskkill
start /wait "" cmd /c  %exepath% /shutdown
taskkill /F /IM Skype.exe
taskkill /F /IM SkypePM.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
msiexec.exe /i %wd%\deploy\%newversion%\SkypeSetup.msi /qn /norestart
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
if %skypeEL%==1625 goto uninstall REM:: skype installer sometimes threw this one, don't know why
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 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
start /wait "" cmd /c  %exepath% /shutdown
taskkill /F /IM Skype.exe
taskkill /F /IM SkypePM.exe
echo %date% %time:~0,8% - %computername% deinstalliert Version %instversion% aufgrund EL 1638/1625 Fehler... >> %log%
msiexec /qn /norestart /X{1845470B-EB14-4ABC-835B-E36C693DC07D}
msiexec /qn /norestart /X{744A328E-3CC5-4008-BC6E-97C8FB3EAAF8}
msiexec /qn /norestart /X{E633D396-5188-4E9D-8F6B-BFB8BF3467E8}
wmic product where "name like 'Skype%%'" call uninstall /nointeractive
wmic product where "name like 'Skype(tm)%%'" call uninstall /nointeractive
echo %date% %time:~0,8% - %computername% - %instversion% deinstalliert, retry... >> %log%
set retry=1
goto taskkill

: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
exit

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
– 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 ergeben.

Hier ein Auszug aus der Logdatei:
skype-script-deployment-log
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
Download section
skype [.zip]