【问题标题】:Languages that Windows supports out of the boxWindows 开箱即用支持的语言
【发布时间】:2011-10-05 07:10:54
【问题描述】:

我被要求为一组 Windows 机器(我认为是 XP)编写一个(非常)简单的程序 - 如此简单以至于语言的选择并不是真正的问题。但是,我希望能够分发一个可以立即在 Windows 机器上运行的二进制文件/脚本,而无需预先安装任何解释器或虚拟机。我正在 Linux 机器上开发,但我不知道 Windows 支持哪些语言“开箱即用”。谁能给点建议?

例如

  • Perl 会很棒,但我不相信 Windows 机器预装了 Perl?要求用户安装 Perl 以使用我的脚本是不可接受的。
  • 我相信 Python 也有同样的问题? (虽然也许我可以使用 PyInstaller?--as in this question)
  • Java 也一样?大多数 Windows 发行版上是否预装了虚拟机? (我知道它在与 Sun Microsystems 发生争执后被删除了?)

目前我能想到的唯一选择是

  • c/c++ 与 MinGW 交叉编译器。

虽然我很高兴用 C++ 编写代码,但我想先检查我的语言选项。

【问题讨论】:

  • 也许不是您想要的答案,但大多数(如果不是现在全部)Windows 计算机都安装了 .net 框架。 :) 另外,如果程序非常简单,您可以考虑使用批处理文件或 vb 脚本?

标签: windows programming-languages installation cross-compiling


【解决方案1】:

开箱即用支持的唯一脚本语言是批处理解释器、vbscript 和 jscript。除此之外,您还喜欢编译语言。一个不错的选择可能是 C#,但请确保您以 XP 附带的 .net 版本为目标。

【讨论】:

  • 好的,谢谢。我担心它可能是这样的......他们甚至没有c库吗? - MinGW 甚至不能工作吗? :(
  • 任何编译语言都可以
  • @DavidHeffernan 你确定所有编译语言?例如,我见过的几个 C++ 变体需要特殊的运行时,例如 J++。
  • @ramon 我想我的意思是任何带有 Windows 端口的编译语言。实际上,这一切都是主流。
  • 请注意,在更多锁定的环境中,通常通过组策略禁用 WSH。在这些情况下,批处理文件通常是唯一剩下的选项。
【解决方案2】:

Delphi 和 Lazarus/FreePascal 生成在 MSVCRT 上甚至不需要的本机应用程序

其他一些系统对相对较新的 MSVCRT 版本有要求,这可能是旧 Windows 版本的负担。

但是最近的 Lazarus 和 Delphi 版本停止支持 windows NT4 和 Win9x,win2000 处于灰色区域(不支持,但可以正常工作)

拥有一个内部 win32/64 链接器使其也是从 *nix 交叉编译到 Windows 的绝佳选择。

【讨论】:

  • 我收到报告说 Free Pascal/Lazarus (0.9.30.4/2.6.0) 的发布版本仍在使用 win98。
【解决方案3】:

任何编译成纯本机程序集的语言(没有特殊的运行时依赖项)都应该没问题。例如:许多 C 变体(但不是全部)、Microsoft Visual C++、Microsoft Visual Basic 6、OCaml、Haskell 等等。

需要 .NET 框架(它还提供 C#、VB.NET 和 F#)是合理的,而且 JVM 也是相当标准的(因此你可以获得 Java、Closure 和 Scala)。

【讨论】:

  • 好的,我正在 linux 上编译,所以大多数 Microsoft 语言都已退出。 - 如果大多数 Windows 机器都有 Java,那么我可能会使用它。我认为它已作为与欧盟的反垄断纠纷的一部分被删除?
  • 所有 .NET 语言都有 Mono 端口(C# 和 VB.NET 自带 Mono,F# 有一个可以从他们的站点安装的 CTP),所以它们并没有完全淘汰。注意:Mono 是 .NET 的一个适当子集,任何在 Mono 上工作的东西都可以在 .NET 上工作,但并非总是相反。关于 Java:大多数计算机都内置了 Java(非欧盟或较旧的计算机)或通过安装(它是常用的,人们只需下载它)。
  • MSVC++ 是否允许静态链接?否则,您需要分发一个 MSVCRT 运行时 DLL 集。
  • 不是 C++ 程序员,但其他 Microsoft 语言有静态链接,甚至还有 --standalone 命令行参数(静态链接所有内容)。
【解决方案4】:

我认为 Java 没有预装在 Windows 上。

我已经有几年没有使用 Windows,但如果我没记错的话,您可以使用 VBScript 或 JScript 开发脚本并部署它们,而无需客户端安装任何东西。

【讨论】:

  • Afaik J# 曾经与 Internet Explorer 一起提供,最初是作为促进 .NET 安装的载体。但是当它足够流行时,MS 就将它罐装了。
猜你喜欢
  • 2011-10-12
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2015-07-22
  • 2012-11-30
  • 1970-01-01
相关资源
最近更新 更多