Justin
Justin

Reputation: 86729

Free MSI Authoring tools

Are there any free / open source tools that can be used to create an advanced MSI installer.

I've found the following list of MSI authoring tools, however I know very little about MSI technology and its hard to tell from that list which of those tools can actually be used to create new MSI installers from scratch (as opposed to simply viewing or editing existing installers)

Upvotes: 8

Views: 8640

Answers (5)

Bogdan Mitrache
Bogdan Mitrache

Reputation: 10993

Advanced Installer has an edition which is free forever. It allows you to create Simple projects, as in the linked tutorial.

The same project type can also be integrated with the Visual Studio extension which is also free.

The advantage is that Advanced Installer provides a high level, easy to use, GUI for building and customizing the installer. Learning it is much easier. The projects are XML files, but they are not related with the XML format from Wix. (however, you can import your Wix projects, so you don't start over from scratch)

Unlike Wix, Advanced Installer also has commercial editions. All are available in the same application, so you don't need to download a separate SKU to get the free version.

It can create MSI packages from scratch but it can also edit existing MSI packages. The same for AppX and App-V packages.

Disclaimer: I work in the team building Advanced Installer, see my profile for more details.

Upvotes: 3

Ivan Vučica
Ivan Vučica

Reputation: 9669

I like liked MakeMSI. (Nowadays I prefer WiX which is slightly easier to deal with once you figure it out, has nicer output, and also does not depend on Visual Studio.)

Original answer follows.


MakeMSI's got a steep learning curve, general feeling of MakeMSI is not very professional, but it turned out to give good results, plus it does not seem to depend on Visual Studio for anything.


Here's an example from which I just built an .msi (modified to remove branding):

gamename.mm:

#define? UISAMPLE_DIALOG_FILE_dlgbmp     LeftSide.bmp   ;;My replacement graphic for the left hand side (vertical) bitmap
#define? UISAMPLE_LEFTSIDE_TEXT                                ;;Disable "left side text"
#define? UISAMPLE_BITMAP_WHITE_BANNER    PrettyBanner.bmp     ;;Use "white.bmp" if you just want it plain
#define? UISAMPLE_BITMAP_BANNER_GRAPHIC  gamename.bmp          ;;The graphic on the right of the "UISAMPLE_BITMAP_WHITE_BANNER"
#define? COMPANY_PRODUCT_ICON            ..\gamename.ico          ;;Add-Remove (control panel) icon
#define? COMPANY_NAME                    Company Name
#define? DEPT_ARP_URL_PUBLISHER          http://www.example.com/
#define? DEPT_ARP_URL_TECHNICAL_SUPPORT  http://www.example.com/support
#define? DEPT_NAME                       Company Name
#define? DEPT_ADDRESS                    [email protected]
#define? COMPANY_CONTACT_NAME            <$DEPT_NAME>
#define? COMPANY_CONTACT_NAME_PHONE               ;;No phone
#define? COMPANY_SUMMARY_SCHEMA          110      ;;Minimum v1.1 Installer
#define? COMPANY_SUMMARY_AUTHOR          <$DEPT_NAME>

#define? UISAMPLE_LEFTSIDE_TEXT_FONT_COLOR         &HFFFFFF  ;;White in BGR (believe it or not...)
#define? DBG_ALL                                   N         ;;Do not Add MAKEMSI debugging to "console file"


;--- Include MAKEMSI support (with customisations and MSI branding) ------
#define VER_FILENAME.VER  gamename.ver      ;;ver filename
#include "ME.MMH"

; #define MSI_SUMMARY_MSI_NAME_TITLE Blah

;--- Want to debug (not common) ---------------------------------------------
;#debug on
;#Option DebugLevel=^NONE, +OpSys^


;--- add files --------
#define SourceRootDir ..\bin\win32_dist

; <$MAKEMSI_MM_BASENAME>: filename of this mm, e.g. "gamename.mm"
<$DirectoryTree Key="INSTALLDIR" Dir="c:\program files\Game Name" CHANGE="\" PrimaryFolder="Game Name">

<$Files "<$SourceRootDir>\*.*" DestDir="[INSTALLDIR]\" SubDir="TREE">
<$Files "<$SourceRootDir>\data\*.*" DestDir="[INSTALLDIR]\data" SubDir="TREE">
<$Files "<$SourceRootDir>\Microsoft.VC90.CRT\*.*" DestDir="[INSTALLDIR]\Microsoft.VC90.CRT" SubDir="TREE">


<$DirectoryTree Key="MY_SHORTCUT_FOLDER" Dir="[ProgramMenuFolder]\Game Name" MAKE="Y" REMOVE="Y">
<$Shortcut Dir="MY_SHORTCUT_FOLDER" Target="[INSTALLDIR]\gamename.exe" Title="Game Name" Description=^Launch Game Name^ Arguments=^""^  WorkDir="INSTALLDIR" >

gamename.ver:

; ProductName = Game Name
; DESCRIPTION = Game Name
; Licence     = gamename.rtf
; Installed   = WINDOWS_ALL
; Guid.UpgradeCode = {DEADBEEF-DEAD-BEEF-DEAD-BEEFDEADBEEF} ; <=== GENERATE THIS
; MsiName     = gamename

; repeat this as a changelog
;############################################################################
VERSION : 1.2.2
DATE    : 11 May 2011
CHANGES : Initial build.
        : 

You also need to supply:

  • LeftSide.bmp - 503x314 (empty except for left 160x314)
  • PrettyBanner.bmp - 500x60
  • gamename.bmp - 48x48

Files to distribute are specified with, for example:

 <$Files "<$SourceRootDir>\*.*" DestDir="[INSTALLDIR]\" SubDir="TREE">

Build the MSI by right clicking on .mm and choosing the correct item.

Upvotes: 1

Bram
Bram

Reputation: 8273

I use Wix Edit which is an easy easy way to create the XML file used to build an MSI. I did have to edit the XML manually afterwards though, to add a leading '\' to each file path. Also, Wix Edit does a poor job with setting WorkingDirectory for short cuts, so you have to change that manually as well.

Upvotes: 0

elmarco
elmarco

Reputation: 32963

You may want to take a look at MSI tools: https://live.gnome.org/msitools, you can build MSI with low-level tools and API, or use a more sophisticated WiX-like tool called wixl. The whole code is open and cross-compiler friendly (glib/libgsf, no .net etc). It is based on Wine MSI implementation.

For signing, osslsigncode supports MSI since version 1.5.

Upvotes: 0

Alexander
Alexander

Reputation: 3744

I prefer using WiX for creating MSI installer. Maybe it's not the easiest way to generate an MSI (because its XML-based), but its free and you will find a lot of template scripts in the internet. A script base tool like WiX doesn't need to be a disadvantage at all, its perfect for automated builds.

Also as far as i know Visual Studio 2010 should support WiX out of the box.

Upvotes: 13

Related Questions