![我能创建我的系统的单个 EXE 吗?](https://linux22.com/image/1630725/%E6%88%91%E8%83%BD%E5%88%9B%E5%BB%BA%E6%88%91%E7%9A%84%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%8D%95%E4%B8%AA%20EXE%20%E5%90%97%EF%BC%9F.png)
我用 PHP 制作了一个高级而复杂的库/框架。目前,如果我想将其放在新计算机上,我必须执行(广义上)以下手动步骤:
- 安装 PHP CLI。
- 安装 PostgreSQL。
(这两个步骤已经涉及大量繁琐的工作,如果让不是专家的人来做的话是不可想象的。)
- 将我的库和应用程序代码解压到某个目录。
- 根据详细说明配置所有这些。
- 最后找到并运行一个特定的脚本来启动“引擎”,也就是我的主循环 PHP CLI 脚本。
我可以自己做,但我绝不会指望别人能做对。我希望他们只需“安装”一个独立的 EXE,它就会立即启动我的主循环 PHP CLI 脚本,以某种方式嵌入 PHP 和 PostgreSQL,并设置好一切,让用户无需任何配置即可运行它。当然,安全更新是一个主要问题,所以我可能会经常重新分发这个 EXE,甚至让系统通过获取并重新加载来自动更新。
但如果真的有可能的话,在实践中如何做到这一点呢?我发现至少有两个主要问题:
- PostgreSQL 没有“嵌入模式”。我和其他人多年来一直要求这样做,但他们似乎不愿意这样做。SQLite 有,但它与 PG 非常不完善且差异很大,以至于我必须完全重新设计我的整个系统,而这是不可能的。它是从头开始为 PostgreSQL 作为核心组件制作的。
- 我知道 Docker 的存在,也猜测它会被提及或建议,但尽管我自认为是一个“高级用户”和“程序员”(我更好的因为我一生中的大部分时间都在这台机器前度过……),我似乎无法理解如何真正使用 Docker 做任何事情。就好像我的大脑与该软件不兼容之类的。我对 Blender 和 Unity 也有同样的感觉。但对其他复杂的软件却没有。我无法解释。
这是否又是那些“根本不会发生”的事情之一?或者有某种简单、好的方法来实现这一点?
我没有钱花在这上面。
答案1
你可以通过压缩以下内容来相对简单地安装它:
每个程序的安装程序所需的文件夹
然后添加一个脚本来运行每个步骤。问题是,您不能只复制服务的路径,因为它们不只是从一个文件夹运行,很可能是许多注册表项 - 许多可能依赖于用户设置的变量,而这些变量在其他操作系统上可能有所不同。
如果您需要执行数十次甚至数千次,只需创建一个干净的操作系统安装并让此设置运行,然后将 HDD 映像克隆到其他 hdd。只需激活 windows 即可。
对于 Linux 来说,这应该简单得多。它不应该太关心驱动器在哪台机器上,以及相邻服务器机架中是否正在运行其他 20 个相同的安装。
至于你想要的只是软件包,那可就倒霉了。但是如果你想在数千台服务器上安装它,那么在安装后克隆这个配置的干净操作系统,这将节省大量的时间和精力。它甚至可以半自动化。
如果您的系统中没有其他数据,您可以按原样克隆它(如果是 Linux) - 对于 Windows,肯定需要一个激活向导。