Auch wenn man viele Aufrufe automatisieren kann, so gibt es trotzdem Softwareinstallationen, die speziell angepasst werden müssen. Auch dies ist durch meine Powershellscripte abbildbar. Als ein Beispiel führe ich hier die Installation von Irfanview 4.38 (http://www.irfanview.com/main_download_engl.htm) auf.
Die Header in der EXE sind korrekt gefüllt, daher brauchen wir in der Info Sektion keine weiteren Angaben machen. Als Setuptype ist als Dummy InnoSetup hinterlegt. Die Angabe ist irrelevant, da wir alle drei Bereiche überschreiben:
- Der Installationsprozess wird mit den in der FAQ (http://www.irfanview.com/faq.htm#Q72) dokumentierten Parametern angepasst
- Die Deinstallation holt sich den Pfad zur uninstall-EXE aus der Registry (abhängig davon, ob es sich um ein 64bit System handelt) und deinstalliert IrfanView mit dem /silent Parameter
- Die Detection nutzt den gleichen Uninstall-Pfad zur Erkennung, ob es installiert ist oder nicht.
An diesem Beispiel erkennt man, dass auch individuelle Installationspakete abgedeckt werden können. Da die Bereich, die gleich bleiben, nicht in der appdefinition.xml hinterlegt sind, bleibt auch die Gesamtbeschreibung der Paketierung übersichtlich.
Achtung: Diese Version benötigt mindestens Version 0.3 der Scripte!
<appdefinition> <file>iview438_setup.exe</file> <hash type="SHA-256">0cf69ff91696589ae6ff8809845c9a8b5d2b1ebd952ccc5402c75037bcd11818</hash> <info> <setupType>InnoSetup</setupType> <isX86>true</isX86> <hasUninstall>true</hasUninstall> </info> <install> Show-InstallationProgress -StatusMessage 'Installing IrfanView. This may take some time. Please wait...' Execute-Process -Path "iview438_setup.exe" -Parameters "/silent /desktop=0 /thumbs=0 /group=1 /allusers=1 /assoc=0" -WindowStyle Hidden </install> <uninstall> if ($is64Bit) { $regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" } else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" } $uninstallApp=(Get-ItemProperty $regPath | where {$_.DisplayName -like "*IrfanView*" -and $_.DisplayVersion -eq "4.38"}).UninstallString.replace("`"","") Execute-Process -Path "$uninstallApp" -Parameters "/silent" -WindowStyle Hidden </uninstall> <detection> if ([IntPtr]::Size -eq 8) { $regPath="HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" } else { $regPath="HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" } (Get-ItemProperty $regPath | where {$_.DisplayName -like "*IrfanView*" -and $_.DisplayVersion -eq "4.38"}) </detection> </appdefinition>
Pingback: ConfigMgr: Softwarepaketierung Übersicht | Markus Bäker