VS 中安装程序项目,生成后会出现.msi和.exe两个文件,两者有什么关联呢?

 

(摘自: http://blog.sina.com.cn/s/blog_6322836e0100h2hh.html)

 

VS 2008 自带打包工具,打完后在debug下有一个msi文件和exe文件,但如果把msi文件删了,exe是无法安装的,也就是exe是依托于msi文件的,
能否打包成一个能独立安装的exe文件,高手请指教谢谢....
你搞反了。 其实真正含有安装文件、程序的是msi 文件。 至于那个exe……

多说两句,微软在XP、2003 上推广了一个叫做Windows Installer 的服务,这个服务在安装完操作系统后,就存在了。 msi 文件其实是个数据库,里面含有被打包的文件,以及安装执行顺序等等内容。当用户双击msi文件时,windows Installer 服务就会启动,并且读取msi 数据库的信息,按照msi 文件的描述执行安装动作。

在Win 2000 等系统或者Windows Installer 版本较低的系统上,exe 文件用来收集执行安装必要的用户信息,以及唤起Windows Installer 服务。

也就是说,真正的安装程序是那个msi,在高版本操作系统上直接运行msi 就可以了, visual studio 为了安装程序在低版本操作系统上也能执行安装,就特意添加了一个exe。 你把msi 拷贝给用户就可以进行安装了,而不是那个exe。

其实我个人觉得Visual Studio 打包工具不是很好用,对于比较复杂的打包操作,很多都没法做。一般都用NSIS 工具做安装包。 NSIS 是开源的打包工具,并且被很多商用软件用作打包工具。

 

 

 

Microsoft 的很多自解压安装包,如 DXSetup.exe 和 Framework 2.0 的安装程序都是用 IEXPRESS 制作的。您可以用它把 msi 和 exe 添加进去,然后指定启动入口为 exe 就好了。

另外关于 msi,其实高版本的 Windows Installer (>= 3.0) 也不一定拿到了 msi 就可以安装。比如 SQL Server 2008 和 Visual Studio,必须要运行 setup.exe 才能安装 msi。msiexec.exe 提供了针对 msi 安装包的命令行操作支持,有兴趣大家可以研究研究。

 

The IExpress Wizard is a tool that is provided in the Internet Explorer 6 Administration Kit, so the IExpress.exe doesn't exist in all versions of Windows Operating System.

You need to include the Internet Explorer Administration Kit in your tool.

 

posted on 2013-09-13 17:25  青松之林  阅读(249)  评论(0)    收藏  举报