From e3dcce929cabf7f338c4f4e5807c4838be6e3892 Mon Sep 17 00:00:00 2001 From: Dominic Letz Date: Tue, 7 Oct 2025 17:02:11 +0200 Subject: [PATCH 1/2] Add --keychain param to pkg build --- lib/package/macos.ex | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/package/macos.ex b/lib/package/macos.ex index 5c39ee5..00758ab 100644 --- a/lib/package/macos.ex +++ b/lib/package/macos.ex @@ -133,7 +133,14 @@ defmodule Desktop.Deployment.Package.MacOS do app_root = Path.join(build_root, "#{pkg.name}.app") out_file = Path.join(build_root, "#{pkg.name}-#{vsn}.pkg") args = ["--component", app_root, "/Applications"] - args = if developer_id != nil, do: ["--sign", developer_id] ++ args, else: args + + args = + if developer_id != nil do + ["--keychain", keychain(), "--sign", developer_id] ++ args + else + args + end + cmd!("productbuild", args ++ [out_file]) end From 3ecabb77dd80f842b9ab3f217637e61e01d5dc69 Mon Sep 17 00:00:00 2001 From: Dominic Letz Date: Wed, 8 Oct 2025 12:10:46 +0200 Subject: [PATCH 2/2] fixup --- lib/package/macos.ex | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/package/macos.ex b/lib/package/macos.ex index 00758ab..49ea89d 100644 --- a/lib/package/macos.ex +++ b/lib/package/macos.ex @@ -107,7 +107,7 @@ defmodule Desktop.Deployment.Package.MacOS do end dmg = make_dmg(pkg) - make_pkg(pkg, developer_id) + maybe_make_pkg(pkg) if developer_id != nil do package_sign(developer_id, dmg) @@ -128,20 +128,21 @@ defmodule Desktop.Deployment.Package.MacOS do ) end - defp make_pkg(%Package{release: %Mix.Release{path: path, version: vsn}} = pkg, developer_id) do + defp maybe_make_pkg(%Package{release: %Mix.Release{path: path, version: vsn}} = pkg) do build_root = Path.join([path, "..", ".."]) |> Path.expand() app_root = Path.join(build_root, "#{pkg.name}.app") out_file = Path.join(build_root, "#{pkg.name}-#{vsn}.pkg") args = ["--component", app_root, "/Applications"] + installer_id = find_installer_id() args = - if developer_id != nil do - ["--keychain", keychain(), "--sign", developer_id] ++ args + if installer_id != nil do + ["--keychain", keychain(), "--sign", installer_id] ++ args else args end - cmd!("productbuild", args ++ [out_file]) + cmd("productbuild", args ++ [out_file]) end defp make_dmg(%Package{release: %Mix.Release{path: path, version: vsn}} = pkg) do @@ -398,6 +399,16 @@ defmodule Desktop.Deployment.Package.MacOS do end end + def find_installer_id() do + cond do + System.get_env("MACOS_INSTALLER_ID") != nil -> + System.get_env("MACOS_INSTALLER_ID") + + true -> + find_developer_id() + end + end + defp do_find_developer_id(uids) do ids = find_identity() Enum.find(uids, fn uid -> String.contains?(ids, uid) end)