请注意: 像portableapps.com中的便携式,不是传统意义上的可用于多种体系结构或操作系统的语言。无论是谁创造了便携式这个词的用法,都应该受到打击。 :)
我是一名DBA和sysadmin,主要用于运行SQL Server的Windows机器。我正在寻找一种不需要管理员访问或安装程序的Windows编程/脚本语言,除了将其扩展到文件夹之外不需要任何安装过程。我的目的是拥有一种可以自我标准化的自动化语言。
到目前为止,我一直在使用批处理文件和Unix shell的组合,使用sh.exe UnxUtils 但它远非一个完美的解决方案。
我评估了一些选项,他们都至少有一个严重的缺点或另一个。我非常喜欢开源或双重许可,但我更感兴趣的是找到合适的工具而不是其他任何东西。对依赖Cygwin或Java的任何东西都不感兴趣,但此时我对需要.NET的东西没问题。
要求:
- 可管理的占地面积(1-100个文件,安装在30 MB以下)
- 在Windows XP和Server(2003+)上运行
- 没有安装程序(exe,msi)
- 不依赖于JVM或Cygwin安装
- 使用外部管道,进程和文件
- 支持MS SQL Server或ODBC连接
奖励积分:
- 开源
- 用于调用本机DLL中的函数的FFI
- GUI支持(native或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:很棒,除了对脚本的支持不佳
Tclkit 是一个单文件,独立的Tcl / Tk系统。我的mac版本大约是3.8兆。您可以获得几乎任何现代操作系统的版本。我带着一个有mac,windows和linux二进制文件的拇指驱动器,所以我可以在任何平台上运行我的脚本。无需安装,只需将文件复制到任何位置即可。
它原始规范中唯一缺少的是开箱即用的MS SQL Server / ODBC支持。我知道人们使用tcl,但我认为你必须添加额外的库或其他东西。见 Tcl'ers MS SQL Server上的wiki条目 了解更多信息。
Python有两种选择可能适合您的账单:
首先是 IronPython的, 可以在没有安装程序的情况下运行,并且可以很好地使用.net API。这使您可以访问任何可以构建PIA的.net API或COM类型库。我之所以使用at作为脚本机制正是出于这个原因 - 它可以被放入系统内的一个目录中,而不需要显式安装。
您必须安装适当的.Net运行时,但.Net 2.0随SQL Server 2005一起安装。可以通过ADO.net访问SQL Server,使用Winforms构建GUI非常简单。
第二是 便携式Python 设计用于USB密钥运行。虽然我看到你已经尝试过,但你可能会详细说明缺点是什么。如果在基本安装中没有可用的东西,您可以随时查看构建包含它的自定义版本。 TkInter(至少)捆绑在一起。
您还可以使用Py2EXE生成独立的python应用程序,并删除所有多余的垃圾。这将为您提供大约10个文件(取决于DLL的数量),这些文件可以从单个目录运行,可能在USB密钥上运行。
在Unix-oid操作系统上运行本地python安装是非常简单的,所以这几乎没有用。另外,python附带了大多数Linux发行版,并且可以从大多数(如果不是全部)trad unix供应商那里获得“贡献软件”。 IIRC它也与MacOS捆绑在一起。
对于tcl,除了Tclkit之外, freewrap 是tcl的另一个小型便携式自包含解释器。
只需将freewrap可执行文件重命名为其他内容即可将其转换为独立的解释器。将其重命名为freewrap会将其转换为脚本包装器。
此外,freewrapped应用程序包含一个tcl解释器。在紧急情况下,您可以尝试将应用程序作为zip文件打开并编辑/替换其中包含的tcl代码(只需记住先制作副本)。当我在没有开发工具的客户端站点但需要解决问题时,这已经多次保存了我。我只是复制了我部署的应用程序和presto之一 - 即时开发环境!
看着维基百科的详尽无遗 名单 便携式软件
还有维基百科的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许可证允许任何人使用,修改和/或重新分发软件,它可用于开发开源软件或专有软件。
希望这有用并且有用,
最好的祝福,
汤姆。
除了Lua的建议,还有 闲。它基本上是Lua 5.1的超集,包括语言(和库)以及基于Lua的实现。它最初是为Windows提供更完整的脚本解决方案:因为Lua主要用于嵌入,它有一个相当小的标准库,并且通常期望嵌入应用程序为Lua提供丰富的库。
这对于嵌入式语言来说是有意义的,因为毕竟,Adobe Lightroom,Nginx和魔兽世界之间没有太多共同的功能,所以你根本就没有什么可以放入 标准 图书馆。但是对于更通用的OS脚本语言,人们会想要一个稍大的库。因此,Idle在Lua的标准库中捆绑了几个第三方库(有时很难在Windows上工作)。
Idle标准库通过Lua添加的一些东西是紧密的Win32集成,SQLite3支持,网络支持,PEG解析器生成器和归档支持。
此外,Idle支持将Perl和C代码嵌入到Idle程序中。
每个有点现代的Windows版本都预先安装了VBScript和JScript。不符合 所有 您的功能(编译为可执行文件)会浮现在脑海中,但它们在安装大小方面肯定具有无与伦比的优势:它很难被击败 0
。