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

InstallShield adding x64 merge modules when it is a 32-bit app.

Hello,

After upgrading to InstallShield 2012 and building a few times successfully, I am now noticing the warnings "Adding merge module 'Visual C++ 10.0 CRT (x64)' that is a dependency of component 'XXX'" to a bunch of dlls/exes during the build of the installer, when it said before "Adding merge module 'Visual C++ 10.0 CRT (x86) MSM' that is a dependency of component 'XXX'". These are all x86 dlls/exes (compiled as Platform Any CPU, with others Platform 32bit) and it should not be adding x64 modules, as it did not do this before. This ends up producing the error "ISDEV : error -5008: Intel64 or AMD64 must be specified in the template of the Summary Stream" at the end. The only thing that has change since my first few builds in 2012 is the normal Windows Update process. Any suggestions to force this to be x86 merge modules or how to fix this?

I have made sure every component has 'No' set for '64-bit Component' and that makes no difference. Also, using the 32-bit version of MSBUILD to compile the source, so it has no chance of being a 64-bit application.
Labels (1)
0 Kudos

(8) Replies
hidenori
Level 17

We are looking into this issue. I will post information when we figure it out.
0 Kudos
abreed
Level 3

Semi-Solved:

If I right click one of the managed dlls that reported the addition of x64 merge module, I could see that Visual C++ 10.0 CRT (x64) was added as a dependency. This is very weird, since the installer built before. The only thing that changed on the entire box was what occurred during a Windows update (updated .NET and Visual C++) and then InstallShield started reporting the error. I did not add or remove any files to the InstallShield project in between updates. When I originally added files, I selected No/No to All for detecting dependencies. Still, like I said, these dlls were compiled with 32-bit MSBUILD and I have no idea why they would be detected to need x64 modules.
0 Kudos
Binary_Poet
Level 3

I just wanted to also mention I am having the same problems as mentioned above on x32 bit dll's and the installer trying to add x64 items when I know for a fact everything is x32....

Also having wierd issues when testing a Suite Project in a clean XP (x32) machine where I only get the Program Maintenance screen when I run setup.... This a super clean machine.
0 Kudos
hidenori
Level 17

Would it be possible for you to post sample DLLs that replicate the behavior?
0 Kudos
Binary_Poet
Level 3

I would be more than happy to privately, just not uploaded to the forum
0 Kudos
hidenori
Level 17

Please email me at hidenoriyamanishi@flexerasoftware.com.

Regards.
0 Kudos
Binary_Poet
Level 3

Just sent the email..
0 Kudos
hidenori
Level 17

I worked with Binary Poet offline and figured out that he has the 64-bit version of MSVCR100.DLL in the same folder containning the file he is trying to scan. InstallShield detects that MSVCR100.DLL as a dependency and therefore adds the 'Visual C++ 10.0 CRT (x64)' merge module to his installation. In order to get it work-around, remove the file or change the Path environment variable to list a directory containing the 32-bit version of MSVCR100.DLL first.

I would recommend that you use the Dependency Walker to find out the location of dependencies detected on your machine. You can view the full path of the dependencies by selecting the View | Full Paths menu option.

Also, I've submitted the work order IOA-000065378 so that InstallShield will detect the dependencies based on the target CPU architecture wisely in a future release.

Hope that helps.
0 Kudos