Reputation: 2975
Innosetup, WiX and Visual Studio Professional users, forebear. This is not a question about these tools and their kin.
I want to produce a MSI file. I roughly know about what a MSI file is made of, by having inspected one with Orca. (shipped with the Windows 7 SDK) I know that you can make a MSI do everything and the rest. (Just because it can embed native DLL images and be made to call exported functions thereof)
I want to know how to produce a MSI file from a set of source files. In short, can anyone give me:
Upvotes: 1
Views: 1945
Reputation: 55620
For the moment, forget the word "compile". That is a metaphor that WiX and InstallShield brings to the table. ( .wxs -> .MSI or .ism -> .MSI ) In a pure, barebone Windows Installer world you are simply creating MSI databases.
Technically speaking, everything you need to create a Windows Installer database is already installed on a barebones installation of Windows. Through VB/JScript you can use the Windows Installer Automation Interface to create and update databases. For example the Installer.OpenDatabase method can be used to create an empty .MSI. If you'd rather do this in C++ you can use the Windows Installer API MsiOpenDatabase function. You can interop with either from a .NET application also. However, to be honest, Windows Installer XML has a library in Deployment Tools Foundation (DTF) called Microsoft.Deployment.WindowsInstaller which is the gold standard for doing so. You would not want to waste one minute of your life dealing with interop questions as they have already done this for you.
If you want to install the Windows Platform SDK you'll find a bunch of headers and libs as well as Windows Installer Scripting Examples. Then of course there is your best friend, the Windows Installer Database Editor Orca.exe.
Now, all of this is good foundational knowledge. But to be honest, these were just the SDK resources created by Microsoft back in 1999. They were mainly intended for Windows Installer Tools developers not Windows Installer developers. Which are you? If you are creating a new tool, I thank you and hope this information helps you get started. If you are creating MSI's, there are much better answers I can give you outside of the limitations you set in your question.
Upvotes: 1