【问题标题】:Creating a Self-Extracting Executable Using PHP使用 PHP 创建自解压可执行文件
【发布时间】:2012-11-06 14:20:56
【问题描述】:

我正在尝试开发的自解压可执行文件是一个安装程序。最终用户将访问一个站点,然后将提示他们在该站点上注册,并将向他们提供下载。该下载是自解压可执行文件,它将在最终用户的计算机上安装软件以及其中包含用户唯一 ID 的配置文件。该软件是一项 Windows 服务,因此无法简单地询问用户的用户名和密码。

为了能够将注册用户的唯一 ID 插入安装程序,我必须即时生成安装程序。在研究和使用我自己的经验之后,我决定自解压可执行文件是最好的选择。我现在的问题是如何使用 PHP 生成一个?在研究了这个问题后,我发现最常见的解决方案是安装一个可执行文件,该可执行文件可以在服务器机器上创建自解压的可执行文件,然后从 PHP 中调用它。但是,我的虚拟主机无法执行可执行文件,因此这不是一个可行的解决方案。

【问题讨论】:

  • 这看起来很可疑......你想做什么?
  • 哈哈,听起来确实有点可疑。我们正在开发一项服务,它会自动将文件列表下载到最终用户的计算机上,因此我们需要一个客户端程序来查看我们网站上的用户特定 xml 文件,该文件包含客户端下载的列表(Windows 服务) 将下载。

标签: php zip executable


【解决方案1】:

但是,我的虚拟主机无法执行可执行文件,因此这不是一个可行的解决方案。

我认为在这种情况下,您将需要切换到允许您执行此操作的网络主机(或租用专用或虚拟服务器)。安装必要的库后,您可以在 PHP 中创建 ZIP 文件,仅此而已。生成自解压可执行文件不在菜单上。

如果这不是一个选项,您将不得不找到一种方法来预先生成自解压可执行文件,然后将用户 ID 注入其中。这当然是可能的,但我希望您必须为此构建一个自定义自解压器。

【讨论】:

  • 很遗憾,我无法决定我们使用什么网络主机。
  • @Dylan:当我阅读此评论时,我正要回答类似的问题。您甚至可以通过传递二进制数据的 php 脚本提供下载,但用户信息所在的区域除外。您需要填充数据以确保每个数据的字节数相同,并注意压缩格式中内置的校验和。
  • @Dylan 祝你好运!听到这是如何解决的会很有趣。万一您遇到困难并且负担得起巨大的尺寸,请记住 zip 格式的压缩率为“0”,(IIRC)只是连接未压缩的文件。
  • 希望我能再次找到源页面,但我确实找到了一个简单的 .exe 存根,您可以简单地将其添加到 .zip 文件并生成基本的 Windows 自解压 zip,并且可以做到这一点来自任何可以连接文件的系统。对我做的一个项目非常有用。
  • 啊……脑残。这里是:info-zip.org UnzipSFX 部分是 .exe 存根。
【解决方案2】:

自解压存档只是一个附加存档数据的提取器。提取器程序会自行打开,查找数据的偏移量并进行提取。可能会有预告片来帮助找到偏移量。

您可以在 PHP 中轻松附加文件:包含您的程序和用户数据的存档。但是您需要编写一个自定义提取器来识别这种格式。

【讨论】:

  • 好主意。我也可以试试这个,因为 PHP 确实包含创建/编辑档案和附加文件的功能。
【解决方案3】:

我不确定这是否可能.. 你能做的最多就是使用 PHP 来动态抓取肯定需要的文件吗?

无论如何,也许您的应用程序可以访问互联网以定期获取它需要的文件?

或者,您可以在程序中引用外部 PHP 文件,例如 /data.php?userid=1222&token=9999,这应该是相当安全的。

【讨论】:

  • 问题是如何获取用户ID
  • 啊,我明白了,我想我误读了这个问题。不过我得给这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 2015-01-06
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多