PDA

View Full Version : InstallShield adding x64 merge modules when it is a 32-bit app.



abreed
08-29-2011, 07:02 AM
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.

hidenori
08-29-2011, 01:22 PM
We are looking into this issue. I will post information when we figure it out.

abreed
08-29-2011, 01:32 PM
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.

Binary Poet
08-29-2011, 04:30 PM
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.

hidenori
08-29-2011, 04:45 PM
Would it be possible for you to post sample DLLs that replicate the behavior?

Binary Poet
08-30-2011, 07:04 AM
I would be more than happy to privately, just not uploaded to the forum

hidenori
08-30-2011, 11:03 AM
Please email me at hidenoriyamanishi@flexerasoftware.com.

Regards.

Binary Poet
08-31-2011, 11:26 AM
Just sent the email..

hidenori
09-01-2011, 01:41 PM
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 (http://www.dependencywalker.com/) 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.