Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create an MSI installer programmatically?

I have a program that is used to create other program and compile it from *.cs source file

      using System.CodeDom.Compiler;

I would like to create an installer too for the compiled program but i am wondering if i can do that programmatically, so when i click the Build Now button in my main application, a new installer will appear on a chosen destination.

Is there someway to create an msi installer for the compiled program ( the program that i have built ) with a button click.

I don't want to use InstallShield everytime i want to create an installer for my compiled programs.

Any help would be highly appreciated

like image 419
Rafik Bari Avatar asked Jun 17 '12 18:06

Rafik Bari


2 Answers

I recommend you use WiX. It is a very powerful installer building tool. You can use it to create the install files using the command line tools, which can be used from your build program.

like image 195
Amirshk Avatar answered Nov 04 '22 12:11

Amirshk


WiX is now integrated with Deployment Tools Foundation, a complete wrapper around the Windows Installer API. When you install WiX, you'll get DTF too.This should allow you to address any MSI related scenario programmatically. There's some documentation too, but you'll need a fairly rigorous understanding of MSI databases to get to grips with the API. I'd avoid this if possible and go with the WiX route.

As vdproj setup projects are being killed off in VS11, learning WiX is a considerably better investment in time than getting to grips with some of the other options VS tries to steer you towards.

like image 33
spender Avatar answered Nov 04 '22 11:11

spender