====== .NetFX 4.5.2 ====== **Versions**\\ By //[[opsi@adlerweb.info|Adlerweb]] 2015/01/27// \\ Based on http://mercurial.giprecia.fr/opsi-packages/opsi-framework-net4 This script includes setup and uninstall for the german language pack. If you modify this script for other languages please add the corresponding IDs to the table shown at the end. Tested with opsi 4.0.5\\ ===== Setup Ressources ===== ==== Required external files ==== copy to CLIENT_DATA. * [[http://www.microsoft.com/de-de/download/details.aspx?id=17718|dotNetFx40_Full_x86_x64.exe]] (.NET 4.0 Installer) * [[http://www.microsoft.com/en-us/download/details.aspx?id=42642|NDP452-KB2901907-x86-x64-AllOS-ENU.exe]] (Update 4.x to 4.5.2 - Note: Description states it's 4.5.1, however the installer is NDP452) * [[http://www.microsoft.com/en-us/download/details.aspx?id=42641|NDP452-KB2901907-x86-x64-AllOS-DEU.exe]] (Language Pack - in this script german, modify according to your country) * dotNetFx45.png (e.G. via http://de.wikipedia.org/wiki/Datei:Microsoft_.NET_Logo.svg) ==== setup.ins ==== [Actions] requiredWinstVersion >= "4.11.3.4" DefVar $SystemType$ DefVar $ProductId$ DefVar $ProductName$ DefVar $ExitCode$ DefVar $MsiId$ set $SystemType$ = GetSystemType Set $ProductId$ = "dotnetfx45" Set $ProductName$ = ".NET Framework 4.5.x" Sub "%ScriptPath%\delsub.ins" Message "Installing " + $ProductName$ ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductName$ Message "Installing " + $ProductName$ + " Core Files" winbatch_install_netfx Sub_check_exitcode Message "Installing " + $ProductName$ + " Update Files" winbatch_install_netfx_sp Sub_check_exitcode Message "Installing " + $ProductName$ + " Language Pack" winbatch_install_netfx_lang Sub_check_exitcode [winbatch_install_netfx] %ScriptPath%\dotNetFx40_Full_x86_x64.exe /passive /norestart [winbatch_install_netfx_sp] %ScriptPath%\NDP452-KB2901907-x86-x64-AllOS-ENU.exe /passive /norestart [winbatch_install_netfx_lang] %ScriptPath%\NDP452-KB2901907-x86-x64-AllOS-DEU.exe /passive /norestart [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif ==== uninstall.ins ==== [Actions] DefVar $SystemType$ DefVar $ProductId$ DefVar $ProductName$ DefVar $ExitCode$ DefVar $MsiId$ set $SystemType$ = GetSystemType Set $ProductId$ = "dotnetfx45" Set $ProductName$ = ".NET Framework 4.5.x" Sub "%ScriptPath%\delsub.ins" ==== delsub.ins ==== Message "Removing " + $ProductName$ ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductName$ if $SystemType$ = "x86 System" winbatch_Framework_dotnet45x_uninstall_32 Files_uninstall_32 else ; 4.5.2 German 64Bit Set $MsiId$ = "{1DB0C90B-2A9F-3A1E-B1DF-616C5A2A1417}" if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif ; 4.5.2 64Bit Set $MsiId$ = "{26784146-6E05-3FF9-9335-786C7C0FB5BE}" if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif Set $MsiId$ = "{92FB6C44-E685-45AD-9B20-CADF4CABA132}" if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif ; Microsoft .NET Framework 4 Extended Set $MsiId$ = "{8E34682C-8118-31F1-BC4C-98CD9675E1C2}" if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif ; Microsoft .NET Framework 4 Client Profile Set $MsiId$ = "{F5B09CFD-F0B2-36AF-8DF4-1DF6B63FC7B4}" if not (GetRegistryStringValue64("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + $MsiId$ + "] DisplayName") = "") comment "MSI id " + $MsiId$ + " found in registry, starting msiexec to uninstall" Winbatch_uninstall_msi sub_check_exitcode endif endif Sub_check_exitcode [winbatch_Framework_dotnet45x_uninstall_32] ;Untested "%Systemroot%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe" /uninstall /x86 /x64 /ia64 /parameterfolder Extended /passive /norestart "%Systemroot%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Client\setup.exe" /uninstall /x86 /x64 /parameterfolder Client /passive /norestart [Files_uninstall_32] delete -sf "%Systemroot%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\" [Winbatch_uninstall_msi] msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_INITIATED 3010 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif ===== Other Languages ===== ^ Language ^ Download ^ MSI-ID ^ | German | [[http://www.microsoft.com/en-us/download/details.aspx?id=42641|NDP452-KB2901907-x86-x64-AllOS-DEU.exe]] | 1DB0C90B-2A9F-3A1E-B1DF-616C5A2A1417 |