1)点击Setup.exe文件来实现安装:
Setup.exe是一个安装引导程序。它是安装工程通过MSBuild创建的,其中包含了一个XML文件,定义了应用程序所需要的系统必备安装包信息。Setup.exe程序会检查这些系统必备安装包是否需要被下载和安装,如果需要,它就会先安装那些系统必备程序。当我们运行它的时候,它会读取setup.ini来确定安装所需要的配置并开始安装流程。
如果这个setup.exe是在Visual Studio 2005中生成的,那么用户就必须有管理员权限才能运行它。我们可以看见在setup.exe的图标上有一个防护盾,这就意味着这个程序只有管理员才能运行它。如果这个setup.exe是在Visual Studio 2008中生成的,那么用户不一定需要有管理员的权限就能执行它,当有一些特定操作需要管理员的权限时,系统会显示UAC对话框要求提升权限。这类Setup.exe的图标上不会显示防护盾。
2)点击setup.msi来进行安装。
Setup.msi是一个Windows Installer包。和setup.exe不一样,直接运行MSI安装包就不会自动安装自定义系统必备。它只会安装主应用程序。在安装项目的属性对话框中修改输出文件的名字,我们可以自定义MSI包的文件名。当我们“运行”它的时候,其实是Windows Installer在执行MSI包定义的各项操作。因此我们需要安装Windows Installer的正确版本才能运行setup.msi。我们也可以使用msiexec命令去安装setup.msi文件。
有些软件的正本里面同时含有 setup.msi 程序和 setup.exe 程序,例如Symantec AntiVirus客户端的软件里就含有 setup.MSI和 setup.exe 两个安装程序。一般情况下随便用其一进行程序的安装,结果是一样的。
但是如果我们的操作系统(安装环境)没有安装某些程序,则.MSI有可能不能运行,这时就要用Setup.exe来进行安装了。Setup.exe可以利用Setup.ini来先安装运行.MSI需要的软件,建造一个较全的安装环境,最后再调用.MSI程序。
所以当你确定你的安装环境不缺少什么应该安装的程序时,可以直接运行.MSI来安装软件的副本。
对于 Symantec AntiVirus 软件来说,Setup.exe的一个主要功能就是先安装WindowsInstaller.exe最新版,因为所有的.MSI程序都需要系统里装有WindowsInstaller.exe才能正常运行。
总结: .exe文件进行安装的时会检测安装软件需要的环境和一些必要的组件, 适不适合当前软件安装, 如果缺少一些例如.netframework一类的组件, 就会先进行下载然后再进行安装
.msi文件不检测当前系统环境是否符合就直接进行安装, 如果环境不符合运行到一半可能会停止安装,并报错或提示,其实是Windows Installer在执行MSI包定义的各项操作。因此我们需要安装Windows Installer的正确版本才能运行setup.msi
我们都知道通过VS工具自带的打包后会生成两个文件,一个是exe文件,一个是msi文件。
需要说明的是msi文件时windowinstaller开发出来的程序安装文件,它可以让你安装、修改、卸载你所安装的程序,也就是说VS工具打包生成的msi文件就是window installer的数据包,把所有和安装文件相关的内容封装在一个包里。
VS工具打包生成的exe文件是主要是用于检查安装的环境,当安装的环境检查成功后,会自动再安装msi文件。当然可能会有exe文件也能直接安装的,但是开发exe的时候要比msi困难多,因为需要编写和安装、修改、卸载相关的很多内容,而msi把这些功能都集成化了,易于开发windows程序安装包。