SAP Crystal Reports Runtime included in setup when not used in project
In the ISLE setup project I include .NET Framework 4.0 and Windows Installer 4.5.
The simple setup builds and works fine.
Once I add a DevExpress XtraGrid to the project's only form and rebuild the solution, the setup includes 'SAP Crystal Reports runtime engine for .NET Framework 4'. The log indicates that is a dependency of component 'WindowsApplication1.Primary_output'.
If I remove the XtraGrid and all DevExpress references from the main project, the SAP runtime is not included in the setup.
So, the question is, why does ISLE include the SAP runtime when it is not used? And how do I prevent it?
I do have SAP Crystal Reports, version for Microsoft Visual Studio installed on my dev machine, for use in other projects.
I installed VS2013 and InstallShield LE on a Win 7 VM. Could not install CR as it requires VS2010 or VS2012.
Took the same solution I had mentioned in my original post and built it - no problem, did not include CR.
Added the CR merge modules to C:\Program Files (x86)\Common Files\Merge Modules. Note, none were checked to include.
Rebuilt the solution and it adds the SAP Crystal Reports runtime.
So, it seems that simply the presence of the CR Merge Modules is a factor.
The merge modules were downloaded from
Directly under the line: Merge module runtime redistribution packages (no IDE integration)
I have received a reply from DevExpress. They have duplicated the problem and confirmed that their assembly does not require CR references, so it seems that the problem is totally on the InstallShield side. Here is the DevExpress thread https://www.devexpress.com/Support/Center/Question/Details/Q559017
Hi Flexera Software team,
My name is Gosha. I'm from DevExpress Support Team. An issue occurs if SAP Crystal Reports merge modules are installed on a machine. InstallShield Limited Edition detects that the DevExpress.Data assembly depends on these modules. This leads to errors when installing a built setup project on a client machine. In fact, our DevExpress.Data assembly does not depend on the SAP Crystal Reports merge modules. I have attached the DevExpress.Data assembly and its csproj file to illustrate this.
We tried to exclude the SAP Crystal Reports merge modules from a setup project, but this results in an error. I captured a video to illustrate our efforts. You can find the video in my comment from January, 3rd at http://www.devexpress.com/Support/Center/Question/Details/Q559017.
Please refer to the attachment for my setup project as well.
So, I would ask you to provide more evidence in this regard and help our customer resolve the issue.
My version of InstallShield is 2013 Limited Edition 20.00.0000. You can download the SAP Crystal Reports merge modules from https://global.sap.com/campaign/ne/free_trial/crystal_reports_visual_studio/wty_int_crvs.epx?Level=1&FormResultID=3c08000b-356a-4cc7-a022-caef84938ed6&ContinueURL=%2fcampaign%2fne%2ffree_trial%2fcrystal_reports_visual_studio%2findex.epx%3furl_id%3dtext-na-sapcom-crvs-trial-landing%26kNtBzmUK9zU%3d1&.... It's necessary to unzip them to the "C:\Program Files (x86)\Common Files\Merge Modules" folder. If you need our products installed on your side, you can download our trial version from https://www.devexpress.com/Home/try.xml.
I'm looking forward to your response.
Thank you for all the updates on this issue.
We are currently in touch with our engineering team in order to investigate this issue further.
We should have more conclusive information about this very soon. We shall keep you updated on the same.
Thank you for your understanding and patience.
It appears that DevExpress.Data.v13.2.dll has a dependency of gdiplus.dll, so when you are scanning for dependencies InstallShield will look for a merge module that contains the needed file and will add the merge module at build time by default.
It looks as though the SAP merge module not only contains gdiplus.dll but may also be the first merge module that contained the file alphabetically (CRRuntime_13_0_16.msm) which may have led to selecting the first merge module found and not necessarily the best merge module for your needs.
I did some digging around and was able to locate a gdiplus merge module that you should be able to use in your project and it can be downloaded using the link below.
You may already have this merge module, but just to be sure I added it here: (GDIPlus.msm)
Since it sounds like you do not use the SAP merge modules, I would recommend the below steps:
1- With your InstallShield project open use the "InstallShied LE" dropdown menu > options > Merge module options.
This should provide you with the paths that InstallShield will check for merge modules, go ahead and place the downloaded file in one of the valid paths best suited for you.
2- Locate any CRRuntime_13_0_16_xxxxx.msm that you may find in the merge module locations seen above and remove them from the folder structure, zipping them up for potential future use.
3- Close then re-launch Visual Studio and your project file so that the new merge module will be listed in the Redistributables view (VC User gdiPlus RTL X86 ---) and will be discoverable by InstallShield.
You should now see the gdiplus merge module being added at build time.
Removing/adding the CRRuntime modules from the folder is what I have been doing.
The thing is remembering to add/remove them as needed before a build.
I am guessing that gdipluss.dll is also included in the DevExpress dll's as it is not in the merge module folder and everything works fine.
It would be great if there was a better solution but, at least we now know just what is happening.
Ideally if you look in your "Files" view (under #2) you can right click your DevExpress.xxx.yy.dll's > Properties > Com &. Net Settings > then ...
change the value from: "Dependencies and Properties"
change the value to: "Properties Only"
and it will not be scanned for dependencies at build time.