Unter Linux hat man das Problem ja eigentlich nicht wirklich, da kümmern sich die Distributoren ja recht zuverlässig um Aktualität und Sicherheitsupdates der Software – will man was Neues macht man einfach ein Upgrade.
Bei Windoof schaut das ganze ein klein wenig anders aus – z.B. Java, wer Java installiert hat, dem meldet Java selbst wenn eine neue Version verfügbar ist. Allerdings nützt das einem normalen Anwender wenig wenn der das Update dann nicht installieren kann weil ihm die Rechte dazu fehlen und viel Spaß jenen Admins die von jedem einzelnen Anwender angerufen und über ein fehlendes Update informiert werden 🙂
Was tut man also dagegen? Man versucht die Installation möglichst zu automatisieren – im Idealfall sogar den Download des Updates und auch die komplette Verteilung der Software.
Nur machen es einem die Hersteller da nicht immer ganz einfach – am Beispiel JAVA z.B. findet sich die aktuell installierte Version in der Registry unter folgendem Key:
„HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products4EA42A62D9304AC4784BF238120612FFInstallProperties“ – „DisplayVersion“
Dort steht dann „6.0.210“ als Version vermerkt.
Ruft man Java mit dem Parameter „-version“ auf bekommt man auch die aktuell installierte Version genannt, dort lautet das Ganze dann allerdings wie folgt:
java version „1.6.0_21“
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Man könnte sich natürlich jetzt aus 1.6.0_21 ein 6.0.210 zusammenbasteln, aber wer garantiert dass bei der nächsten Auslieferung sich nicht das Schema ein wenig verändert und nichts mehr zusammenpasst?
Hinzu kommt noch dass man auf der Webseite des Herstellers nicht wirklich einen zuverlässigen Link zur letzten Version findet – normalerweise würde ich erwarten (viele OpenSource Projekte machen das so vor) dass sich ein Link auf die „latest version“ findet, der direkt zur aktuellen Version zeigt.
Mit Nichten, bei Java kann man das ganze zwar über die Webseite recht schön abrufen – aber für eine Automatisierung ist das Ganze nicht wirklich geeignet, eventuell gibts ja irgendwo einen immer gleichen Link zur aktuellen Version – nur scheint der nirgends dokumentiert zu sein oder nur einem auserlesenen Kreis von Menschen zur Verfügung zu stehen.
Mein Wunsch an ALLE Softwarehersteller wäre also folgende kurze Liste:
1) eine Webseite auf der immer zur aktuellen Version verlinkt ist
2) ein Versionierungsschema das sowohl auf der Webseite wie auch sonst überall identisch ist
3) einen Installer der die Software auch silent installieren kann und gut dokumentiert ist
4) der Installer sollte sich auch gleich um veraltete Versionen kümmern (Switch)
5) leicht zu findender Versionseintrag in der Registry oder im Programmordner für den man keinen Kryptologen braucht
6) ein Uninstaller der auch silent ohne Rückfragen durchlaufen kann
Das wär’s eigentlich auch schon – damit könnte man wunderbar z.B. via Kix Script einen Installer zusammenbauen der sich dann darum kümmert dass Software möglichst immer aktuell bleibt.
Hier mal ein Beispiel für 7-Zip:
Bash Script zum herunterladen der aktuellen Version
#!/bin/bash
# pfadangaben
ZIPDIR=“http://www.7-zip.org/“
TARGETDIR=“/srv/samba/sw“
INSTZIPFILE=“/srv/samba/sw/zip.version“
ORIGKIX=“/srv/samba/netlogon/sw/zip.orig“
NEWKIX=“/srv/samba/netlogon/sw/zip.kix“# aktuell installierte version ermitteln
if [ -a „$INSTZIPFILE“ ]; then
INSTZIP=$(cat $INSTZIPFILE)
fi# aktuell online verfügbare version ermitteln
ZIPPVERSION=$(w3m -dump „$ZIPDIR“|grep „Download 7-Zip „|grep -v beta|awk -F’Download 7-Zip‘ ‚{print $2}’|awk ‚{print $1}‘)
ZIPVERSION=$(echo $ZIPPVERSION|sed -e „s/.//g“)
ZIPNAME=“http://downloads.sourceforge.net/sevenzip/7z$ZIPVERSION.exe“ZIPFILENAME=“7z$ZIPVERSION.exe“
# wenn versionen unterschiedlich sind download starten
if [ ! „$INSTZIP“ == „$ZIPVERSION“ ]; then
wget -q -O „$TARGETDIR/$ZIPFILENAME“ „$ZIPNAME“
if [ -s „$TARGETDIR/$ZIPFILENAME“ ]; then
# heruntergeladene versionsnummer speichern
echo $ZIPVERSION > $INSTZIPFILE
# kix-script auf den aktuellen stand bringen
cp $ORIGKIX $NEWKIX
sed -i -e „s/VERSION/$ZIPPVERSION/g“ $NEWKIX
sed -i -e „s/DATEINAME/$ZIPVERSION/g“ $NEWKIX
fi
fi
Das dazu passende Kix-Script bzw. die Vorlagedatei
; 7zip installieren bzw pruefen
$ISINST = READVALUE(„HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstall7-Zip“,“DisplayName“)
IF „$ISINST“ = „7-Zip VERSION“
? „7Zip|ist installiert $ISINST“
ELSE? „7Zip|wird installiert – VERSION“
SHELL „\SERVERPFAD7zDATEINAME.exe /S /D=C:Programme7-Zip“ENDIF
Das ganze muss man dann nur noch am Windows Rechner so einbinden dass das Kix-Script als Administrator ausgeführt wird, sehr gut eignet sich dafür ein geplanter Task der beim Starten des Rechners ausgeführt wird.
Danke für die Vorlage, hab ja auch Kix bei uns laufen, und zufällig aj auch 7 zip 🙂