There are many articles and posts about how to开发者_运维知识库 include VC runtimes in an MSI file.
I am using Advanced Installer and VS2008
Some say use Merge Modules; I am not sure they will work correctly ie. if they go in before my services (which depend on them) start up during the install, and also merge modules seme to have have an annoying habit of demanding a reboot on uninstall;
I have tried simply copying the .exe redistrutable packages from MS and using a custom-action under Install to execute them with the /q switch. I can run other installers like this (eg. SQLITE) and it works. But the MS files don't seem to become installed. They certainly don't show up in the Programs or Updates list.
Does anybody know a simple, effective way to incorporate the VC2008 runtimes into an MSI installation?
This is usually done through prerequisites. Currently Advanced Installer has predefined prerequisites for most Visual C++ redistributables. So all you need to do is add them to your project.
If you run the Visual C++ Redistributable as part of Advanced Installer Custom Action without the /q switch you will see it fails with error 'Another installation is currently in progress'.
I am experimenting with installing the pre-requisite first (before install phase of installer) or if that fails, I will use the Predefined Prerequisites (above). However, to have /q on the VCRedist when a Predefined Prerequisite requires an enterprise license, which I don't have ..
Update
Resolved as follows:
- Include the VCRedist in your installer
- Have a new Custom Action to 'Launch Installed File', choose the VCRedist from your installed files
- Use command line /install /q /norestart
- Drag the custom action last in the list after 'Finish Execution'
Your Custom Action dialog should look something like this
精彩评论