Click here to Skip to main content
12,881,671 members (32,347 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as

Stats

16.3K views
7 bookmarked
Posted 1 Aug 2013

Make MSI from InnoSetup installer

, 1 Aug 2013 CPOL
Rate this:
Please Sign up or sign in to vote.
How to make an MSI from InnoSetup installer.

Last time, my company customers asked for an installer in Windows Installer MSI format. My company product is a complex system containing thousands of files and plenty of tasks. It cannot be quickly ported to other installer systems. But the result needed to be ASAP.

Windows installer is a complex product too, and even Microsoft made an open source XML based project Wix to simplify tasks. Another good project is MakeMsi, which uses simple text files to describe tasks.

I found MakeMsi reach featured and easy to use. First what you will need is to download and install MakeMsi. The second thing is to look for samples. Copying the TryMe sample is a good point to start. Files TryMe.mm and Try.ver are enough for a beginning. Right click on TryME.mm in Explorer and choose Build MSI. It will generate a sample MSI installer file.

What we need next is to change some properties in the source files to change the labels on the result installer. If you see something not in your source files, you can search the MakeMsi folder and copy any files to your source directory and change them. When everything looks great, we can go to run our old InnoSetup installer.

First, what I try to use is a Binary Table to store the old installer, it works well for a generic executable, but seems to have issues with InnoSetup. I have to choose copying the old installer to a temporary folder and executing from the MSI installer.

<$DirectoryTree Key="INSTALLDIR" 
     Dir="c:\program files\YourProduct" CHANGE="\" PrimaryFolder="Y">
<$Directory Key="TMP" PARENT="TempFolder" Dir="inst" >
<$Files "YourProduct.exe" DestDir="TMP">
#(
   <$ExeCa
;;      Binary="YourProduct.exe"
  EXE="[TMP]YourProduct.exe"
  Args=^/SP- /SILENT /SUPPRESSMSGBOXES /LANG=English /NOCANCEL /DIR="[INSTALLDIR]"^
  Description="Performing installation"
   CONDITION=^<$VBSCA_CONDITION_INSTALL_ONLY>^
  Type="Deferred System Sync"
  Rc0="N"
  Seq="InstallODBC-"
   >
#)

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Ernest Poletaev
Software Developer (Senior) Enterprise Information Systems, Plc
Thailand Thailand
Senior Software Developer in Enterprise Information Systems, an ERP / CRM / Docflow Software Solution Provider for Russian Local Market.

Professional Developer (C, C++, C#), since 1984. Experienced in many programming technologies.

Now i resides in Kalasin, Thailand, working remotely for my company

You may also be interested in...

Comments and Discussions

 
Questionabout makemsi (Administrator privileges). Pin
lin9866652123-Aug-15 16:01
memberlin9866652123-Aug-15 16:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170422.1 | Last Updated 1 Aug 2013
Article Copyright 2013 by Ernest Poletaev
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid