views:

215

answers:

1

Trying to solve this problem.

I would like to learn how the bootstrapper detects if prerequisites (specifically .NET 3.5) are installed.

According to this reference, a way to detect if .NET is installed is to check the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

Using process monitor, I have inspected registry queries done by the bootstrapper (setup.exe) and it did not show any access to this registry key.

Does anybody know how the bootstrapper determines whether the prerequisites are installed on the target system?

+1  A: 

Prerequisite packages for the msbuild GenerateBootStrapper packages are defined as XML files. The schema of those XML files is documented here. Take a look at the "InstallChecks" element to get an idea of what sort of checks are possible.

Curiously enough, I could not find such install checks in the prerequisite package for .NET 3.5. You can find this package in the windows SDK folder (C:\Program Files\Microsoft SDKs\Windows), along with the other predefined bootstrapper packages.

Wim Coenen
For some reason, the install checks for .Net seem to be in the localized part of the package (see package.xml under Bootstrapper\Packages\DotNetFX35SP1\en)
Damien_The_Unbeliever
Thanks Wim and Damien, this solves our problem. This problem happens on German Windows 7 installations and the build machine has only \en subfolder in the SDK Bootstrapper directory. The en subfolder contains a package.xml with registry check for \1033 subkey of the .NET registry key (<RegistryCheck Property="DotNet35InstallSuccess" Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1033" Value="Install" />). This is not present on the default german Windows 7 installations for some reason.
Marek
Tweaking the package.xml on the build machine solved the problem, but I am still interested in the real source of the problem and whether this is a bug in Windows 7 (whether the 1033 subkey should be present even on German Windows 7) or in the bootstrapper (checks incorrect key)
Marek