2

I have a solution with several dlls that are 64-bit or 32-bit specific that I want to deploy with an installer. I have two basic msi projects in InstallShield 2012, one for 32 bit systems and the other for 64 bit systems. I also have a requirement that the 64-bit installer won't work on 32-bit systems, and the other way around.

Restricting the 64-bit installer to 64 bit systems is easy, but I haven't been able to identify being in a 32-bit system.

Here are the solutions I already tried:

Checking the windows installer properties:

  • NOTintel64 (does not work as it refers to the processor and not the OS)
  • VersionNT64=whatever (does not work as the value is undefined for 32-bit systems)

Also, I'm aware of the environment variable PROCESSOR_ARCHITECTURE which holds x86 for 32-bit OS but I couldn't find a way to read it on a basic-msi project.

  • Same [as this](http://stackoverflow.com/questions/21879689/prevent-to-install-32-bit-wix-installer-on-x64-using-processor-architecture-envi), but then the IS way. Use the vendor's forum if you don't get an answer. – Hans Passant Sep 21 '14 at 15:00
  • The guy who posted that issue was asking how to output a certain message. He already achieved the behavior I'm aiming for using the environment variable. And I just posted the issue in the Flexera forums. Thanks for the advice. – Nimrod Geva Sep 21 '14 at 16:19
  • 1
    Have you tried "Not VersionNT64" as a launch condition in your x86 setup? That works fine to prohibit installs on a x64 system. There is no "=whatever" in the condition. On x86 it's undefined, which means it's false, which means the launch condition evaluates to true only on x86 systems. – PhilDW Sep 21 '14 at 18:15
  • I was pretty sure I tried that. In any case, I did again right now and it did the trick. Thanks! – Nimrod Geva Sep 22 '14 at 07:56
  • @PhilDW, can you please convert that comment into an answer? – Johan Sep 23 '14 at 23:30

1 Answers1

1

Have you tried "Not VersionNT64" as a launch condition in your x86 setup? That works fine to prohibit installs on a x64 system. There is no "=whatever" in the condition. On x86 it's undefined, which means it's false, which means the launch condition evaluates to true only on x86 systems.

PhilDW
  • 20,260
  • 1
  • 18
  • 28