Msi Wrapper Install Arguments
Create a Windows Installer Package (MSI) to deploy the Device Management Agent; How can I install the Device Management Agent (DMA) on domain-joined computers without admin rights? How do I deploy the Device Management Agent on computers that use a proxy? How do I deploy the Device Management Agent through email? Command Line Arguments. One of the big advantages of the MSI Wrapper compared to other solutions for converting exe to MSI is that the original setup executable is preserved and embedded in the package. This means that it is the original setup executable that will run and do the actual installation. Installer and Uninstaller Command-Line Arguments. InstallAnywhere 2012. InstallAnywhere installers and uninstallers can be run using the following command-line arguments.
We've prepared installer for our client using InstallShield technology. Installer works fine but client wants this installer in msi technology. We decided to create wrapper using WiX. Msi installer should do few things:
- Extract IS installer into temp directory.
- Run InstallShield setup.exe.
- Remove temporary directory after IS finish.
We haven't done installer in WiX technology before, those are our problems:
- We don't know how to embed directory with all it's files (installer) into msi using WiX.
- We don't know how to ONLY run msi (it shouldn't install data, only run embeded IS setup.exe during installation and remove after).
- We don't know how to run exe during installation.
This is *.wxs file which I've created so far:
2 Answers
Some alternatives:
From the files, it looks like the installer you have created with InstallShield is an InstallScript non-MSI installer. You might be able to convert it to an InstallScript MSI installer with an InstallShield converter. See this question and answer.
I read the requirement to convert to MSI differently than you do. For any kind of wrapping or converting to be worthwhile, it should take advantage of Windows Installer managing the installation of the files that are actually installed. To do that, you'd have to rewrite the installer from scratch if a conversion is not feasible. Your approach simply uses an MSI as a bundle. You should get clarification on what you want to do.
If you due go with the bundling route, WiX now offers a bootstrapper/downloader/chainer/bundler called Burn. With it, you can create a single .exe that will extract and run your existing installer. And, if you want, you can create an InstallShield response file so the existing install can be run silently. (See the InstallShield documentation for that.)
You can use a WiX Bootstrapper to embed your existing InstallShield executable. No conversion needed.
In our case the Setup.exe as built from InstallShield actually has an MSI inside. (I think this is usually the case). So then you have two options:
- you can either extract that MSI (google 'extract MSI from InstallShield') and embedded it in the bootstapper using MsiPackage
- or you can embed the whole Setup.exe, using ExePackage
Passing Parameters to an MSI: easy
Msi Wrapper Install Arguments
Passing parameters to an InstallShield Setup.exe: tricky
In our case Setup.exe ends up passing the parameters to the MSI anyway, use /v'the-parameters-go-here-but-you-have-to-escape-properly'
Sounds easy, but it was complicated to properly escape slashes (), single-quotes ('), double quotes ('). Also, WiX escapes differently if the whole InstallArgument is enclosed in ' (single quotes) or ' (double quotes). I started with single quotes because it looked easier, but ended up using double quotes. Use the install log to see what gets actually passed through each layer.
Sources:
https://social.msdn.microsoft.com/Forums/windows/en-US/1a113abd-dca1-482b-ac91-ddb0dcc5465c/is-it-possible-to-pass-commandline-arguments-to-an-installshield-executable?forum=winformssetup
http://helpnet.installshield.com/installshield22helplib/helplibrary/IHelpSetup_EXECmdLine.htm