I am creating an installer project for one of my windows applications .
I want to make sure that an msi is installed first i.e. before the primary output is installed .
All Visual Studio custom actions run after all the files have been installed, so you cannot use a custom action to install another MSI before your primary output is installed. Also, running an MSI-based install from a custom action is likely to fail because concurrent MSI-based installs are not allowed.
The normal way to do this is to create a bootstrapper package that installs dependencies before your MSI is installed, start here:
https://msdn.microsoft.com/en-us/library/ms165429.aspx