tags:

views:

1376

answers:

2
+11  Q: 

Merge msi and exe

Hi

My deployment project creates and .msi-file and an .exe-file. Is it possible to merge these into one .exe?

+11  A: 

Yes, you can create a self-extracting installer containing both MSI and the setup.exe bootstrapper file.

I think it is possible to do that with WinZip, or you can use IExpress coming with Windows. Here is a guide how to create a self-extracting executable with IExpress. You can either use the IExpress wizard or manually write a config file which you then can execute in the post-built step of your setup project, e.g. by calling

IExpress /N /Q MySetup.sed

A sample configuration file would look like this:

[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=1
HideExtractAnimation=1
UseLongFileName=1
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
TargetName=MySetup.exe
FriendlyName=My cool application
AppLaunched=CMD /C setup.exe
PostInstallCmd=
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0="setup.exe"
FILE1="MySetup.msi"
[SourceFiles]
SourceFiles0=
[SourceFiles0]
%FILE0%=
%FILE1%=

There is a little caveat however with the self-extracting installer scenarios. Due to another fix these scenarios are broken with the bootstrapper (setup.exe) created by VS2008 SP1. For a workaround see the following thread: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/3731985c-d9cc-4403-ab7d-992a0971f686/?ffpr=0.

0xA3
Doesn't work with VS.NET 2008 Setup Bootstrapper.
Martin
Yes, it doesn't work due to a bug. See the link that I have posted (http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/3731985c-d9cc-4403-ab7d-992a0971f686/?ffpr=0) for a workaround.
0xA3
The PostInstallCmd line in [Strings] should read PostInstallCmd=<None>, otherwise it will give you an "error creating process" message when installation completes.
odd parity
+1  A: 

I like it, you can see how to use IExpress on this link!

The only problem I see was that I've generated a installer on Windows Vista 64bits, I was trying to install the generated .exe in a server with Windows Server 2008 32bits, but it throws an error about processor type.

Junior Mayhé
I ran into this as well, you can fix it by running C:\Windows\SysWoW64\IExpress.exe instead of the one in C:\Windows\System32. That way it will always generate a 32-bit exe.
odd parity