How to merge Setup.exe, Setup.msi and .NetFramewor

2019-02-27 03:54发布

问题:

How can the setup files and prerequisite files from a vs2010 setup project be merged together? ..in my release directory there are 3 files:

setup.exe
Setup1.msi
DotNetFX40Client/dotNetFx40_Client_x86_x64.exe

and I need these files to be in one simple setup file.

I tried using IExpress tool from windows but it doesn't work because "dotNetFx40_Client_x86_x64.exe" is inside a directory, and the tool does not support it.

Is there any way to make setup.exe look for the .net framework prerequisite in the root folder so I can use the IExpress tool??And if not, is there any other way to merge these files into a single installer?

Thanks in advance!! Cheers!

回答1:

Make use of the NSIS installer - you may find it here, there's tutorials to be a plenty from here. Here's an example of the syntax adopted to your usage scenario:

(...)
SetOutPath "$INSTDIR\resources"
SetOverwrite off
File "setup.exe"
File "setup1.msi"
File "DotNetFX40Client/dotNetFx40_Client_x86_x64.exe"
(...)
Exec "$INSTDIR\resources\setup.exe"

The NSI file is then compiled into a single file installer that includes all your material in one exe - the functionality of that exe file can be anywhere in between simply unpackaging and executing your own setup.exe file and a full custom installer (can't see why you would want that in your case).



回答2:

I have had a good bit of success using dotNetInstaller 1.10 as a post-build step (the original installer, [optional] MSI, and any support bundles are wrapped into the dotNetInstaller output executable):

dotNetInstaller enables the developer to define the application prerequisites and install the correct version(s) of these components in a predictable order based on the processor architecture, user operating system type and language, allow the user to download these components from the web, install these components directly from a single packaged setup, local media or both. dotNetInstaller is very feature rich and runs on all known Windows operating systems with a very tiny footprint.

A boostrapper [dotNetInstaller] doesn't replace tools like InstallShield, Wise, Visual Studio Setup and Deployment Project or Wix. The goal is to create an application to help users with installing the correct prerequisites. Most real world applications need to install several components to work properly, including Windows Service Packs, Internet Explorer, MDAC or .NET Framework. This kind of applications are most commonly known as bootstrappers. dotNetInstaller is such a bootstrapper.

It takes some work to get the "rules correct", but it Works Well Enough for Me.

Happy coding.