Header
Mar07
15

We are going through our GMC (Gold Master Candidate) process for The Lord of the Rings Online currently, and found some “gotchas” on Windows Vista 64-bit version. First of all, our game is currently 32-bit. However, to comply with Games for Windows requirements, specially for UAC, we had to make a bootstrapper application so we can preserve user priviledges.

The problem was that we compiled the boostrapper with platform target of any. Therefore, on Vista64, it runs as a 64-bit application. This caused a disconnect as this bootstrapper relies on a certain key in HKLM, written by the installer, to run properly. The installer is a 32-bit application. On Vista64, its 32-bit backward-compatibility includes running 32-bit applications under “WOW64″ (Windows on Windows 64-bit), which maps registry settings to the virtual node “WOW6432Node”. This is not good as the boostrapper, running at 64-bit, is looking in one location, while the 32-bit installer writes the key to WOW6432Node.

To resolve this issue, we recompiled the boostrapper so it would also be run as a 32-bit application, by setting the target platform to “x86″. Now both applications look for the registry key in the same spot (WOW6432Node).

Another issue that we discovered is that, for 32-bit application, if you query the location of “Program Files”, you actually get back a folder named “Program Files X86″ instead. This might not be desirable for your application, but for ours we currently deem it acceptable.

Hope this article saves a few souls a few hours :)

Leave a Reply

Valid XHTML 1.0! Valid CSS!
WordPress