【问题标题】:Which programming languages that can generate self contained windows .exes?哪些编程语言可以生成自包含的 Windows .exe?
【发布时间】:2011-02-04 20:56:38
【问题描述】:

我想制作一个易于部署的 Windows 应用程序,并且想知道哪些编程系统可以创建完全独立的 Windows .exe 文件?

另外,如果同一来源的 MacOSX 和 Linux 也能做到这一点,那将是一个额外的好处。我看了一下 Realbasic,但他们已经放弃了单一的 .exe 概念。

更新:我正在寻找可以从 Windows XP 到 Windows 7 运行的东西,无论安装的是什么版本的 .NET。这甚至可能吗?

【问题讨论】:

  • 你关心运行时库等依赖吗?
  • 如果我想将 exe 作为 Web 应用程序运行并且还可以访问数据库库/文件系统,我需要哪些运行时库?
  • 如果你是基于 .NET 的,就不能移植到 OSX 和 Linux;虽然是的,有 Mono,但可用的库有很大的不同,您仍然面临着一项艰巨的移植任务。
  • .NET 的最低公分母是 1.x,因此您必须为此编写代码,但这假设每个人都至少安装了 .NET 1.x——我敢冒险猜想有一些用户在他们的 WinXP boxen 上根本没有 .NET 框架。
  • 也就是说,我最近阅读了一项统计数据,该统计数据表明 80% 以上的 Windows 机器至少安装了 .NET 2.0 —— 这是我最近在 .NET 中编码时的个人最低要求。没有泛型我真的活不下去... :-)

标签: windows exe


【解决方案1】:

Delphi 编译为一个可执行文件,并生成本机 Windows 可执行文件。所以不依赖于任何类型的框架。如果您使用Free Pascal (fpc)Lazarus IDE,您甚至可以从同一来源为Linux 和Apple 开发。

如果您使用外部 dll,这会变得有点棘手,但您可以将它们打包到您的资源文件中并仍然保留一个 exe 属性。

2020 年更新:由于 @Vassilis 和 @Marco van der Voort 对此发表了评论,我想更新我的旧 andswer 并补充说 go 是一个非常好的方式来使自包含可执行文件。甚至crossplatform compilation is realy simple

【讨论】:

  • 我找不到任何下载delphi的链接。现在还能用吗?
  • 是的,Delphi 还在,Borland 把它卖给了 Embarcadero embarcadero.com/products/delphi
  • 是的,Delphi 存在。在可耻的情况下,使用非常烦人的 IDE 并且价格过高,但是是的,您可以在 Delphi 中开发出色的应用程序。我曾经很喜欢它。现在除了挣扎什么都没有。视觉设计师很棒,你可以快速勾勒出可见的元素;然后,祝你好运,对象丛林和令人失望的文档。我在九十年代开始使用 Pascal,所以我不怕弄脏我的手;但我尽可能使用 ZZEE php-to-exe 而不是 Delphi。说明很多。
  • 除了C和C++之外,真正的候选者只有still Delphifpc?
  • (V)C++ 通常使用 msvcrt,可能需要运行时安装。
【解决方案2】:

您当然可以使用 C/C++ 做到这一点。从技术上讲,运行时库是必需的,但它们应该已经安装在任何 windows、mac 或 linux 系统上。

使用 .NET,您可以编译为 EXE,但当然需要 .NET 框架。对于较新版本的 Windows,它应该默认安装,但在旧版本(XP 或更旧?)上,它可能存在也可能不存在。当然,你也不能指望在 linux 或 mac 上默认会有 mono。

【讨论】:

  • 您可以设置编译器静态链接运行时。
  • 当我亲眼看到 .Net 程序在 4.0 之前在 .Net 上运行但在 4.0 之后无法运行的问题时,我将其删除为已接受的答案
【解决方案3】:

对于 Windows,以下语言是可行的:

  • C (MS, gcc)
  • C++(MS、g++、数字火星)
  • D(数字火星)
  • Delphi(Embarcadero ???你怎么拼写?只是从舌头上跳下来不是吗?)
  • Fortran(英特尔、索尔福德软件)
  • Visual Basic 6(MS)
  • Lua(您需要 special tool 来执行此操作,但它是可行的)
  • C#、VB.Net、F#、J# 等(假设您不介意使用 .Net 技术)

【讨论】:

  • 注:您可以使用 C#、VB 等...而无需安装 .net;您只是不能使用 .net 库,这意味着您需要自己编写所有内容或使用其他库,例如单声道:mono-project.com/Main_Page
【解决方案4】:

您可以使用 Tcl/tk。您应该研究的技术是“starpack”,它结合了运行时可执行文件(starkit)和特定于平台的运行时(“tclkit”)来创建单文件可执行文件。值得注意的是,它不仅仅是编译后的代码,而是一个完整的独立虚拟文件系统,可以包含图像、声音、数据等。

相同的技术适用于来自相同代码库的许多平台。唯一不同的是特定于平台的运行时。您甚至可以“交叉编译”,因为您可以将多个平台的运行时复制到您的开发盒上,然后为每个平台构建 Starpack,而不必实际在每个平台上。

【讨论】:

    【解决方案5】:

    Tcl 可以做到这一点,尤其是通过产生starpacks。可以使用相同的代码为所有平台生成它们。请注意,这还包括所有必需的运行时库(C 库之类的库除外,但您不希望在正常情况下将 设为静态)。

    【讨论】:

      【解决方案6】:

      JavaFX 2.2 支持这一点。它允许创建面向 Windows、Mac OS 和 Linux 的自包含应用程序。

      请点击此链接了解更多信息:http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm

      【讨论】:

        【解决方案7】:

        我建议您看看 AutoIt。它是一种易于使用的脚本语言,可以编译成 exe,因此不需要运行时。不过,这仅适用于 Windows。

        http://www.autoitscript.com/autoit3/index.shtml

        来自网站:

        AutoIt v3 是一款类似 BASIC 的免费软件 脚本语言专为 自动化 Windows GUI 和一般 脚本。 ... Auto它也很小, 独立的,将运行在所有 开箱即用的 Windows 版本 不需要烦人的“运行时”!

        【讨论】:

        • Errr.. 不,AutoIt 不能编译为 C++。
        • AutoIt 的缺点:它有一些反病毒启发式方法偶尔标记它的问题......愚蠢的病毒编写者有时会使用 AutoIt,将其与简单的病毒扫描程序定义结合起来 == 误报:|
        • @Davy Landman - 如果我右键单击 .au3 文件并选择“使用选项编译”并取消选中“使用 UPX”选项,则在编译 AutoIT 脚本时,我永远不会遇到任何误报问题。这确实使编译后的文件大小增加了约 260KB,但根据我的需要,这微不足道。
        【解决方案8】:

        c/c++ 纯基础 德尔福 VB6

        希望对你有帮助:)

        【讨论】:

          【解决方案9】:

          这里是一些构建小型独立 EXE 的类似基本的编程语言的好来源。有些是跨平台的 Windows 和 Linux:

          www.basic.mindteq.com

          【讨论】:

            【解决方案10】:

            您可以使用简单且便宜的 Liberty Basic,您可以轻松地制作适用于 Windows 的独立程序,但无法迁移到 MacOS 或 Linux。

            【讨论】:

              【解决方案11】:

              您可以使用 ILMerge 为具有 .NET 语言的 Windows 执行此操作

              ILMerge 是一个用于将多个 .NET 程序集合并到一个 .NET 程序集的实用程序。它适用于可执行文件和 DLL,并带有几个用于控制输出处理和格式的选项。有关详细信息,请参阅随附的文档。

              但是:

              目前,ILMerge 仅适用于基于 Windows 的平台。它还不支持Rotor或Mono。

              【讨论】:

              • ILMerge 甚至可以包含框架中的核心程序集,甚至不需要安装 .NET Framerwork?
              • @snicker - 我不知道。帮助并没有说你不能。
              • @snicker: @ChrisF: 你仍然需要 CLR 来运行任何 IL 程序集,即使你可以链接到 mscorlib.dll。
              【解决方案12】:

              QBasic 可以:-)

              我用它写了几个命令行工具!

              【讨论】:

              • QBasic 不能。 QuickBASIC 可以。
              • QuckBASIC 生成 DOS .exe 文件。现代 Windows 通过 NTVDM 运行这些在 64 位版本上不可用。在 Linux 和 OS X 上,您还需要某种模拟或虚拟化层来运行 DOS 程序。
              猜你喜欢
              • 2014-05-09
              • 1970-01-01
              • 2011-03-14
              • 1970-01-01
              • 1970-01-01
              • 2017-09-18
              • 1970-01-01
              • 1970-01-01
              • 2011-02-28
              相关资源
              最近更新 更多