cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
cbarlow
Level 7

Bug in system search: logic of 64-bit portion toggle is backwards

There appears to be a bug with the "look in 64-bit portion of the registry" toggle in the System Search dialog. If you toggle it on, the installer does not look in the 64-bit portion of the registry. If you toggle it off, it does. I've confirmed this with multiple projects. It works, but the logic seems to be backwards, or the text is misleading.

Maybe this has been addressed in an update or maybe this is fixed in IS2010, does anyone know?
Labels (1)
0 Kudos
(7) Replies
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

I've tried reproducing this in a sample project and was unable to do so. When creating a system search for a registry entry and selecting the "Search the 64-bit portion of the Registry" option, the value in the Type column of the RegLocator table was always greater than or equal to 16 (see http://msdn.microsoft.com/en-us/library/aa371171(VS.85).aspx for the Type values). If the option is not selected (for a 32-bit search) the Type value is always less than 16.

Does this occur with a new system search in your project or a new system search in a test project? Also, what is the value in the Type column in the RegLocator table after creating the search?
0 Kudos
cbarlow
Level 7

It happens in my own project. I haven't tested it in the sample projects. Our project checks to see if two previous betas were installed so I have 4 system searches, a 32-bit and a 64-bit search for both betas. The RegLocator table shows the four searches, but I can't tell which is which without taking out one of the searches and rebuilding the project, which is a hassle. Is there an easier way to tell? I see two 2's and two 18's but that probably doesn't help much does it? The last one I added was the one with the toggle turned off. So if the order of system searches in the InstallShield interface is the same order as the searches in Orca, this would be type value 18.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Each record in the RegLocator table contains the key and a value name that the registry search will look for. Also, the AppSearch table contains the property that is associated with each system search. With the information listed in the System Search view, you can determine which property is associated with which signature in the RegLocator table. These are the only tables populated for registry searches in the System Search view. Since each search should have a different property associated with it (otherwise, each search will overwrite the previous search's results at runtime), it should be possible to determine which entries are 64-bit searches (though these should be identifiable from Type values greater than or equal to 16).
0 Kudos
cbarlow
Level 7

Okay, the search with the toggle turned off has a type value of 2. It sounds like this is what's supposed to happen, but this isn't the behavior I see at runtime. I created a search with the toggle turned on and it worked on a 32-bit machine, but not on a 64-bit machine. So I created an identical search with the toggle turned off and then it worked on a 64-bit machine.

Could this be a windows bug?
0 Kudos
CChong
Level 11 Flexeran
Level 11 Flexeran

Right now I'm having a similar problem.

My installer doesn't find the keys in the 64-bit section of the registry, and the checkbox is enabled.

I'll try doing it as you suggest and see what happens.

Regards,
-Juan Carlos
0 Kudos
CChong
Level 11 Flexeran
Level 11 Flexeran

I finally got a solution to my problem.

The type I was using in the RegLocator table is 16, and seems like the installer is able to find the registry key, but because 16 corresponds to a directory and my installer is running as a 32-bit process, it cannot find the directory, which makes the search to fail.

I changed the 16 to 18, which corresponds to a registry entry (no files or directories) and now it works fine.

cbarlow, I tried using what you suggested (not setting the 64-bit flag) but it doesn't work in my systems.

Regards,
-Juan Carlos
0 Kudos
Tim_Mayert
Level 9

Okay I am having sort of the same issue here.

We have are main app installer which is a 32 bit installer and it has 3 prerequisistes attached to it. One is a 32 bit installer and the other tow are 64 bit installers.

When the main app install runs I use System Search to located the installation folders of the prerequisites. The search seem to not find either of the 64 bit apps and I have one set with the 64 bit check box checked and the other with it not. So it does not look like that makes a difference.

The one that has it checked as a type value or 18 and the one that does not have it checked as a type value of 2. So has someone figured out how to search for the 64 bit registry when the install is running 32 bit?
0 Kudos