8

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

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

使用 .net 应用程序部署打包 .net 框架

在不安装 .net 客户端配置文件的情况下运行 .net 应用程序?

在 windows XP 中运行 C# windows 应用程序而不安装 .NET Framework

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

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

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

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

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

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

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

4

3 回答 3

12

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

dotnetfx35.exe /q /norestart

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

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

于 2012-04-06T23:05:08.023 回答
8

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

于 2012-04-06T23:09:26.890 回答
2

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

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

此 CodeProject 文章中提供了演练。

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

本页介绍了 VS 安装项目、WiX 和 InstallShield 之间的区别。

于 2012-04-06T23:23:43.313 回答