【问题标题】:Should I worry about redistributing .NET runtime with my application?我是否应该担心使用我的应用程序重新分发 .NET 运行时?
【发布时间】:2015-06-07 08:55:02
【问题描述】:

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

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

【问题讨论】:

标签: .net installation redistributable


【解决方案1】:

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

Here is a guide.

alt text http://img154.imageshack.us/img154/2066/newprojectr.png

【讨论】:

  • 文章不再可用。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这是我的问题。我是否应该担心创建此安装程序包以及如何创建此安装程序包?如果可能的话,我想避免一起开发这个安装程序包。
    【解决方案4】:

    使用某种引导程序,您可以检查是否安装了 .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 版本,所以打开博客并开始分析:)

    【讨论】:

    • +1 提供一些关于运行时可用性统计的想法
    【解决方案5】:

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

    你可以做一些事情:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多