【问题标题】:Generic, cross-platform tool to package an application into a single binary?将应用程序打包成单个二进制文件的通用跨平台工具?
【发布时间】:2014-04-10 06:33:17
【问题描述】:

我有一个由几个脚本文件组成的应用程序(在这种情况下是用 Lua 编写的,例如 Main.luaHelper1.luaHelper2.lua)。为了在 Windows 上运行应用程序,目前需要这些脚本文件以及解释器(lua52.exelua52.dll)。然后可以使用lua52.exe Main.lua <arguments> 启动该程序。

理想情况下,我想分发单个可执行文件Main.exe,而不是包含 5 个文件的文件夹。当以Main.exe <arguments> 启动时,应该会发生以下情况:

  1. 将所有 5 个文件解压到一个临时目录中
  2. 启动lua52.exe Main.lua <arguments>
  3. 完成后删除临时目录

有没有什么工具可以将这5个文件打包并创建Main.exe

我相信对于 Python(仅),pyinstaller -F 符合这些要求。是否有一个通用工具,不依赖于 Python(或 Lua)并且理想的跨平台(Windows、OS X 和 Linux)可以做到这一点?

编辑:如果没有可以做到这一点的跨平台工具,我很乐意在每个平台上使用不同的工具。对于 Windows,WinRAR 似乎几乎可以满足我的需求(通过创建 SFX 存档),但不幸的是,它似乎不支持将 <arguments> 转发到 lua52.exe

有谁知道比 WinRAR 更适合我需要的 Windows 工具?另外,是否有适用于 OS X 和/或 Linux 的类似工具?

【问题讨论】:

    标签: deployment language-agnostic cross-platform packaging


    【解决方案1】:

    如果您只针对 1 个特定平台,则应该有可用的安装程序构建器。例如对于 Windows 有 http://nsis.sourceforge.net/Main_Page 您的要求相当简单,因此实际上您可以在可移植的 c/c++/java 中编写自己的简单运行程序/安装程序,并为不同的系统创建不同的安装程序(因为 lua52.exe 只能在 Windows 下运行)。

    如果你需要你的应用程序是跨平台的,你需要一些通用的运行时:java/ruby/nodejs 或者你可以尝试构建智能 shell 脚本。另一种选择是上网并创建一个网络应用程序

    【讨论】:

      【解决方案2】:

      你考虑过WinZip self-extractor吗?

      WinZip® Self-Extractor 创建自解压 Zip 文件。这些 自解压 Zip 文件是电子文件分发的理想选择, 因为它们包含多个压缩文件,最大限度地减少下载 时间并确保重要文件不会分开。

      自解压 Zip 文件可以选择运行“设置”或 “安装”程序,由创建者提供,在文件完成后 解压。

      它特定于 Windows 平台,但我已将它用于软件分发,它非常好,而且非常实惠。它还有一个很好的优势,即已经拥有 Lua 解释器的偏执的高级用户可以从同一存档中手动提取 Main.lua 脚本,而无需信任您的本机可执行文件(安装程序或解释器)。有关功能的详细列表,请参阅上面的链接。

      另外关于跨平台,您打包的 lua 解释器显然是针对特定平台的,因此您已经需要为您的用户提供每个平台的特定于平台的可执行存档。因此,除了发布准备时间之外,使用统一的跨平台工具生成所有特定于平台的安装程序并没有太多附加价值。您可以考虑使用像 install4j 这样的东西,它利用了大多数用户可能已经拥有的 Java JRE(尽管如果他们不这样做,那么强迫他们下载 Java 以便安装程序可以运行似乎有点愚蠢)。

      【讨论】:

        【解决方案3】:

        对于跨平台部署,BitRock 提供了一个很棒的工具集(假设你有钱可以花钱),请参阅 http://installbuilder.bitrock.com/installbuilder-features.html

        我不知道它究竟是如何工作的,但最终结果是不错的多平台安装程序,Bitnami 使用它来打包他们的开源应用程序(我见过 Windows 和 Linux 安装程序)

        如果您特别在寻找 lua 解决方案,请查看以下答案:Easiest way to compile a lua script (*.exe)...?

        或者您可以考虑构建自己的完全自定义的 exe 加载器(因为 lua 是开源的,您可以轻松嵌入它)。 http://www.freelists.org/post/luajit/Interested-in-lua2exe,5“lua2exe”Google 查询答案中包含的 C 源代码可以提供帮助

        对于将 .NET 应用程序打包到包含所有资源的单个文件中,请查看例如这里:http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx

        【讨论】:

          猜你喜欢
          • 2010-10-05
          • 1970-01-01
          • 2016-03-15
          • 2021-05-10
          • 2020-10-30
          • 2018-08-02
          • 2011-02-15
          • 2011-06-30
          • 2012-07-05
          相关资源
          最近更新 更多