【问题标题】:Packaging a .NET Application So It Will Run On A Computer Without .NET打包 .NET 应用程序,使其在没有 .NET 的计算机上运行
【发布时间】:2012-04-06 22:56:59
【问题描述】:

我最近尝试在未安装 .NET 的计算机上部署 C# 应用程序。

我知道 StackOverflow 上有很多个关于同一主题的问题。以下是其中一些,我阅读了所有人的回复:

Packaging up the .net framework with a .net application deployment

Run a .net application without installing .net client profile?

Run C# windows application in windows XP without installing .NET Framework

因此,对上述问题的所有答复都表明,没有特定软件等是不可能的。提到的一个软件是Salamander .NET Linker。唯一的问题是,在 Salamender 处理该应用程序后,我似乎无法运行该应用程序。我知道这本身是不可能的,因为它需要 .NET 虚拟机才能运行。然而,在过去,我制作了 Java 应用程序,并与它们一起发布了整个 JVM。令人惊讶的是,它们仍然有效。所以这不是上述问题的重复的原因是因为我真正的问题是:

我需要打包 .NET 框架的哪些项目?如果我设法全部打包,将它们放在与我正在运行的应用程序相同的目录中是否允许应用程序运行?

我找到了一个解决方案,Microsoft .NET Redist Package。唯一的问题是它有自己的 GUI。除此之外,这将是一个完美的契合。那么,谁能告诉我两件事之一:

是否有命令行 .NET 包,如果有,我在哪里下载?

如果没有,或者这样做不切实际,我需要从 .NET 安装中复制大约哪些目录?

我了解这些文件和目录是系统特定的,我的 .NET 安装可能无法在您的计算机上运行,​​但如果 C# 类似于 Java,那么这应该是可以实现的。是吗?大小不是限制,应用程序及其所有文件是否为 1GB 或仅为 1MB 对我来说并不重要。

如果没有其他解决方案,我使用Dependency Walker 来检查我程序的所有依赖项。如果我要打包其中的大部分,理论上我的应用程序会工作吗?

【问题讨论】:

  • 这些静态链接器是个糟糕的主意。您的应用程序不会受益于安全修复和其他增强功能(ala Windows Update)。

标签: c# .net redistributable


【解决方案1】:

对于 .NET,您确实必须安装适当的 .NET 框架。 .NET 框架安装确实包含命令行选项以允许静默安装,例如:

dotnetfx35.exe /q /norestart

有关命令行选项的详细信息,请参阅options for 3.5.NET 4.0

话虽如此,大多数安装包都会在安装过程中为您处理这些详细信息。使用合适的安装程序会自动处理这种依赖关系。

【讨论】:

  • 完美运行!感谢您的帮助!
  • 是否有任何命令可以显示它已安装了多少,以百分比或当前文件提取等格式显示?我检查了您发布的 3.5 链接的选项,但在其中的这些行中没有找到任何内容。
  • 一开始你不想要 GUI,现在你想要?
  • 我不想要 GUI。而且文件提取不是必须的,但我想知道是否有命令行样式的百分比或提取器,比如 wget。我不确定这是否算作 GUI。如果是这样,对不起,我引起了混乱。
【解决方案2】:

根据您需要的 .NET Framework 部分,您可以使用Mono。它支持无需像 JVM 那样安装即可交付运行时,或者您可以静态链接二进制文件以创建本机可执行文件。

【讨论】:

    【解决方案3】:

    如果您计划部署您的应用程序(并且假设设置过程不需要太复杂),您可以简单地创建一个Setup project in Visual Studio,然后引导先决条件(.NET 框架和其他您认为的东西你可能需要)。

    您可以按照这些 MSDN 文章中描述的步骤进行操作:

    this CodeProject article 中给出了演练。

    对于更复杂的部署方案(例如在您的应用程序中安装设备驱动程序,或更好的本地化支持),我建议您查看WiX (Windows Installer XML) toolset。它是一个构建 Windows 安装包的工具集,您可以使用 Visual Studio 中的 XML 文件对其进行配置。 WiX还支持各种bootstrapping scenarios

    This page 涵盖了 VS Setup 项目、WiX 和 InstallShield 之间的差异。

    【讨论】:

      猜你喜欢
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多