.msi和.exe 文件的区别

有些软件的正本里面同时含有 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程序安装包。

时间: 2024-10-07 09:22:34

.msi和.exe 文件的区别的相关文章

.Net下 自动执行MSI和EXE文件

MSI是安装文件,需要系统自带的msiexec.exe来执行 var tempDir = @"D:\UploadFiles\SCADASetupWix.msi"; var start = new ProcessStartInfo("msiexec.exe", "/i \"" + tempDir ); start.WindowStyle = ProcessWindowStyle.Normal; start.CreateNoWindow =

Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe

VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microsoft Visual Studio 2017 Installer Projects 打开vs2017 ,选择 工具 --> 扩展和更新 --> 联机,搜索Microsoft Visual Studio 2017 Installer Projects,进行安装.安装好以后,重启vs2017 2.新建程

.c和.h文件的区别(转载)

一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼:子程序不要定义在.h中.函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼:.h只做声明,编译后不产生代码 4楼: 这样做目的是为了实现软件的模块化使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include

lib和dll文件的区别和联系

什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37)    (1)lib是编译时需要的,dll是运行时需要的. 如果要完成源代码的编译,有lib就够了. 如果也使动态连接的程序运行起来,有dll就够了. 在开发和调试阶段,当然最好都有. (2)一般的动态库程序有lib文件和dll文件.lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的.如果有 dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中.如果只有lib

如何打包/运行jar包,及生成exe文件

关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了).决定写下来,以便之后随时调用. 一.jar包 什么是jar包?jar包即(Java Archive File),也就是java归档文件.JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的

如何在Ubuntu安装*.exe文件

下载及安装 若你使用 Debian 或者 Ubuntu 之类的发行版,只需要一个命令即可完成安装: apt-get install wine 若你使用的为其他发行版,请访问 http://winehq.org/site/download 查询安装方法[]Wine 的配置 运行 winecfg 即可,里面有详尽的配置. 注意:Wine 1.1.4 以上版本的 winecfg 已经是中文界面了.[]Wine 中文乱码的解决 Wine 1.1.4 以上版本的中文支持得到了极大改善.如果您在使用较低版本

.c和.h文件的区别(头文件与之实现文件的的关系~ )

 .c和.h文件的区别 一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定义在.h中. 函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误. 3楼: .h只做声明,编译后不产生代码   4楼: 这样做目的是为了实现软件的模块化 使软件结构清晰,而且也便于别人使用你写的程序 纯粹用 C 语言语法的角度,你当然可以在 .h

更换用installshield打包生成exe文件的图标【转】

最近在研究用installshield2010为自己做的产品打包,自己在网上找写资料,胡乱折腾,最后弄成了一个exe安装包,想要修改exe文件的图标,发现Basic MSI project 无法用installshield2010修改(反正自己没找到),最后找到一个还算不错的方法:用微软的Visual Studio可以修改.修改方法如下: 1.打开VS2010(其他版本也可以),选择方式如下,将你的exe文件导进来. 2.删掉红色选中的icon. 3.右击添加你想替换的图标,记得把新添加进来的图

Ubuntu下使用wine安装Windows下的exe文件

工作环境为Ubuntu,类Linux系统.无法直接安装exe文件.借助Wine可以安装,但并不是所有Windows下的exe软件 都可以使用Wine进行安装. 有两种方式可以安装Wine到Ubuntu上.可以自己本地编译源码,也可以在终端中执行命令“sudo apt-get install wine”, 便自动从配置好的软件源下载并安装wine了. 安装完成后可以在配置选项中将Windows版本设置为Windows xp. 下边我们就使用Wine试着安装一款Windows下用于代码对比的软件Be