FS#1831 - Revision not determined on XP x64 - MSVC

Attached to Project: OpenTTD
Opened by Hugo van der Wijst (Jafinto) - Thursday, 06 March 2008, 22:09 GMT
Last edited by Zdeněk Sojka (SmatZ) - Saturday, 15 March 2008, 22:06 GMT
Type Bug
Category Build system
Status Closed
Assigned To No-one
Operating System Windows
Severity Medium
Priority Normal
Reported Version trunk
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


(Note: the following two paragraphs are an introduction) After a long time using nightlies, I wanted to test YAPP. So, after installing and configuring everything, I started to compile trunk. Being happy that succeeded (I had several compile errors a few years ago), I started the program. But when running OpenTTD, I got a warning about the used font and several sprites were missing (the red question mark).

It took me nearly two hours to figure out that it couldn't be the data files (as they worked with the nightlies), nor the Windows SDK (I reinstalled it). Compiling OpenTTD in a virtual machine running XP Home (x86) worked on the other hand: the question marks were gone. So, I started to recompile trunk on my host os (XP Pro x64), where I got the same problems as before.
I noticed one difference though: the x64 version didn't have a revision.

(real bug report starts here ;) determineversion.vbs, the file that checks the revision for Windows, doesn't work on Windows XP x64 (and supposedly on Vista x64) in combination with MSVC (i've tested only VC 9, but it should be the same with VC 8) and the x64 version of TortoiseSVN. The script tries to find Tortoise by looking in the registry for the Key "HKLMSOFTWARETortoiseSVNDirectory". The problem isn't the script itself, but the script in combination with MSVC.

On Windows x64, 32-bit programs aren't allowed to read and write in "HKLMSOFTWARE". Instead they perform there actions in "HKLMSOFTWAREWow6432Node". When running the determineversion.vbs from explorer, it gets executed by a 64-bit instance of the interpreter, and it executes normally. But, when you run the script via MSVC, which is the default, it gets executed by the 32-bit instance of the interpreter, because MSVC is 32-bit. Thus, it the TortoiseSVN entry in "HKLMSOFTWAREWow6432NodeTortoiseSVNDirectory". That key does not exist when the 64-bit version of TortoiseSVN is installed, I assume it does exist when the 32-bit version is installed.

What struck me the most, were the errors OpenTTD gives when the version is unknown ("norev000"). I don't know much about Visual Basic, so I don't know if there are functions to check for this. Perhaps this should be fixed, or else stated in the readme?

Anyway, I'm going to compile YAPP now.
This task depends upon

Closed by  Zdeněk Sojka (SmatZ)
Saturday, 15 March 2008, 22:07 GMT
Reason for closing:  Duplicate
Additional comments about closing:  Of  FS#1847  - reason is the same
Comment by Michael Lutz (michi_cc) - Friday, 07 March 2008, 18:43 GMT
You can install the 32-bit version of TortoiseSVN in parallel to the 64-bit version. This might not be the most elegant solution, but it works.
Comment by Peter Nelson (peter1138) - Sunday, 09 March 2008, 21:09 GMT
From your description I would say this is a TortoiseSVN bug, not our scripts.