运行 在新机器上发布 elixir 的最小设置

Minimal setup to run elixir release in a fresh machine

背景

我有一个非常小的 Elixir 桌面应用程序,名为 hello-desktophttps://github.com/Fl4m3Ph03n1x/hello-desktop

我使用 mix release.

在 Windows 10 VM 中编译和发布了

现在在另一台 Windows 10 机器上,我下载了 repo 并为 Windows 安装了 erlang:

我的想法是,由于我创建了所有安装的版本,所以我不需要在新机器上安装任何东西到 运行 我的 hello.bat.

releases: [
        hello: [
          include_executables_for: [:windows],
          applications: [runtime_tools: :permanent]
        ]
      ]

但是,我仍然继续安装带有 OTP 24 的 erlang,以将其作为可能的错误丢弃。

问题

这里的问题是,当我在第二个 VM 中 运行 mix release 创建的 bat 文件时,出现以下错误:

 .\hello.bat start
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.

这很令人困惑。它在寻找什么路径? 理论上,VM 应该是我所需要的。我不需要安装 Elixir。老实说,因为我相信我正在创建包含所有内容的版本,所以我什至不需要安装 erlang。

我做错了什么?

回答

我的错误是认为名为 hello.bat 的单个文件是我 运行 所需要的全部。实际上,据我现在的理解,那只是一个切入点。

事实证明你 可以 运行 在一台新机器上发布长生不老药,包括所有内容,如果你随身携带完整的 _build 文件夹.

基本上,在压缩整个 _build 文件夹后,将其发送到一台没有安装 Elixir 或 Erlang 的新机器,然后解压缩并运行安装 hello.bat在里面,一切正常。

我也很意外。我不知道 _build 文件夹中的哪些文件是特别需要的,但我猜测 _build/prod 中的所有文件都存在是有原因的,因此应该随您的发行版一起提供。

这对我来说特别不可思议,因为它还包括第三方工具,例如 :wx 如果您需要它们。