How to convert MSI to EXE for free

Introduction

Important Update:

Warning - this process is quite long. If you prefer, there is a tool to do this for you. To find out more, click here for the MSI to EXE compiler tool .


Origin article:

In this hub I will tell you how to convert your MSI to an EXE for free. There are some software utilities out there you have to pay for, but you don't need them. This method uses a utility built into Windows that can be run using a wizard or automated from the command line.

Why would you want to create an EXE from an MSI? Here are some reasons:

  1. Some people won't recognise what an .MSI is and what to do with it. And exe makes it more obvious you need to run it.
  2. The exe can do a special run of the .MSI using msiexec with certain parameters, e.g. quiet mode.
  3. If you use Visual Studio Setup Projects you need to supply both the setup.exe and setup.msi but you want to give your customers a single download.
  4. By making your download an .exe you have the flexibility to move away from .MSI later if you wish without updating your PAD files.

So now you know the reasons, lets do it!

The tool you will use

The tool to create the EXE file is built into Windows XP, Vista and Windows 7 and is called IExpress. It's an old tool few people know about. I only learned about this recently.

So lets get started. To begin:

  1. To begin, get a nice empty folder ready with your .msi file. (Don't worry about the small setup.exe if you have built using Visual Studio - we won't need that)
  2. Click Start->Run and type iexpress and press OK
  3. You will see the Welcome to IExpress window. Click Next.
  4. Package Purpose - stick with "Extract Files and run an installation command" and click Next.
  5. Package Title - Enter a suitable title, click Next.
  6. Confirmation Prompt - Stick with No Prompt, click Next
  7. License Agreement - Stick with Do not display (I presume you have one in the msi), click Next.
  8. Packaged Files - Click Add and choose your MSI file. Click Next.
  9. Install Program to Launch - Enter msiexec /i MyPacakage.msi *, changing the msi name as appropriate. Don't bother with post install. Click Next.
  10. Show Window - Keep with default. Click Next.
  11. Finished Message - Keep with no message. Click Next
  12. Package Name and options - Enter the full path** to where you want the package (.exe) created. Click Next
  13. Configure Restart - Stick with only restarted if needed. Click Next
  14. Save Self Extraction Directive - Choose to save the SED file into the same directory as the msi for later use.
  15. Create Package - Click Next to create it

Now the process will start and will create your self extracting .exe. Well done!

Notes:

* If you just enter the .msi name here the install will fail with an obscure couldn't find dll error. You need to have this command to msiexec for this to work. Feel free to change the flags if you know what you are doing.

** If you don't put a full path it will choose a silly default

To find out more, click here for the MSI to EXE compiler tool .

Automate from the command line

Now you have saved the options as a .sed file, it is very easy to automate from the command line, so you can add this into your build scripts. I have this running after a script that builds the code and runs WiX to create the msi. So I have a complete end to end build and deploy process using free tools!

Firstly I will just mention what you can do with the .sed file. There is an option to open it in the IExpress wizard so you can edit it. You can also open it in notepad and edit the settings that way.

To automate, just create a new text file in your msi folder, rename to createexe.bat and edit it.

In the editor type:

IExpress /N MyFile.SED

(replacing MyFile with the file name you chose)

Save.

When you double click createexe.bat the whole process is done for you automatically. Ideal for version 1.1 of your software.




Comments 18 comments

coryc 5 years ago

This is amazing. I tried it and it works. Thank you very much. I had no idea this even existed.


TDarling77 5 years ago

Excellent!!! I wonder how many people know about this built-in Windows tool to convert .msi file to .exe file. I came across this article while searching for a free tool to convert .msi file to .exe file.

It works but one thing I noticed was that the final .exe file did not show up in the folder I pointed it to but it showed up in the same folder where I happened to have the .msi file. I did it twice with the same result.

The bottom line is that I was able to convert my .msi file to .exe file for free.

Thank you,

TDarling77


tecit 5 years ago

Works great; incredibly useful. THANKS!!!


Great tool, but not working for me 5 years ago

Great tool, would probably work for a list of items to install from EXEs but MSI just isn't working for me. Get an error stating the MSI file doesn't exit. Oh well, guess I'll just try again later...

Thanks!


Martin Capodici 5 years ago

Yes since writing this article I am more of the opinion that you just let them download the msi on it's own. That's a lot easier and will work for 99% of people (have a support email address for the other 1%).


Jake 4 years ago

Install Program to Launch - Enter msiexec /i MyPacakage.msi *, changing the msi name as appropriate. Don't bother with post install. Click Next.

this step is very confusing as the /i mypackage.msi? do i copy the "i" and the spaces?


Jake 4 years ago

Beccause if so its not working for me..


mverdi 4 years ago

A few things to try. It initially didn't work for me:

1. the command line is 'msiexec /i packagename.msi'. The asterisk is not part of the command line but refers to a comment farther down the post.

2. There is an option on one of the IExpress screens to use long file names. It corresponds to the SED entry 'UseLongFileName'. Check this or set it to 1 in the SED file. This fixed the issue for me.

Originally I was getting a message stating 'make sure file exists'. If your file doesn't meet the 8.3 naming convention, you'll need to use this flag or rename your MSI file.


Tim Almond 4 years ago

Thanks for this...


Marian 4 years ago

That's really cool, thanks! I tried the described approach and it works well. Now I use this approach to tranfrom Windows Installer files to executables. For the opposite task (EXE to MSI), that is required for mass software deployments, I use EMCO MSI Package Builder: http://emcosoftware.com/msi-package-builder/conver...


Demian 4 years ago

Nice, although all it does is package de MSI file into a self-extracting EXE file... kinda redundant as it keeps being a MSI file into an EXE file.

This can be done even with WinRAR or similar. No matter what thank you for the tip.


Srikanth Pendem 4 years ago

Thanks , It is simply awesome :)


M Chau 4 years ago

Use short file name (8.3) and it work perfect, thank for the article.


Jason 4 years ago

Very useful.


Me 3 years ago

Thank you very much. ;)


MARKAND DAVE 3 years ago

VERY NICE...Works great..! THANKS.


Andreas 2 years ago

Warum in die Ferne schweifen? Ist das Gute doch so nah! (Goethe)

[Why seek far afield? The best is just so close!]

Thank you very much!

Just for those, who have problems to _replace_ their installation on a customer machine with a new minor update:

use this one:

msiexec.exe /i my.msi REINSTALL=ALL REINSTALLMODE=vomus


Marco 2 years ago

Could try ZOLA MSI here http://www.zolasoftware.com

Marco

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working