使用Visual Studio 2008创建.NET安装程序项目

10

创建Windows/Console应用程序的安装程序时,会发现有两个输出文件:

  1. Setup.exe
  2. .msi文件

Setup.exe和.MSI文件分别是什么?哪一个应该用于安装?我发现我可以使用两者都来安装应用程序。但是相比于.MSI文件,Setup.exe文件要小得多。

问题

  1. 如果我要交付给客户,就不能发送两个文件。如何将这两个文件合并成一个安装文件?

  2. 我读过Setup.exe是一个引导程序,它会检查 .NET Framework,然后调用 .MSI 文件。这是否正确?

  3. 我无法测试 .NET Framework 不可用的情况,因为我是一名 .NET 开发人员,我的团队也使用 .NET 并已安装 .NET。我不想通过卸载 .NET Framework 并测试安装应用程序来冒险影响 Visual Studio。

它如何安装 .NET Framework?它的大小约为 200 MB,但我的安装程序小于3 MB。

它会提供下载选项或其他方式吗?

任何帮助将不胜感激。

谢谢,


1
稍微与您的问题相关。请查看Virtual PC。它非常适用于测试软件部署。而且是免费的。但您需要为使用的Windows副本拥有许可证,如果您只是用虚拟机进行测试,我认为MSDN可以覆盖这方面的需求。 - pipTheGeek
3个回答

6
MSI是您应用程序的安装程序。设置文件是一个引导程序,将检查预先要求,例如正确版本的Windows安装程序。我认为它也是setup.exe,可以允许下载正确版本的.NET框架。您可以单独使用.MSI,但不能仅使用setup.exe。
您正确地指出了设置允许下载正确版本的.NET框架。
有一些方法可以合并MSI和Setup.exe以创建单个exe,例如自解压缩zip或iexpress。
但是,为什么不能发送这两个文件呢?我认为如果您在服务器上发布设置和msi供下载,当需要时设置将找到并下载您的MSI。

好的回答,但据我所知它并不完全正确。由于安装的事务性特质(至少在当前的MSI版本中),一个MSI不允许启动另一个MSI。因此,您自己的MSI无法启动.NET Framework安装程序,必须由单独的引导程序启动。 - Dirk Vollmar
如果您有任何关于如何将引导程序和MSI合并为新的MSI的进一步信息,我会非常感兴趣。我认为这是不可能的。但是,您可以使用诸如WinZip或IExpress之类的工具创建自解压安装程序。 - Dirk Vollmar
@divo - 1)你是对的,我已经更正了我的答案。2)我是指合并成一个exe文件,而不是MSI文件。我已经澄清了我的答案。 - pipTheGeek

2
我认为分离setup.exe的原因是因为您不能同时运行两个MSI安装。因此,如果您的应用程序需要由MSI安装程序安装的先决条件,则安装过程会遇到问题。
关于设置框架,您可以在项目设置中将.NET框架作为应用程序的先决条件,并且如果目标计算机上没有安装它,则会自动安装。您还可以选择打包安装或从Internet下载安装文件。

1

Setup.exe 是一个引导程序,它会检查客户端机器上是否有先决条件。这包括 .Net Framework,以及例如在项目属性中选择 SQL Compact Edition 时所需的内容。它不会卸载任何东西。当需要先决条件时,它将提供从互联网下载选项或停止安装。

MSI 文件是包含您的软件的 Windows 安装程序文件。此 MSI 负责在客户端机器上安装产品。如果只发送 MSI,则产品只能安装在在启动 MSI 之前已安装所有先决条件的计算机上。

如果要进行单个文件分发,则可以使用 iexpress 将 2 个文件组合为单个 EXE。(Iexpress 是随 Windows 分发的一款软件,允许您创建安装程序包。)

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接