cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
AJungen
Level 6

Have a Problem with multiple instances and merge Module

Hello,

maybe this was already a thread, but i haven't found it.

I can already install multiple times using multiple instances, but now i need the visual c++ 8.0 CRT to be instllad too, so i selected them from the Redistributable List.

When i try to generate the Installation i got a lot of Warnings like this:
ISDEV : warning -6627: Component downlevel_manifest.8.0.50727.103.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E has nonfile data but does not have InstanceId in its condition
And the Libraries will not installed.

What does this mean/What can i do to get a correct installation ?
At the moment he does not install the MFC dll's.

Andreas
Labels (1)
0 Kudos
(7) Replies
charlieantao
Level 6

Are you sure it doesn't get installed? The CRT libraries get installed in [WINDIR]\WinSxS, and not in the [INSTALLDIR]

The visual C++ 8.0 CRT merge module has a lot of ICE warnings and even one ICE error in it. I have successfully included it in an IS11 project. Maybe IS12 doesn't include it due to the error.
0 Kudos
AJungen
Level 6

many thanks

There they are. 🙂

I was searching in System32 directory :rolleyes: ....
I Also didn't find an entry in the uninstall software list with 'C++ 8.0'
thats why i thought they weren't installed


Andreas
0 Kudos
AJungen
Level 6

Is it somehow possible to get rid of these warnings ?

Andreas
0 Kudos
DebbieL
Level 17

I don't know of a way to avoid the warnings like that for a third-party merge module. It's not a good idea to modify a third-party merge module to add InstanceId conditions to its components.

You may want to consider refactoring the merge module as a setup prerequisite:
[LIST=1]
  • Create a new Basic MSI project.
  • Add the Visual C++ 8.0 CRT merge module.
  • Build a compressed release.
  • Use the Setup Prerequisite Editor to create a setup prerequisite for Visual ++ 8.0 CRT. Add your compressed release to this prereq.
  • In your multiple-instance project, add your new prerequisite, and remove the corresponding merge module.

    At run time, if an end user installs your product, your installation will install Visual C++ 8.0 CRT (from the prereq) if it is not present. Then your installation will continue with the installation of the base instance of your product. If the end user wants to install a new instance, they'll run your installation again; for this time, the installation won't need to install VC 8. The installation will proceed with installing a new instance. When either instance is uninstalled, the VC 8 data is not affected; it's not associated with specific instances.

    So, using a setup prerequisite instead of a merge module enables you to work around the following statement (from the Windows Installer help): "To keep the nonfile data of each instance isolated, the base package should collect nonfile data into sets of components for each instance. The appropriate components should then be installed based on conditional statements that depend on the instance identifier."

    I hope that helps.

    Debbie Landers
    Macrovision Corporation
  • 0 Kudos
    Christopher_Pai
    Level 16

    Isn't there already a redist package from Microsoft?

    http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=en

    Also it may make sense to avoid the need for the redist just by statically linking the lib into your C++ outputs. I've asked previous clients to do this and they were very happy with the results. Eliminate DLL hell by eliminating the DLL.

    I don't really reccomend third party MSM's at all these days because of servicing issues and I particularly would avoid them when attempting to do multiple instance installers. The rules around multiple instance are very, very picky and I wouldn't trust a third party module to have been designed for this.

    Serialize or eliminate the dependency, not merge it... that's the better way to go.
    0 Kudos
    AJungen
    Level 6

    thanks,

    i think i will use the redist package


    Andreas
    0 Kudos
    Christopher_Pai
    Level 16

    Btw, if you've never wired up a custom prereq, here is an example using .NET Framework 3.0:

    http://blog.deploymentengineering.com/2006/11/using-installshield-12-to-install-net.html
    0 Kudos