"Foreign" msi files in a Setup project

Hi there:

Quick question: my application uses SMO, and I need to install that on the user's machine. I got the download from Microsoft in the form of a .msi file (the Microsoft SQL Server 2005 Management Objects Collection download from http://www.microsoft.com/downloads/details.aspx familyid=d09c1d60-a13c-4479-9b91-9e8b9d835cdc&displaylang=en) . Is there any way for me to incorporate that msi file into my setup project

I tried going through the prerequisites (I already have .Net 2.0 and Sql Server Express in there), but it is not dynamic enough to allow that.

I could try and package the SMO assemblies one by one (the dlls were already added as dependencies), I'm just not sure how to force them to be installed in the correct folder, so I'm assuming the msi package would do just that.

If not, any other way that I can achieve this

Thank you,




Answer this question

"Foreign" msi files in a Setup project

  • GSReddy

    I was actually looking at that, and it seemed like the right thing to do. Unfortunately, I need either a package or a product xml file and none were provided with the msi file.

    I tried creating one by myself, but VS definitely didn't want to accept it (didn't balk, but would not show it in the prerequisites window). I even tried copying one of the xml files from another package (and modify the package name) with no success.

    Is there any place I can find out what to put in the xml file(s) to make it work

    Thank you!



  • Ray Brack

    Can you send me the callstack from the error trying to load the help file I've been having a hard time reproing the problem.

    You can get to the help file by going to your Documents and Settings folder and doing a dir /s for *.chm... find the bootstrapper one and open it :-)



  • vbzuki

    Right, great, thanks, Phil!

    So, what this basically does is stop the package from being reinstalled if it's already there. Otherwise I could put pretty much whatever I want in the product code entry, right For example it could say "Microsoft.SqlServerXMOComponents.2" and it would still fly, but will get installed even if it's already there

    Thanks again,



  • Kardi

    You could customise the prerequisites as described here:

    http://msdn.microsoft.com/msdnmag/issues/04/10/Bootstrapper/



  • Sweeps78

    I *think* it creates a bootstrapper that requires that the SQL Msi product be installed, and you can add something about where to get it from. It's all still separate from a LaunchCondition in the MSI file.

  • Lee Eden

    No worries :-) I tried to make it easy, maybe too easy :-)

    Let me know how it goes.



  • Daikoku

    Thanks, Phil, that's great info. I thought the product code is supposed to be a composite ID value (publisher.product.version), not a guid. If I use a guid as a product code it will work Can I then use the same guid to the DependsOnProduct Code entry in other packages dependent on that one

    Example, the SMO package seems to be depending on MSXML and Sql native client packages, can I use their product code in the DependsOnProduct Code entry

    Thanks again,



  • VitaminB6

    I'm not sure if one exists for SMO but what you are looking for is called a "merge module" and has the extension .msm. These are component installation packages that can be executed by an MSI.
  • Kevin Stephens

    All you need is the ProductCode for that dependent MSI for SMO. If you get hold of Orca from the Windows SDK, install it an open the MSI file, the ProductCode guid is in the Property table.

  • Kamel Balquis

    That article on customizing the bootstrapper has the details, and I don't know it well but I think there's an IsMsiInstalled check that uses a product code.

  • chukky

    Very nice piece of software you got there, David!

    I downloaded it and installed it. Loaded the SMO msi file I downloaded from Microsoft and added the conditions I needed (bypassif already there, failif MSXML6 is not installed, etc.). Now I have a manifest file with (I hope) the right information in it. What can I do with it

    I tried the Bootstrapper Manifest Generator's help, but it errors out everytime, so I'm not sure. The manifest file looks eerily similar to the product.xml file needed to be able to include the package in the 'prerequisites' of my project, but I put it in a folder in the "...\bootstrap\packages" folder on my machine and VS can't see it.

    As you can see, I am going to take you up on that offer to help :-)

    Thank you,



  • chrisc12345

    I actually looked for one, couldn't find it. There's a post here on the forum somewhere that says no msm for SMO, mostly to avoid servicing issues in the future, so I guess there is no msm.

    Thanks anyway.



  • gafferuk

    You can use the Bootstrapper Manifest Generator to create the bootstrapper package for the SMO installer. It's at: http://www.gotdotnet.com/workspaces/workspace.aspx id=ddb4f08c-7d7c-4f44-a009-ea19fc812545

    So the ProductCode in a Package.xml file is completely different and unrelated to a Windows Installer Product Code. You can create an MSI Check in your bootsrapper package that checks to see if the SMO MSI ProductCode is already installed, and then create a ByPassIf InstallCondition that causes the bootstrapper to skip the SMO install if it's already installed.

    I hope that helps. This thread got a little tough to follow, so if I can help better, let me know.



  • Ken S

    Oops! Spoke too early :-)

    Truth be told I only clicked the Build button after I sent the message, so now I know how it works. A thousand appologies for this. I will try the package see how it works.

    Thank you again for your help and (again) sorry for jumping the cue :-)



  • "Foreign" msi files in a Setup project