11

请注意: portableapps.com 中的可移植性,而不是传统意义上的可用于多种架构或操作系统的语言。谁创造了便携式一词的这种用法,应该受到打击。:)

我是一名 DBA 和系统管理员,主要负责运行 SQL Server 的 Windows 机器。我正在寻找一种不需要管理员访问权限或安装程序的 Windows 编程/脚本语言,除了将其扩展到文件夹之外不需要安装过程。我的目的是拥有一种可以标准化的自动化语言。

到目前为止,我一直在使用批处理文件和 Unix shell 的组合,使用来自UnxUtils的 sh.exe,但这远非完美的解决方案。

我评估了一些选项,它们都至少有一个或另一个严重的缺点。我对开源或双重许可有强烈的偏好,但我更感兴趣的是找到合适的工具而不是其他任何东西。对任何依赖 Cygwin 或 Java 的东西都不感兴趣,但在这一点上,我对需要 .NET 的东西没问题。

要求:

  • 可管理的占用空间(1-100 个文件,安装在 30 MB 以下)
  • 在 Windows XP 和 Server (2003+) 上运行
  • 无安装程序(exe、msi)
  • 不依赖 JVM 或 Cygwin 安装
  • 适用于外部管道、进程和文件
  • 支持 MS SQL Server 或 ODBC 连接

奖励积分:

  • 开源
  • FFI 用于调用本机 DLL 中的函数
  • GUI 支持(本机或 gtk、wx、fltk 等)
  • Linux、AIX 和/或 OS X 支持
  • 动态的、面向对象的和/或功能的、解释的或编译的字节码;互动发展
  • 能够将脚本打包或编译成可执行文件

到目前为止,我已经尝试过:

  • Ruby:磁盘上 148 MB,23000 个文件
  • 便携式 Python:54 MB 磁盘,2800 个文件
  • Strawberry Perl:123 MB 磁盘,3600 个文件
  • REBOL:很好,除了封闭源代码并且免费版本中没有 MSSQL 或 ODBC
  • Squeak Smalltalk:很好,除了对脚本的支持很差
4

7 回答 7

9

我敦促您尝试Lua。关于您的要求:

  • 占用空间小(56 个源文件,编译后不到 150K)
  • 到处运行(仅使用 ANSI C)
  • 无需安装程序;你从源代码编译(还有一个我没有探索过的“包含电池”的包
  • 不需要 JVM 并且可以与任何 ANSI C 编译器一起使用,因此您可以使用 Visual Studio 编译,而不是 Cygwin
  • 适用于外部进程和文件,但仅限于 ANSI C 支持的范围内。如果popen提供了 POSIX,则也支持。

还有你的奖励积分:

  • 开源(麻省理工学院许可)
  • FFI to C 的构思和执行都非常出色——不像 Tcl 那样简单,但加载更强大。 与 C 的集成比 Python 或 Ruby 更好
  • GUI 支持是混合的,但 wx 小部件有很好的绑定。曾经有 QT 支持,但我不知道它是否得到维护。
  • 支持 Linux
  • 语言/编译器功能:
    • 动态的
    • 功能性
    • 基于原型的对象和通过元方法的继承你会想在下面的书中看到例子
    • 西方最快的字节码编译器
    • 交互式读取-评估-打印循环;动态加载新代码
  • 能够将脚本打包成可执行文件;要么使用 Luiz de Figueiredo's srlua,要么我可以向您发送一个 120 行的 Lua 脚本,它将 Lua 源代码转换为 .c 文件,您可以将其与您的应用程序和解释器链接以生成可执行文件。

额外奖励积分:

  • 非常清晰,干净,精心设计的语言。
  • 小到足以完全掌握并在一天内高效工作。
  • 精湛的 Lua 编程书籍(在线免费查看上一版
于 2010-01-26T01:15:46.047 回答
3

Python 有几个选项可能符合您的要求:

  • 第一个是IronPython,它可以在没有安装程序的情况下运行,并且可以很好地与 .net API 配合使用。这使您可以使用可以构建 PIA 的 .net API 或 COM 类型库访问任何内容。正是出于这个原因,我将 at 用作脚本机制 - 它可以放入系统内的目录中,不需要显式安装。

    您必须安装适当的 .Net 运行时,但 .Net 2.0与 SQL Server 2005 一起安装。可以通过 ADO.net 访问 SQL Server,并且使用 Winforms 构建 GUI 相当简单。

  • 第二个是Portable Python,它被设计为通过 USB 密钥运行。虽然我看到你已经尝试过了,但你可能会详细说明缺点是什么。如果基本安装中没有某些内容,您可以随时考虑构建包含它的自定义版本。TkInter(至少)是捆绑的。

    您还可以使用 Py2EXE 生成独立的 Python 应用程序,去除所有多余的垃圾。这将为您提供大约 10 个文件(取决于 DLL 的数量),可以从单个目录(可能在 USB 密钥上)运行。

在 Unix-oid 操作系统上运行本地 python 安装非常简单,所以这几乎是不费吹灰之力。此外,python 随大多数 linux 发行版一起提供,并且可以从大多数(如果不是所有)传统 unix 供应商那里作为“贡献软件”提供。IIRC 它还与 MacOS 捆绑在一起。

于 2010-01-25T21:58:44.020 回答
2

Tclkit是一个单文件、自包含的 Tcl/Tk 系统。我拥有的 mac 版本约为 3.8 兆。您可以获得几乎适用于任何现代操作系统的版本。我随身携带一个带有 mac、windows 和 linux 二进制文件的拇指驱动器,这样我就可以在任何平台上运行我的脚本。无需安装,只需将一个文件复制到任何你想要的地方。

原始规范中唯一缺少的是开箱即​​用的 MS SQL Server / ODBC 支持。我知道人们为此使用 tcl,但我认为您必须添加一个额外的库或其他东西。有关详细信息,请参阅MS SQL Server 上的 Tcl'ers wiki 条目

于 2010-01-25T21:40:03.133 回答
1

查看维基百科的可移植软件的详尽列表这里有 Tiny C 编译器,这里也是维基百科,这里有它自己的主页。

通过引用维基百科的功能列表来总结:

  • 小 - 可以在任何地方编译和执行 C 代码,例如在救援磁盘上(x86 TCC 可执行文件大约 100KB,包括 C 预处理器、C 编译器、汇编器和链接器)。
  • 快速 - tcc 生成优化的 x86 代码。没有字节码开销。它的编译、汇编和链接速度比 GCC 快约 9 倍。
  • 任何 C 动态库都可以直接使用。TCC 正朝着完全符合 ISOC99 的方向发展。TCC 当然可以自己编译。
  • 包括一个可选的内存和绑定检查器。绑定检查代码可以与标准代码自由混合。
  • 直接编译并执行 C 源代码。无需链接或组装。包括完整的 C 预处理器和类似 GNU 的汇编器。
  • 支持 C 脚本:只需在 C 源代码的第一行添加“#!/usr/local/bin/tcc -run”,然后直接从命令行执行。
  • 使用 libtcc,您可以使用 TCC 作为动态代码生成的后端。
  • 很少依赖。它包括自己的手写词法分析器,并使用递归下降解析器实现。因此,构建 TCC 几乎不需要其他库。
  • 其 LGPL 许可证允许任何人使用、修改和/或重新分发该软件,它可用于开发开源或专有软件。

希望这会有所帮助并有用,最好的问候,汤姆。

于 2010-01-26T02:10:46.437 回答
0

对于 tcl,除了 Tclkit 之外,freewrap是另一个小型的便携式、独立的 tcl 解释器。

只需将 freewrap 可执行文件重命名为其他名称,即可将其转换为独立的解释器。将其重命名为 freewrap 会将其转换为脚本包装器。

此外,免费包装的应用程序包含一个 tcl 解释器。在紧急情况下,您可以尝试以 zip 文件的形式打开应用程序并编辑/替换其中包含的 tcl 代码(请记住先复制)。当我在没有开发工具但需要排除故障的客户站点时,这为我节省了好几次。我只是复制我部署的一个应用程序和 presto - 即时开发环境!

于 2010-01-26T01:55:37.970 回答
0

除了 Lua 建议,还有Idle。它基本上是 Lua 5.1 的超集,包括语言(和库)和基于 Lua 的实现。它最初被创建为一个更完整的 Windows 脚本解决方案:因为 Lua 主要用于嵌入,它有一个相当小的标准库,并且通常期望嵌入应用程序为 Lua 提供一个丰富的库。

这对于嵌入式语言来说是有意义的,因为毕竟,Adobe Lightroom、Nginx 和魔兽世界之间没有太多共同的功能,所以您根本无法将任何内容放入标准库中。但是对于更通用的操作系统脚本语言,人们需要一个稍微大一点的库。因此,Idle 在其标准库中捆绑了 Lua 中的几个第三方库(有时很难在 Windows 上工作)。

Idle 标准库在 Lua 上添加的一些东西是紧密的 Win32 集成、SQLite3 支持、网络支持、PEG 解析器生成器和存档支持。

此外,Idle 还支持将 Perl 和 C 代码嵌入到 Idle 程序中。

于 2010-01-26T03:00:32.193 回答
0

每个有点现代的 Windows 版本都预装了 VBScript 和 JScript。不满足您的所有功能(想到编译为可执行文件),但它们在安装大小方面肯定具有无与伦比的优势:很难被击败0

于 2010-01-26T03:18:45.867 回答