cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
moseph
Level 3

Targeting 64 and 32 bit in single project

I have an MSI project that I want it to target both 64 and 32 bit Windows. It appears that some support is provided for this using release flags and features.
However, INSTALLDIR needs to be set to "[ProgramFilesFolder]MyProgram" or "[ProgramFiles64Folder]MyProgram" depending on the target. There appears to be only one place to set it for all configurations.

Is my understanding of this feature correct? Am I missing something?

Has anyone been able to successfully create a single project that targets both x64 and Intel 32 bit platform?

Any help is greatly appreciated.
Labels (1)
0 Kudos
(5) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

This is not possible as described. A Windows Installer Database can be set to support only one of x86 and x64. If it's set to x64 it will not install on a 32-bit machine. If it's set to x86, the 64-bit folder properties will map to the 32-bit WOW locations.

You may be able to get the desired effect by having a wrapper project which detects the system properties and launches one of two real installs. Alternately a pure InstallScript project should not have the same limitation.
0 Kudos
moseph
Level 3

Thank you Michael for the reply.

However, I wasn't asking if you can target more than one platform with a single MSI database. I am well aware that this is not possible.

My question was about targeting more than one platform with a single InstallShield project.

According to the help file this is possible. See "Targeting 64-Bit Operating Systems" : "Through the use of release flags, you can create one installation project for both 32-bit and 64-bit machines."

I have done all that is necessary but I am unable to set the default target directory "INSTALLDIR" to what is required.

Under 64 bit windows, users can install either the 32 bit or the 64 bit version of our software or both. If I specify [ProgramFilesFolder] in the INSTALLDIR product property, both version will install (by default) to "C:\Program Files (x86)\MyProgram".

The biggest problem is that if I set the INSTALLDIR to "[ProgramFilesFolder]MyProgram", the 32 bit release builds OK but the 64 bit release produces lots of errors like the following:
ISDEV : error ICE80: This 64BitComponent MyProgram.exe_x64 uses 32BitDirectory INSTALLDIR Component Directory MyProgram.exe_x64

If I set INSTALLDIR to [ProgramFiles64Folder]MyProgram, the 64 bit release build OK but the 32 bit produces the following sort of errors:
ISDEV : error ICE80: This 32BitComponent MyProgram.exe uses 64BitDirectory INSTALLDIR Component Directory_ MyProgram.exe

What I need is a way to set INSTALLDIR to [ProgramFiles64Folder] for the 64 bit version and [ProgramFilesFolder] for the 32 bit version. In other words, it should be possible to override the "INSTALLDIR" property in the release tab in a similar way to "Template Summary".

Has anyone been able to target the 32 and 64 bit platforms with a single InstallShield project?

May be there is another way to achieve this.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Sorry about that - after rereading your post, I don't know how I missed that.

As for doing this per release, there's nothing built in to do this. I think your best bet would be to use InstallShield automation to set this before build (see the INSTALLDIR property on the ISWiProject object), or Windows Installer automation to set it afterward, depending on your exact build environment needs.
0 Kudos
moseph
Level 3

Either workaround would be helpful for now. Thank you for that.

I hope this shortcoming is addressed in the next release or bug fix?
0 Kudos
reisingermason
Level 2

Hello. Is there anyway to get Single Player Project on a windows 8 32 bit?
0 Kudos