1

如果可能的话,我想避免在我的应用程序中重新分发 .NET 运行时,因为它会增加应用程序的大小、下载时间、开发时间并且可能会引入许多不同的部署错误。Microsoft 是否强制用户通过 Windows 更新来更新 .NET 运行时?如果没有,有哪些重新分发 .NET 运行时的选项?Microsoft 是否让使用 .NET 应用程序重新分发运行时变得更容易?此外,.NET 运行时是否保证向后兼容?

我只是在这里总结答案。看起来我们必须有一个引导程序来至少检查 .NET 运行时是否存在。另一种选择是打包运行时并在它不存在时部署它。打包有多种选择,Visual Studio 确实提供了使用运行时构建安装程序项目的选项。还有其他打包选项,如 InnoSetup、WIX 等(不确定哪个选项更好且免费)。运行时安装需要重新启动,并且选择的安装选项应在重新启动后恢复应用程序安装。

4

5 回答 5

3

只需创建一个 Windows Installer 项目。您应该在 VS2005 和 VS2008 中将其作为一个选项。它将确保在安装您的应用程序时系统具有 .NET 运行时和任何其他所需的软件。这会将其添加到您的安装程序包中,而不是您的应用程序中。这通常是您安装应用程序或使用 Install Shield 的方式。

这是一个指南

替代文字 http://img154.imageshack.us/img154/2066/newprojectr.png

于 2009-06-25T23:00:08.977 回答
2

此外,您应该担心这一点。如果没有运行时,您的应用程序将神秘地无法工作。您永远不应该假设某些特定版本的运行时已预先安装。

如上所述,VS 中的安装程序项目向导将创建一个安装文件,仅在需要时下载它。NSIS 和 Inno Setup 的脚本可以做同样的事情。请注意,您需要在安装运行时处理重新启动并继续设置。我相信安装程序向导会为您处理这个问题。

于 2009-06-25T23:01:31.953 回答
1

使用某种引导程序,您可以检查是否安装了 .NET,然后在必要时下载它。

例如,使用MSI Factory引导程序(我不是在提倡 MSI Factory,它是一个丑陋的程序。但如果您像我们一样开发商业软件,那么它附带的引导程序就非常值得支付许可费用)有脚本您可以只需包含即可执行此功能。我们正在使用 WiX + MSI Factory 引导程序来分发单个压缩的 EXE (30Mb) 和一个下载 MSI 的小型 1Mb“下载器”EXE。两个 EXE 都会检查 .NET 2.0 的存在,然后在必要时下载它。我们还分发了一个独立的 MSI,它还会检查 .NET 并在不存在时阻止安装。

基本上你有以下内容:

  • Windows XP - 不附带 .NET。客户需要手动安装(它显示为可选的 Windows 更新组件)
  • Vista - 附带 .NET 2.0(但不是1.1)
  • Server 2003 - 附带 .NET 1.1

忽略 .NET 1.1,忽略它。Vista 用户及其他用户只会安装它以支持旧版应用程序,或者如果他们是开发人员。

.NET 2.0 是最常安装的版本,根据我们的用户群,我们发现只有不到 10% 的用户安装了 .NET 3.5。如果您的应用程序针对的是技术极客,那么我会说大约 50% 的人将拥有 .NET 3.0。如果您的目标是消费者/零售/非技术市场,您可以估计大约 30% 使用 .NET 2.0 和 10% 使用 .NET 3.0 或更高版本。

上述数据基于访问我们网站的浏览器流量,主要是非技术受众。这可能是了解您的市场的最佳方式。IE 总是在 User-agent 字符串中报告 .NET 版本,所以打开博客并开始分析 :)

于 2009-06-26T09:20:00.410 回答
1

创建安装程序包时,它只会在需要时安装运行时。即尚未在系统上(或错误的版本)

编辑:是的,你应该创建这个包,它让你的生活更轻松。在 VS 中执行此操作的方式是 File->Project 并选择 intstaller project。该向导将引导您完成这些选项。

于 2009-06-25T22:57:11.417 回答
0

这取决于。在我工作的地方,我们将它作为先决条件包含在安装程序中,因为我们有一些客户可能没有互联网连接来下载运行时。

你可以做几件事:

  1. 在目标机器上包含对 .NET 版本的测试,如果不存在则退出安装。
  2. 制作一个包含 .NET 运行时的安装版本,并在需要时安装它。
  3. 制作将下载 .NET 运行时并在需要时安装它的安装版本。

如果我知道我的客户都在线,我会为 .NET 以及任何其他先决条件(如 Crystal Reports 或 SQL Express)执行选项 3。我已经安装了其中包含的安装,并且安装超过 100MB。70MB+ 是先决条件。

于 2009-06-25T23:08:29.600 回答