Supporting an Upgrade from Windows XP

This section provides instructions on supporting users who have installed a game on Windows XP then upgraded to a more recent Windows version. Upgrading from Windows XP is a scenario that your game should support. In this scenario, a user installs your game on a computer running Windows XP, and then upgrades the system to a more recent version of Windows (Windows Vista or later).

For your game to work after an upgrade from Windows XP, you must create a GDF and embed it in an executable file or DLL, as you would normally need to do for a game made for a newer version of Windows. (For a description of creating and embedding GDFs, see Create Data Files That Game Explorer Will Consume). However, during the installation of your game, four separate tasks must be performed in to support an upgrade from Windows XP. Those tasks are the following:

  • Install all of your game files.

  • Generate your own InstanceID.

  • Call SHGetFolderPath with the CLSIDs, instead of known folders IDs (because SHGetKnownFolderPath is not available in Windows XP).

  • Store values in the registry.

Generating Your Own InstanceID

In a Windows installation scenario, you can simply call into the Games Explorer APIs to generate an InstanceID (a GUID) for your particular installation, but in a Windows XP installation scenario, the APIs are not available. Instead, you must generate your own InstanceID and store it in the registry or in a file. This InstanceID will be used in the next two tasks.

Installing Task Paths on Windows XP

For Windows XP, unlike more recent releases of Windows, you cannot use SHGetKnownFolderPath with FOLDERIDs to retrieve the task paths, as defined in Games Explorer Tasks. Instead, you must use SHGetFolderPath with CSIDLs to install your tasks.

Name Windows XP CSIDL Definition
Play task install location for all users CSIDL_COMMON_APPDATA\Microsoft\Windows\GameExplorer\{game instance ID}\PlayTasks
Play task install location for current user CSIDL_LOCAL_APPDATA\Microsoft\Windows\GameExplorer\{game instance ID}\PlayTasks
Support task install location for all users CSIDL_COMMON_APPDATA\Microsoft\Windows\GameExplorer\{game instance ID}\SupportTasks
Support task install location for current user CSIDL_LOCAL_APPDATA\Microsoft\Windows\GameExplorer\{game instance ID}\SupportTasks

Creating Custom Registry Values

You need to create a set of registry values to identify your game to the installation process for the more recent version of Windows. Your game will be added automatically to Game Explorer when the user installs a newer version of Windows.

First, you must determine the location of the value — this differs depending on whether your installation was for the entire system or for a single user.

Installation Scope Registry Location
Entire System HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GameUX\GamesToFindOnWindowsUpgrade
Current User Only HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\GameUX\GamesToFindOnWindowsUpgrade

In this location, you must install the subkey and values shown in the following table. Create the values in the new subkey, {game instance ID}.

Element Name Description
Subkey {game instance ID} A GUID enclosed in curly braces
String value GDFBinaryPath The fully qualified path of the binary file that contains the GDF
String value GameInstallPath The path to the game installation folder