Mkbundle:将 Mono 与您的应用程序捆绑在一起
您是否想过为什么需要安装 .NET Framework 或 Mono 才能运行您的程序?好吧,如果您可以分发应用程序而不需要让客户安装额外的框架,那就方便多了,不是吗?所以我们到了。让我们将基于 .NET 的应用程序与 Mono 捆绑在一起,这样您就不需要安装 Mono 或 .NET 来运行它。
准备环境
首先您需要安装最新的 Mono 和 Cygwin。安装 Mono 非常简单,所以你不会搞砸任何事情。当您开始安装 Cygwin 时,进入完整视图,然后请包含 4 个附加软件包。它们是:gcc、mingw、mingw-zlib 和 zlib。
现在您需要一个命令提示符。 Mono 和 Cygwin 都会在桌面上创建命令提示符的快捷方式,但您需要将它们合并为一个。这是为我做的一批。例如,如果您有其他 Mono 版本,您可能需要更改它。
Code:
echo Mono version 2.4 Build 6
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH%
chdir C:\cygwin\bin
bash --login -i
将应用程序与 Mono 捆绑在一起
现在我们在命令提示符下运行 Cygwin 模式。请注意,这不再是 DOS 提示符,并且“dir”将不再起作用。要列出文件,请使用 Linux 命令“ls”。您现在正在浏览的文件夹如下所示。 Arek 是一个用户名。
代码:
C:\cygwin\home\Arek
使用资源管理器浏览到此文件夹。现在您将 2 个文件复制到此文件夹中。第一个是您的应用程序 exe,第二个是您可以在 Mono 文件夹中找到的文件 Mono.dll (2MB)。
代码:
C:\Program Files\Mono-2.4\bin
由于某种原因,整个过程不适用于长文件名,因此请重命名您的应用程序 exe。它应该符合旧的 DOS 8.3 命名。
让我们回到命令提示符。您只需要 1 个命令即可捆绑您的应用程序,这里有一些解释。
mkbundle 是 Mono 包中的一个程序 | -o Bundled1.exe 指定 Mono 捆绑 exe 的命名方式 | Winform1.exe 说明将包含什么,Mono 库无论如何都会包含 | --deps 是必要的,尽管我不确定它的作用 | -z 会大量压缩输出的exe
Code:
mkbundle -o Bundled1.exe Winform1.exe --deps -z
现在您已经获得了 Bundled1.exe,其中包含您自己的应用程序以及 Mono 本身。您不需要 Mono 或 .NET 来运行它。请注意,它的大小将为 4MB 或更大。那些捆绑在一起的前任可不轻。