【问题标题】:How do I deliver (distribute) a Perl application?如何交付(分发)Perl 应用程序?
【发布时间】:2013-05-03 14:06:06
【问题描述】:

我用 Perl 写了一个程序,现在我想把它发给好友。我不希望他为启动它而烦恼。

我如何制作一些他可以单击并准备好启动的包?

PS。我可以让他下载 ActivePerl 并预先安装。

PPS。我不需要向他隐藏 .pl 来源。我需要自动下载和安装所有必需的 CPAN 模块。

另外,如果将来我需要扩展它以进行生产交付怎么办?意思是,接收方不是buddy,而是Mr. Client?

【问题讨论】:

  • 嗯,“点击”?我认为您应该在问题中添加一些标签。
  • 是的,点击,就像鼠标点击一样。您能否更具体并命名一些您的意思的标签?好吧,我的朋友对命令行足够精通,所以他也可以运行安装命令。
  • 类似 WINDOWS 的东西,我们很多人都忽略了。 :) 也许还有 MOUSEGUI 什么的。外星世界,所有这些。
  • 我放了windows标签,因为我看到标题的第一想法是“当然是通过CPAN”。

标签: windows perl


【解决方案1】:

我使用pp 取得了巨大成功。它可以将 Perl 解释器和使用的模块一起打包成一个可执行文件。

然后总是有B::C 提供perlcc 实用程序,但我没有那么幸运。

【讨论】:

  • 谢谢,开始下载了。
  • PAR::Packer 非常好,可能是最简单的方法。使用 Crypto 过滤器,您甚至可以对源代码进行编码。尽管最终如果有人想要他们仍然可以对其进行解码并重用您的代码。但我认为这不是你关心的问题。 可能导致一些问题的唯一事情是在构建 PAR exe 时不会包含某些库的 DLL。但您可以手动包含它们。
  • pp 通常可以在没有任何 perl 的计算机上正常工作。虽然我已经看到了与机器上已经存在的 DLL 冲突的各种问题(从 5.8 perl 编译的程序在已经安装了 5.10 perl 等的机器上运行)。我也看到了上面提到的 Crypto 过滤器的许多问题——很多程序都有不同版本的 libeay.dll,它经常导致编译程序失败。
  • @daxim,我设法安装了 PAR::Packer,尽管我从常用的ppm install 切换到cpan 命令,但它拒绝找到这个模块。好吧,当我拥有 pp 实用程序时,我去我的程序上运行它。它产生了 4-Mb a.exe 文件,启动时似乎什么都不做,甚至不打印我的程序的启动消息。到目前为止,这一切都是成功的:(
  • @Joel,我解决了这个问题。只是我太聪明了,对我的程序进行了“模块化”,起始行是run() unless caller; 在阅读了brian d foy的文章脚本如何成为模块之后在 perlmonks 和 cmets 上,我了解到 PAR 定义了 caller,所以现在这条线看起来像 run() unless caller and caller ne 'PAR'; 并且它有效!感谢您在线!
【解决方案2】:

为了便于分发给 Windows 客户端,它很难击败 PerlAppPar::Packer(又名 pp)或 Cava Packager

【讨论】:

  • 谢谢@daotoad。当我运行 ppm install Par::Packerppm install PAR::Packer 时,它显示“找不到任何提供 Par::Packer 的包”。另外两个我会调查。
  • 如果您使用 ActiveState,我认为 ppm 必须在替代存储库中可用。
  • @frepkin,查看 Kobesearch 上的 PAR::Packer,它列出了为不同版本的 ActivePerl 提供 PPM 的 PPM 存储库。 cpan.uwinnipeg.ca/search?query=PAR%3A%3APacker&mode=dist
  • @Htbaa,@daotoad,我已经通过ppm repo add 命令将这些存储库添加到ppm,但由于某种原因它没有帮助。但是cpan PAR::Packer 对我来说效果很好。
【解决方案3】:

虽然我最喜欢 Joel 的建议,但我还是想为您指出另一个解决方案。看起来您的目标是 Windows,您也可以使用 Strawberry Perl 的便携式版本。安装您需要的模块,将您的脚本/应用程序添加到其中,设置一个简单的批处理脚本以在便携式环境中启动它,然后您就可以设置了。

与 pp (PAR::Packer) 解决方案相比,最大的缺点是您的应用程序的大小会相当大,因为 pp 只包含必要的部分。

【讨论】:

  • pp 生成的可执行文件几乎不是很精简,因为“必要的”在您的任何脚本之前包括 Perl 解释器和相当多的标准库。即使是一个“小”的 pp 生成的 exe,大小也只有几 MB。
  • 我们通过pp打包后分发的一个应用程序是Wx应用程序,大小约为15MB。当包含 Strawberry Perl 的可移植版本时,您还包含 C/C++ 编译器和工具链,压缩后几乎有 57MB 大。所以这是相当不同的。
【解决方案4】:

您可能正在寻找 IndigoStar 的perl2exe

Perl2Exe 是一个命令行程序,用于将 Perl 脚本转换为可执行文件。这允许您在 Perl 中创建不需要 Perl 解释器的独立程序。您可以发布可执行文件,而无需发布您的 Perl 源代码。 Perl2Exe 可以为 Windows 和 Unix 目标主机生成可执行文件。

当然,最简单的方法是让您的客户端可以运行 perl。

【讨论】:

  • 谢谢。我将研究 perl2exe。不必运送资源可能很好,但目前我没有需要。
  • 我的朋友肯定可以下载 Perl 并按我的要求安装它,我确实提到了这一点。但我不想解释他必须手动安装哪些 CPAN 模块。
  • perl2exe 也处理模块。
  • Nordendfur,只是因为我很好奇(不是想发火),perl2exe 给你带来了什么,而 pp 不是为了钱?
  • @Joeld:没什么大不了的。据我所知, pp 无法从模块制作 DLL 以在应用程序之间共享。我也赞成你的回答。
【解决方案5】:

你不妨试试Cava Packager。它可以在 Windows、Linux 和 Mac OS X 上从 Perl 代码生成可执行文件。它采用 PerlApp、pp 和 perl2exe 的替代方法。您可能应该尝试所有这些并决定您最喜欢哪个。

注意:如我的名字所示,我隶属于 Cava Packager。

【讨论】:

    【解决方案6】:

    Par::Packer 会为您完成这项工作,无需大惊小怪,而且完全免费。只要您安装了正确的依赖项,您只需(在 Windows 机器上)打开命令提示符,CD 进入您的 perl 源(例如“samplefile.pl”)所在的目录并键入:pp -o sampleprogram.exe samplefile .pl。大约一分钟后,“samplefile.exe”编译完成,您可以将其发送给您的朋友运行

    Perl2Exe 是一个专有的解决方案,虽然很好,但不是免费的

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2013-08-21
      • 2011-08-10
      • 1970-01-01
      • 2011-05-13
      • 2017-02-16
      相关资源
      最近更新 更多