cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
abhishek_n
Level 2

Installing a 64-bit software created is not putting entry in corresponding registry.

Hi,

So, I've been using Install shield to create a setup file. It is a 64-bit setup file(FYI : it has some 32 bit exes in it). On installing this setup, its getting properly in the destined location ("C:\\"). But, on checking the registry path, its getting registered in the below path

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432NodeMicrosoft\Windows\CurrentVersion\Uninstall\


which is 32 bit software path where it actually should have been registered under 64 bit path

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\


I built 32-bit setup file for the same software and entry is getting registered on the same location(this one is normal behavior off course).

Can someone clear me my following doubt on this

[LIST=1]
  • Is setting a registry location done within Install shield by default or explicitly?
  • If explicitly, Should registry location be decided by us during building in install shield or somewhere else?
  • If we provide somewhere else explicitly, what would happen to the 32-bit registry location created in my case?


    Any sort of guidance on this is much appreciated. Thanks in Advance. 🙂
  • Labels (1)
    0 Kudos
    (5) Replies
    chad_petersen
    Level 9

    The Uninstall key is being created by the 32-bit MSIEXEC.EXE process that is spawned when you run your MSI. So, you won't have any control over that location.

    Otherwise, I almost never specify Wow6432Node but instead let MSI decide for me based off of whether the Component is set to 64-bit or not. If the "64-Bit Component" is set to "Yes" it will write to 64-bit registry locations and if the "64-Bit Component" is set to "No" then it will write to 32-bit registry locations.

    I hope that helps

    Chad
    0 Kudos
    chad_petersen
    Level 9

    As I thought about what you said a little bit more I realized you'd need a 64-bit installer to do what you want. That should go to the 64-bit Uninstall section.

    I tried it and it seemed OK to me. I did have to set my Template Summary to

    x64;1033

    In the General Information view, Summary Information Stream section, set the Template Summary property to x64;1033. Note: If you live in a country where English is not the language, you will use a different language code from 1033.

    That might be all it is. If you already have that set then watch in Task Manager as you run your installer and make sure it doesn't spawn an MSIEXEC.EXE *32, but only MSIEXEC.EXE and it should work correctly in that situation.

    Sorry about misunderstanding initially.

    Chad
    0 Kudos
    abhishek_n
    Level 2

    chad.petersen wrote:
    As I thought about what you said a little bit more I realized you'd need a 64-bit installer to do what you want. That should go to the 64-bit Uninstall section.

    I tried it and it seemed OK to me. I did have to set my Template Summary to

    x64;1033

    In the General Information view, Summary Information Stream section, set the Template Summary property to x64;1033. Note: If you live in a country where English is not the language, you will use a different language code from 1033.

    That might be all it is. If you already have that set then watch in Task Manager as you run your installer and make sure it doesn't spawn an MSIEXEC.EXE *32, but only MSIEXEC.EXE and it should work correctly in that situation.

    Sorry about misunderstanding initially.

    Chad


    Hi Chad,
    Thanks for the heads up. This information is very useful. 🙂 However, I am in need of a script which automates this work. i.e., change the template summary property using script. Is there any possibility for that. Thanks in advance.
    0 Kudos
    chad_petersen
    Level 9

    No, an installer is either compiled as 32-bit or 64-bit. Once compiled you cannot change the bit type on the fly.

    Chad
    0 Kudos
    chad_petersen
    Level 9

    If you meant pre-compile time then that could be done, but I'm not sure of the approach you are after since every Component in a 64-bit installer is typically marked as either 32-bit (default) or 64-bit. But, you can save an .ISM as "Project File Format" of "XML" instead of the default "Binary" file format and then use XML tools to write to or alter the .ISM file prior to compiling.

    I typically have two .ISM files - one for 32-bit authoring (32-bit MSI for 32-bit or 64-bit systems) and one for 64-bit authoring (64-bit MSI for 64-bit systems).

    A 32-bit installer cannot write to 64-bit locations on a 64-bit system.

    One of our most complex products I wrote a 32-bit installer that was used n both 32-bit and 64-bit systems. Then if you had a 64-bit system it ran this overlay that placed the 64-bit registry keys and files only. It kept me from having to maintain two huge installers that were basically identical. Instead I maintain one huge installer and one overlay installer that was a lot smaller. It worked out very well.

    Chad
    0 Kudos