Is it feasible/sensible to wrap an Inno Setup installer inside an MSI for easier distribution via AD?
Asked Answered
V

10

31

Our installer is written with Inno Setup and we are actually quite happy with it. Yet some customers keep asking for an MSI installer which they could more easily distribute via Active Directory. We have already gone to some lengths to make the installer deal really well with automated and unattended installations by extending Inno Setup's /LOADINF-mechanism with our own options.

In order to satisfy the customers asking for MSI, I had been thinking about simply wrapping our regular installer inside an MSI, possibly created using WIX. The question is: can I maintain the high configurability which our current installer offers that way? How would I go about exposing the Inno Setup installer's options through the outer MSI in the unattended/mass installation scenario?

Note that I haven't really gotten to the point of actually digging into MSI-creation and WIX myself yet. Right now I'm only interested in whether people who do know what they're talking about think this would be a feasible/sensible approach to invest our energy in in the first place...

[EDIT:] Initially I thought I could do with the temp extraction and execution approach, i.e. the MSI would simply serve as a vessel for delivering the Inno installer to the target PC and executing it there in /VERYSILENT-mode. But I guess the customers who ask for the MSI also want to be able to uninstall or even modify the install from a central location and I guess that won't be possible in that scenario, would it?

P.S.: We do have an old copy of WISE for MSI here as well but that experience was actually the reason why we started using Inno instead to begin with...

Vernice answered 16/9, 2008 at 10:58 Comment(0)
V
23

No, there's no way to do that while still keeping the functionality your customers are 'implicitly' asking for. The only 'wrapping' in MSI you can do is to extract it on installation and start your InnoSetup installer from the temporary location where you extracted to. MSI is a fundamentally different way of working: InnoSetup (& NSIS & most other installers) take a code-centric approach: you 'program' the 'steps' to install your data. MSI is a database and takes a 'data-centric' approach: you indicate what files should be installed and the MSI 'runtime' does the rest. This gives you versioning and exact control of what goes where.

In short, to give your customers what they want (i.e., the ease of deployment that MSI brings with AD), you'll need 'proper' MSI's. Good luck with that, it's a major pain IMHO. But it does give good results once you master MSI & WiX.

Vermont answered 16/9, 2008 at 11:11 Comment(0)
D
15

I have had this problem many times myself. Therefore, I created a standard way to approach this problem and it resulted in a wizard that will guide you through the steps. The tool will support the following:

  1. Wrap the exe in an MSI.
  2. Support Uninstall.
  3. Only show one program in "Add or Remove programs".
  4. Allow you to pass command line arguments such as /SILENT to the embedded setup when you run the MSI package with MSIEXEC.EXE.

You can get it at http://www.exemsi.com (the basic version is free)

Use my contact form and let me know what you think :-)

Dix answered 22/8, 2012 at 19:32 Comment(0)
V
2

In response to your edit: yes, what you describe will prevent doing upgrades (other than delete/reinstall) and remote configuration, since the MSI database won't know anything about the contents of your installer.

Many installer packages started MSI 'support' in this way, though: InstallShield did, for example. That's the main reason I dumped them, because installers made in that way are useless for MSI purposes. I don't know if recent versions of InstallShield are better, last time I checked was 5 years ago.

Vermont answered 16/9, 2008 at 14:8 Comment(0)
D
2

Its pretty easy to make a wrapper kit that automatically installs INNOSETUPper from MSI. For basic functionality (install/uninstall) this is enough. Most setuppers do not implement repair anyway.

  1. create silent.inf script for INNO Setup (optional)

  2. create install.bat that calls

    myinnosetup.exe /silent /NOCANCEL /norestart /Components="xxx"

    you can use /verysilent
    you can load settings from silent.inf with /LOADINF="silent.inf"

  3. create MSI setup file that calls install.bat ( with parameters if necessary)

  4. deliver all 4 files to your customer and they can deploy your Inno setupper with SMS or ActiveDirectory and everyone is happy :)

Dardani answered 14/10, 2008 at 13:21 Comment(0)
J
2

I would argue that it is possible to do all that you would like with an MSI wrapped Inno Setup, but it is far from trivial, and using WiX might make this particular task more difficult. In short I would not really recommend it.

But if you really would like to...

MSI files are simply database files with additional script instructions and often embed the .cab file that contains the stuff you actually want to install.

If you use Wise, you will generate default scripts that you can then add Windows Installer conditions to and control the events to a finer degree (Install, repair, modify, uninstall) so that they call equivalent actions on your Inno Setup install script which would need to be installed into and kept in a temporary folder.

Jacquenette answered 3/2, 2009 at 22:8 Comment(0)
W
2

It makes no sense mixing install technologies.

If you are mixing you getting the first problem with the uninstall stuff. without changes you get 2 uninstallers of your program.

there are some articles starting with windows installer in the "entwickler magazine"

  • Entwickler Magazin (Ausgabe: 03.09/15.04.2009) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 4
  • Entwickler Magazin (Ausgabe: 02.09/12.02.2009) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 3
  • Entwickler Magazin (Ausgabe: 01.09/10.12.2008) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen Teil 2
  • Entwickler Magazin (Ausgabe: 06.08/15.10.2008) Artikel: MSI-Pakete mit Open-Souce-Software erzeugen

http://entwickler-magazin.de/

windows installer should be the only technology for your installations. its future proof and its stable!

Warmonger answered 7/8, 2009 at 14:10 Comment(1)
This is usually an issue of a company choosing a good deploy technology but a client insisting on MSI nonetheless, though. As for "windows installer should be the only technology for your installations", that's highly subjective.Ethanol
S
2

Wrapping an Inno Setup in an MSI package is not a trivial task. However, it is possible. There are lots of free tools out there that can be used to do this. You should choose one that also supports uninstall(s) and upgrades.

I have found only one free tool that supports upgrades and uninstall. Check out http://www.exemsi.com/inno-setup-and-msi

Spondee answered 17/2, 2013 at 19:36 Comment(0)
S
1

Doing so would be pretty much equivalent to delivering a ZIP file and calling unzip by the end of installation.

With such approach AD and Windows Installer would be fooled as if dealing with proper MSI installation, but as it is not the case, they'd backfire on you on the very first occasion.

Don't go this way.

And WiX is superior toolset to InnoSetup, anyway, so the time you'll spend on learning and porting will pay off by better support of collaboration.

Samsun answered 16/9, 2008 at 12:26 Comment(0)
N
1

although the last comment is feasible and workable, moving to MSI is the best way to handle this.

almost all large organisations stipulate MSI only, there are multitudes of reasons why.

1) first is ease of deployment 2) more important to some is application sociability 3) self healing

inno setup and other such tools not implementing Windows Installer simply cannot offer application sociability in the same ways as windows installer.

you have to understand Inno setup is software designed to deploy a single application.

Windows Installer is an entire framework to deal with sociability, user impersonation, user elevation, self healing, user profile fix up.

They two are not even remotely close in functionality, inno setup in my mind is completely and utterly way off course in terms of comparing with windows installer.

Can it create successful installers ? yes Is it easy to use ? yes Does it create good single installers ? yes Is it the best choice for enterprise ? no

The earliest tools developed by microsoft "SMS Installer" was innosetup 10 years ago. Things have changed drastically in the install world and inno setup simply hasnt kept up with the pace of that change.

Nesto answered 24/10, 2008 at 1:17 Comment(0)
J
1

I need to input a custome value on the silent.inf (not a stablished inno setup setting value) dosent look like LOADINF allows for that.

Note:If you use makemsi you do not have to include a bat as you can use $WrapInstall.

Januaryjanuisz answered 13/5, 2009 at 14:29 Comment(1)
Hi Jack, it's true that Inno does not support this out of the box, but the INF-file is just a simple INI-file and Inno has excellent support for reading and writing those. All you need is to parse the INF-file name out of the Inno commandline...Vernice

© 2022 - 2024 — McMap. All rights reserved.