Script by Der-Matze
Comments and improvements welcome
Tested with opsi 4.0.1
Tested with opsi-winst 4.10.x - 4.11.1.6
Tested with Windows XP Professional and Windows 7 Enterprise x64
Installation Script for Paint.net
Uninstallation Script for Paint.net Versions 3.5.6 - 3.5.10
This script uses the check_msi-exitcode script: https://forum.opsi.org/wiki/userspace:check_msi-exitcode
The installation file can be downloaded from: http://www.getpaint.net/download.html
Unattended Installation Info: http://www.getpaint.net/doc/latest/UnattendedInstallation.html
[Initial] ;Standard Text, der während der Installation angezeigt wird Message = Bitte warten, das Produkt wird installiert ;Loglevel einstellen setLogLevel = 6 ;Bei Fehlern abbrechen ExitOnError = false ;Syntax Fehler werden in einem separaten Fenster angezeigt ScriptErrorMessages = on ;Single-Step Mode nicht verwenden TraceMode = off ;Im Batchmode das Winst-Fenster nicht im Vordergrund anzeigen StayOnTop = false [Actions] ;Variable für die Ermittlung des Betriebssystems DefVar $OS$ Set $OS$ = GetOS ;Variable für die Ermittlung der Betriebssystem Unterversion DefVar $NTVersion$ Set $NTVersion$ = GetNTVersion ;Variable zur Ermittlung der Systemarchitektur DefVar $SystemType$ Set $SystemType$ = GetSystemType ;Name des Produkts (max. 12 Zeichen) DefVar $ProductName$ Set $ProductName$ = "Paint.NET" ;Vollständiger Produktname incl. Versionsnummer DefVar $ProductNameFull1$ Set $ProductNameFull1$ = "Paint.NET 3.5.10" ;Dateiname des Produktbildes mit Erweiterung DefVar $ProductPicture$ Set $ProductPicture$ = "paint.png" ;Dateinamen der zu installierenden MSI-Pakete DefVar $Executable1$ Set $Executable1$ = "PaintDotNet.x86.msi" ;Dateinamen der zu installierenden MSI-Pakete DefVar $Executable2$ Set $Executable2$ = "PaintDotNet.x64.msi" ;Die Variable zur Auswertung des ExitCodes DefVar $ExitCode$ ;Anzeigen der Installationsbenachrichtigung incl. des vollen Produktnamens Message "Installiere "+$ProductNameFull1$ ;Prüfen der Winst Version requiredWinstVersion >= "4.11" ;$ProductPicture$ und $ProductName$ anzeigen ShowBitmap /3 "%scriptpath%\" + $ProductPicture$ $ProductName$ ;Freien Speicherplatz ermitteln if not (HasMinimumSpace ("%SYSTEMDRIVE%", "500 MB")) LogError "Nicht genügend Platz auf %SYSTEMDRIVE%" isFatalError endif ;OS-Version ermitteln if ( $NTVersion$ = "Win2K" OR $NTVersion$ = "WinXP" OR $NTVersion$ = "Win NT 5.2" OR $NTVersion$ = "Windows Vista" ) if $SystemType$ = "x86 System" Winbatch_Install_32Bit sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif if $SystemType$ = "64 Bit System" Winbatch_Install_64Bit sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif else LogError "Kein kompatibles Betriebssystem installiert" isFatalError endif [Winbatch_Install_32Bit] msiexec.exe /i "%SCRIPTPATH%\$Executable1$" /qb-! DESKTOPSHORTCUT=0 [Winbatch_Install_64Bit] msiexec.exe /i "%SCRIPTPATH%\$Executable2$" /qb-! DESKTOPSHORTCUT=0
[Initial] ;Standard Text, der während der Deinstallation angezeigt wird Message = Bitte warten, das Produkt wird deinstalliert ;Loglevel einstellen setLogLevel = 6 ;Bei Fehlern abbrechen ExitOnError = false ;Syntax Fehler werden in einem separaten Fenster angezeigt ScriptErrorMessages = on ;Single-Step Mode nicht verwenden TraceMode = off ;Im Batchmode das Winst-Fenster nicht im Vordergrund anzeigen StayOnTop = false [Actions] ;Name des Produkts (max. 12 Zeichen) DefVar $ProductName$ Set $ProductName$ = "Paint.NET" ;Dateiname des Produktbildes mit Erweiterung DefVar $ProductPicture$ Set $ProductPicture$ = "paint.png" ;Die Variable zur Auswertung des ExitCodes DefVar $ExitCode$ ;$ProductPicture$ und $ProductName$ anzeigen ShowBitmap /3 "%scriptpath%\" + $ProductPicture$ $ProductName$ sub "%ScriptPath%\SubUninstall.ins"
;Variable für den msiexec Aufruf zur Deinstallation DefVar $UninstallCommand$ ;Variable für die jeweilige Version. Wird aus der Registry ausgelesen DefVar $DisplayName$ ;Paint.NET v3.5.6 32-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{639673E9-D53F-44F4-A046-485C8A6ADA15}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {639673E9-D53F-44F4-A046-485C8A6ADA15} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.6 64-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{639673E9-D53F-44F4-A046-485C8A6ADA16}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {639673E9-D53F-44F4-A046-485C8A6ADA16} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.7 32-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{45212F71-750F-4B98-8931-2F35DBE6B661}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {45212F71-750F-4B98-8931-2F35DBE6B661} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.7 64-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{45212F71-750F-4B98-8931-2F35DBE6B662}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {45212F71-750F-4B98-8931-2F35DBE6B662} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.8 32-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9CF4A37B-A8C4-44D7-8C53-13B9D9594BB2}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {9CF4A37B-A8C4-44D7-8C53-13B9D9594BB2} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.8 64-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9CF4A37B-A8C4-44D7-8C53-13B9D9594BB3}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {9CF4A37B-A8C4-44D7-8C53-13B9D9594BB3} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.10 32-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{529125EF-E3AC-4B74-97E6-F688A7C0F1BF}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {529125EF-E3AC-4B74-97E6-F688A7C0F1BF} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif ;Paint.NET v3.5.10 64-Bit deinstallieren, wenn es in der Registry gefunden wurde Set $DisplayName$ = GetRegistrystringvalueSysNative("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{529125EF-E3AC-4B74-97E6-F688A7C0F1C0}] DisplayName") if not ($DisplayName$ = "") Message "Deinstalliere "+$DisplayName$ set $UninstallCommand$ = "MsiExec.exe /x {529125EF-E3AC-4B74-97E6-F688A7C0F1C0} /qb-!" Winbatch_Uninstall sub "%ScriptDrive%\install\check_exitcode\check_msi-exitcode.ins" endif [Winbatch_Uninstall] $UninstallCommand$