Windows 95 DDK does not install after Platform SDK

The Windows 95 Device Driver Kit (DDK) is supplied on CD-ROM with most files already in the expected directory tree. Although these files may simply be copied to the hard disk, a setup program eases the installation and also prepares a batch file for setting environment variables.

For reasons that may be less than obvious to VxD programmers, the Windows 95 DDK requires prior installation of the Win32 SDK. Since the release of the Windows 95 DDK, much of the Win32 SDK has been incorporated into the Platform SDK. The Win32 SDK and Platform SDK continued to be distributed as separate kits, but for most practical purposes in 32-bit applications programming (which is surely what the Win32 SDK would be installed for), the Win32 SDK has been superseded by the Platform SDK.

Problem

If the Platform SDK has been installed instead of the Win32 SDK, a subsequent attempt to run the setup program for the Windows 95 DDK meets with the complaint that “You need to install the SDK first; Please exit this setup program, and run the Win32 SDK Setup program.”

Applicable Versions

This note applies to versions of the Windows 95 DDK at least as far back as July 1996, and to versions as recent as July 1998. It applies to versions of the Platform SDK at least as far back as November 1996.

The problem described here is not presented by versions of the Platform SDK dated from January 1998 onwards.

Cause

Three registry entries are relevant, and it is as well to introduce them before proceeding. The two for the SDKs use the same value in different keys:

Key HKEY_CURRENT_USER\Software\Microsoft\Win32SDK\Directories
HKEY_CURRENT_USER\Software\Microsoft\PlatformSDK\Directories
Value Install Dir
Type REG_SZ

Take care to note that the value contains a space but the product names in the keys do not. In the third of the relevant entries, by contrast, the product name has spaces but the value does not:

Key HKEY_CURRENT_USER\Software\Microsoft\Windows 95 PDK\Directories
Value InstallDir
Type REG_SZ

The setup program for the Win32 SDK prepares the Win32SDK key and sets the Install Dir value to the root of the SDK directory tree. The setup program for the Platform SDK does the same, but with the PlatformSDK key.

The Platform SDK does know the registry entry from the Win32 SDK, but only to change from one to the other. See that in MSSDK.INF from the Platform SDK, the line

set KeySDKPath = "Software\Microsoft\Win32SDK\Directories" 

as inherited from WIN32.INF in the Win32 SDK, is commented out and

set KeySDKPath = "Software\Microsoft\PlatformSDK\Directories" 

is added.

The reason that the Windows 95 DDK requires the Win32 SDK specifically is simply that where the setup program for the Windows 95 DDK tests for prior installation of an SDK, it recognises entries under Win32SDK and Windows 95 PDK, but knows nothing of the entry under PlatformSDK.

Work-Around

Edit the registry to pretend, if only temporarily, that one of the expected SDKs is already installed. Create the key and value, as above, under Win32SDK (or Windows 95 PDK), giving the path of the Platform SDK’s root directory as the string data, as if the Win32 SDK (or the Windows 95 PDK) had been installed before the Platform SDK in the same directory.

For Microsoft’s different view of the problem, see the Knowledge Base article Q169581, titled PRB: Windows 95 DDK Won’t Install After Installing Platform SDK. The resolution proposed there is surely a joke:

The Windows 95 DDK requires prior installation of the Win32 SDK; the Platform SDK will not suffice. The Win32 SDK is provided on a separate CD-ROM from the Platform SDK.

For the purposes of VxD programming, it’s far from clear why the Win32 SDK is required for anything. The asserted dependence is highly artificial, so that the refusal of the DDK’s setup program to continue without the Win32 SDK in particular is especially annoying when a programmer already has the Platform SDK installed.

Fix

The Platform SDK dated January 1998 has a new installation method in which files are extracted from cabinets. Preparation of the registry entries relevant to the present problem is governed by CORECFG.INF, from which it may be seen that this new Platform SDK sets Install Dir in both the Win32SDK and PlatformSDK keys (and in both HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE). Thus, with the new Platform SDK installed, the setup program for the Windows 95 DDK will be satisfied that the Win32 SDK is installed, just as in the work-around presented above.

In a revised Knowledge Base article, still available as BUG: Cannot Install Windows 95 DDK After Installing Platform SDK, Microsoft explains that “Microsoft Windows Platform SDK doesn’t create the registry keys that are required by the Windows 95 DDK Setup program” and recommends the work-around as an alternative to installing the latest Platform SDK.