views:

43

answers:

2

I use this code to know if a key exists or not :

  if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Autodesk') then
  begin
    MsgBox('Key exists!!', mbInformation, MB_OK);
  end;

for this exemple, it works, i have the message box, but with this it doesn't:

  if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Autodesk\Maya') then
  begin
    MsgBox('Key exists!!', mbInformation, MB_OK);
  end;

But the 'Maya' key exists on my computer. Can anybody help me ?

EDIT :

In fact, it seems that inno-setup don't access to the right keys... For exemple, with this code I list all the subkeys of HKEY_LOCAL_MACHINE\SOFTWARE, but (!) the result is all subkey of HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node ...

  if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, 'SOFTWARE', Names) then
  begin
    S := '';
    for I := 0 to GetArrayLength(Names)-1 do
      S := S + Names[I] + #13#10;
    MsgBox('List of subkeys:'#13#10#13#10 + S, mbInformation, MB_OK);
  end;

why this Wow6432Node key ?

A: 

Are you sure that Software\Autodesk\Maya is a registry key? Maybe it's just a value and you have to use RegValueExists.

splash
Yes it's a key, and I can't access all of it's subkeys too.
John Lev
+3  A: 

Let me guess... you're on Windows 7 64-bit?

It's not InnoSetup's fault at all, it's that the Registry is virtualized in Vista & higher, and on 64-bit there are branches for native 64-bit and WOW'ed 32-bit.

In this case, since InnoSetup is a 32-bit program, the OS directs all of its HKLM\Software Registry requests to the WOW6432Node.

If your program is 64-bit, then you want to use a 64-bit setup program too.

ewall
Yes thank you it's my problem ! But i need to make an installer that works on 32 and 64bits. It's just a plugin for Maya (3D Software) independant of architecture. But Maya can be 32 or 64bits and i need to know that for copying my files in the right folder. If i use a x64 installer, it won't work on x86, but i doesn't want to make 2 installers. a solution to bypass the WOW6432Node link without making a x64 installer ?
John Lev
Hmm... I've never had to build an x64 package with InnoSetup myself. But the help docs include several references on [32- vs 64-bit](http://www.jrsoftware.org/ishelp/index.php?topic=32vs64bitinstalls) and [limitations of 64-bit installs](http://www.jrsoftware.org/ishelp/index.php?topic=64bitlimitations) that help clarify what is effected by redirection and what isn't. But first you probably need to enable 64-bit mode by setting [ArchitecturesInstallIn64BitMode to "x64"](http://www.jrsoftware.org/ishelp/index.php?topic=setup_architecturesinstallin64bitmode)...
ewall
@ewall: I recommend putting those Inno help links in your actual answer rather than just the comments.
Oliver Giesen
Unless you've written a 64-bit plug-in, you *don't* need a 64-bit installer, @John. A 64-bit program (such as Maya) cannot use 32-bit plug-ins, so it's OK if your 32-bit installer cannot detect the presence of 64-bit Maya — the thing you're installing wouldn't work there anyway.
Rob Kennedy
Good point, @Rob Kennedy!
ewall