.NET Framework 4.6.1 Rollback for BizTalk Server 2013 (R2)

Microsoft official software requirements for BizTalk server 2013 (R2) support no other versions but .NET Framework 4.5.x. On a couple of our environments, we noticed that the .NET 4.6.1 update has been pushed automatically because of the Windows updates mechanism. This could cause different issues in our production environment in all kinds of software packages that have never been tested with this version. Due to its sensitive nature, no answer from Microsoft could be found online on how to rollback from .NET 4.6 to 4.5.2.

Determine which .NET Framework versions are installed

According official msdn documentation, you can easily find out which .NET version has been installed on each server in the register.

The register key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Release contains a version number referring to the current installed version:

378389 .NET Framework 4.5
378675 and 378758 .NET Framework 4.5.1
393295 and 393297 .NET Framework 4.6
394254 and 394271 .NET Framework 4.6.1
394802 and 394806 .NET Framework 4.6.2

Determinate .NET version through update history

The Windows update history keeps track of all the installed and pending updates, including your Windows .NET Framework.

  1. Navigate to “Program and Features” and “Installed updates”
  2. Navigate to “View update history” to verify the status. Updates that are pending restart will show here.
  3. Search KB3102467
  4. This KB corresponds with the installation of NET 4.6.1

The screenshot below tells us that the .NET 4.6 update has been pushed to the server, but has not yet been activated yet since a restart is required.

.net4.6.1 pending restart

Uninstall .NET Framework 4.6.1

At first, it looked fairly easy to uninstall the update with the status “pending restart”. Using this approach, it seemed as if the update never became active as long as we did not reboot. I did, however, ask Microsoft for advice, and they highly recommend not using this approach since a “pending restart” update implies that a transaction has not yet been committed. Instead, they recommend always gracefully completing the update and performing an uninstall afterwards.

  1. If the update is in «pending restart » mode, it is required to reboot the machine first, in order to gracefully complete the update transaction
  2. Navigate to “Program and Features” and “Installed updates”
  3. Search KB3102467
  4. Uninstall the KB
  5. Reboot the machine

.net4.6.1 uninstall

Temporarily block the .NET Framework 4.6.1 installation

In order to avoid that the .NET Framework 4.6.1 update installs itself again or will be pushed through by SCCM or Windows updates, it is best to block its installation: How to temporarily block the installation of the .NET Framework 4.6.1

Create a registry file and execute this on each machine to block the .Net Framework 4.6.1 installation.
Windows Registry Editor Version 5.00

Lessons learnt!

I find it very uncomfortable knowing that the .NET 4.6.1 update has been pushed automatically to our servers, even though this update is not even supported by BizTalk 2013 (R2). Therefore, we should all keep in mind that this may occur with your BizTalk 2013 (R2) environment as well! While I’m convinced the impact may be minimal to none, we did not want to take any risk to have another software behavior or run on an unsupported .NET version for BizTalk server. Good luck!