in core/src/main/java/hudson/util/jna/DotNet.java [109:139]
public static boolean isInstalled(int major, int minor, String targetMachine, IJIAuthInfo session) throws JIException, UnknownHostException {
IJIWinReg registry = JIWinRegFactory.getSingleTon().getWinreg(session, targetMachine, true);
JIPolicyHandle hklm = null;
try {
hklm = registry.winreg_OpenHKLM();
if (major == 4 && minor >= 5) {
return isV45PlusInstalled(minor, registry, hklm);
} else if (major == 4 && minor == 0) {
return isV40Installed(registry, hklm);
} else if (major == 3 && minor == 5) {
return isV35Installed(registry, hklm);
} else if (major == 3 && minor == 0) {
return isV35Installed(registry, hklm) || isV30Installed(registry, hklm);
} else if (major == 2 && minor == 0) {
return isV35Installed(registry, hklm) || isV30Installed(registry, hklm) || isV20Installed(registry, hklm);
} else {
return false;
}
} catch (JIException e) {
if (e.getErrorCode() == 2) {
// not found
return false;
}
throw e;
} finally {
if (hklm != null) {
registry.winreg_CloseKey(hklm);
}
registry.closeConnection();
}
}