Link to home
Start Free TrialLog in
Avatar of down0041
down0041

asked on

VB.net - what is the difference (or relation) between setup.exe and .msi file?

What is the difference (or relation) between setup.exe and .msi file?
I have always thought that I should run .msi file, when installing my VB.net projects to other PCS.  However, in the last week, I was getting Crystal reports error on Win7 64bit PC's.  

When I ran the setup.exe instead, the Crystal reports error was fixed.

Just curious about "setup.exe" versus ".msi" files.
Any insight greatly appreciated.
Avatar of Carl Tawn
Carl Tawn
Flag of United Kingdom of Great Britain and Northern Ireland image

The .msi is the actual installation database for your application. The .exe is a bootstrapper, which generally takes care of installing prerequisite packages and other tasks.

An msi can only install a single application, so if you need any prerequisites installing that also come as a .msi, then the bootstrapper takes care of installing them by launching the relevant .msi.
Avatar of down0041
down0041

ASKER

Carl, thank you very much for your reply.  Is it correct to say then, that I should always use the setup.exe, when installing VB.net apps?  

Thanks again very much for your quick reply!
ASKER CERTIFIED SOLUTION
Avatar of Carl Tawn
Carl Tawn
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Carl, thank you very much.  This is exactly what I was looking for.

Would you please recommend to me any books on VB.net?  I am a SQL guy, that through necessity occasionally creates vb apps.   I understand the basic syntax just fine.  I am more interested in working with data.  I was "almost competent" in VB2003 (using dataAdapters).  Now in VB0212, it looks like everything has moved to tableAdapters, and I am struggling.
Yeah, there are various data access methods around nowadays (TableAdapters, Linq-to-SQL, Entity Framework, etc).

I'm generally a fan of Wrox and Apress books so you might want to look at a few of those. Although, you tend to find that most books try to cover a broad range of topics, rather than data access specifically, so sometimes don't go very deep into the subject.

It might be worth hunting around on MSDN for articles and tutorials, perhaps starting with this:

http://msdn.microsoft.com/en-gb/data/ee712907
>  Is it correct to say then, that I should always use the setup.exe

It's correct to say that with most products that come with setup.exe, you should always try to do the opposite, i.e. extract .msi file and try to use that and avoid using setup.exe. Of course there can be exceptions.

The main reason is that setup.exe is not always "innocent". As Carl noted, its main functions are (1) checking prerequisites and installing them if needed, and (2) unpacking the msi and launching it. However, some setup.exe's can also (3) install additional software, for example to periodically check for the updates (4) install software you don't need at all, from the vendor who "sponsors" software maker - such as McAfee, Norton, and similar. I.e. in way too many cases the reason software vendor has wrapped the installation into setup.exe is not technical but marketing.

I personally usually do the following. I launch setup.exe, wait until it shows welcome screen, then go to the %temp% folder, "steal" the actual installation, cancel setup.exe, then launch the installation. In most cases it works,; if not, that's when you run setup.exe.

Another scenario is installation of drivers. Again, driver vendor usually tries to do it by setup.exe that will install the driver, but also ton of "value-added" applications, supposedly for better using of the device. For example, you download 120MB driver for HP scanner, and there 1% is the actual driver, and 99% is a "suite" of stuff that will take over half of your system tray trying "to help". Or it's ugly Realtek audio panel, still in windows 3.1 style, that will replace the regular one. So, as soon as all this treasure is unpacked, you go to %temp%, find the actual driver (the directory with .sys and .inf files inside), then update the driver from device manager pointing it to that directory.
Carl - thank you very much for your book suggestions. Greatly appreciated.

Vadimrapp1 -  Thank you very much for your comments.  Your explanation is greatly appreciated as well.
In theory, because the setup.exe is a wrapper, there could even be more than one .msi file.  The desired one for your configuration is then called.  Installing directly from the msi could lead to problems because you choose the 'incorrect' version.
A setup.exe from a commercial vendor should be OK, those for free utilities/apps (from the web) may well, as vadimrapp1 states, install other software silently to your detriment.
AA - thank you.  That makes sense.  Thank you for this.