hi I have created custom action dll file with embedded resource as SQL Server Compact Edition msi...this dll is assigned as a custom action in setup project ..but when i run setup msi it will throws error saying that another installation is in progress... I tried process.waitforExit(3000) options in code but still couldnt find solution? Kindly reply
views:
59answers:
4There are basically two ways of including dependancies to your installation. Either through a bootstrapper that runs before your msi-file or as a merge module. As this is a Microsoft product i doubt that it is available as a merge module.
In other words you should probably use a bootstrapper to your application. Try dotNetInstaller
Another option is MSI chaining, although it was not introduced until MSI 4.5, and will require the target system to have MSI 4.5 or later installed. Right now, only Windows 7 has native support, but there are 4.5 redistributables for the older versions of Windows. Finally, be aware that updating MSI with the 4.5 redistributable usually requires a reboot.
Do you need to support silent install? My recollection is that your install won't acquire the lock on the Installer service until it enters the execute sequence. That means you could kick off the SQL Server install somewhere in your UI sequence.
MSI enforces two mutexes. 1) One Execute Sequence per Machine and 2) One UI Sequence per process. While it is technically possible to disregard best practice and call your second MSI from the UI of the first, you will lose the ability to have silent installs and some poor customer out there is going to be disappointed one day.
Either invest in a bootstrapper / chainer or another possibility is SQL Server Compact edition is so small that they also support a private deployment model where you just deploy the assemblies in your application directory. The problem with this approach is if Microsoft ever has security updates for those assemblies they won't be able to service them. You will have to rebuild and deploy your product.