       end
 
       for {filename, contents} <- clis do
-        path = Path.join(bin_path, filename)
-        File.write!(path, contents)
-        executable!(path)
-      end
-
-      unless File.exists?(elixir_bin_path) do
-        Mix.raise("Could not find bin files from Elixir installation for #{os}")
-      end
-
-      for {filename, contents} <- elixir_cli_for(os, elixir_bin_path, release) do
-        path = Path.join(release.version_path, filename)
-        File.write!(path, contents)
-        executable!(path)
+        target = Path.join(bin_path, filename)
+        File.write!(target, contents)
+        executable!(target)
+      end
+
+      for {filename, contents_fun} <- elixir_cli_for(os, release) do
+        source = Path.join(elixir_bin_path, filename)
+
+        if File.regular?(source) do
+          target = Path.join(release.version_path, filename)
+          File.write!(target, contents_fun.(source))
+          executable!(target)
+        else
+          skipping("#{filename} for #{os} (bin/#{filename} not found in the Elixir installation)")
+        end
       end
     end
   end

    """)
  end

  defp info(release, command) do
    unless release.options[:quiet] do
      Mix.shell().info(command)
    end
  end

  ## Copy operations

        update_in(release.config_providers, &[{Config.Reader, init} | &1])

      release.config_providers == [] ->
        skipping("runtime configuration (config/releases.exs not found)")
        release

      true ->
