PDA

View Full Version : 64- and 32-bit versions of the same product



Yuri_1
07-18-2017, 04:08 PM
We plan to release new version of our product build in 32- and 64-bit.
What is recommended way for InstallerShield, have two separate installers or combine both versions into one package and prompt for bitness during installation?
Should Product/Upgrade/Package Codes be the same for both 32- and 64-bit versions?
Please advise.
Thank you,
Yuri

chad.petersen
07-18-2017, 04:36 PM
A single MSI is generally defined and compiled as either x86 or x64. Here are some reasons

1. A 32-bit MSI does not have access to the 64-bit portions of the registry and file system. This makes deploying true 64-bit components impossible since everything is redirected by the Windows OS to the Wow6432Node in the registry and to the C:\Windows\SysWOW64 folder. The GAC, too, if you use that area.
2. A 64-bit MSI cannot be run on 32-bit systems. It will always throw an error.

There are workarounds that people have come up with including, but not limited to

1. A bootstrapper to select bitness which launches either the 32-bit or 64-bit MSI as appropriate
2. An MST transform to overlay a 32-bit installer with 64-bit information. This requires a command line to launch (bootstrapper) or a build time transform which still results in 2 installers.

If an assembly is true 64-bit then each Component like that needs to have the 64-bit Component flag set to Yes.

A 32-bit MSI can be installed on both 32-bit and 64-bit systems, but a 64-bit installer can only be installed on 64-bit systems.

In InstallShield - Under General Information is the Template Summary choice that you use to chose a project-wide processor type and default language.

Chad

Yuri_1
07-19-2017, 10:27 AM
Thank you Chad for explanation. Based on what you said, I think it will be cleaner to have two installers then.
What about Product/Upgrade/Package Codes, should they be the same for both 32- and 64-bit version of installers?

chad.petersen
07-19-2017, 10:54 AM
Since a 32-bit and 64-bit installer of the same product would both generally not be installed on the same computer you have some choices/decisions to make. On a 64-bit machine it would be possible to run both the 32-bit and the 64-bit. If you have the codes the same it can give you a message to go uninstall the other version (default message paraphrased). If all the codes are different then it would likely be possible to install both - so experiment some in this area and see what works for you.

I worked on a product that had some files and registry keys that were either 32-bit or 64-bit. Not a lot of files, so I wrote the 32-bit to install everything 32-bit on a 32-bit or 64-bit computer and then a small 64-bit installer to drop the 64-bit files and it actually read the 32-bit registry keys and set the 64-bit keys to the same values during the install - pretty easy to do. So, in this case I DID want them to be able to run both the 32-bit and then on 64-bit machines also run the 64-bit installer - sort of an overlay installer.

So, some of this comes down to what you want it to do.

Chad