|
@@ -354,6 +354,9 @@ List<String> EditorExportPlatformMacOS::get_binary_extensions(const Ref<EditorEx
|
|
list.push_back("dmg");
|
|
list.push_back("dmg");
|
|
#endif
|
|
#endif
|
|
list.push_back("zip");
|
|
list.push_back("zip");
|
|
|
|
+#ifndef WINDOWS_ENABLED
|
|
|
|
+ list.push_back("app");
|
|
|
|
+#endif
|
|
} else if (dist_type == 2) {
|
|
} else if (dist_type == 2) {
|
|
#ifdef MACOS_ENABLED
|
|
#ifdef MACOS_ENABLED
|
|
list.push_back("pkg");
|
|
list.push_back("pkg");
|
|
@@ -1954,6 +1957,8 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|
err = _code_sign(p_preset, tmp_app_path_name, ent_path);
|
|
err = _code_sign(p_preset, tmp_app_path_name, ent_path);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ String noto_path = p_path;
|
|
|
|
+ bool noto_enabled = (p_preset->get("notarization/notarization").operator int() > 0);
|
|
if (export_format == "dmg") {
|
|
if (export_format == "dmg") {
|
|
// Create a DMG.
|
|
// Create a DMG.
|
|
if (err == OK) {
|
|
if (err == OK) {
|
|
@@ -1993,19 +1998,38 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|
|
|
|
|
zip_folder_recursive(zip, tmp_base_path_name, "", pkg_name);
|
|
zip_folder_recursive(zip, tmp_base_path_name, "", pkg_name);
|
|
|
|
|
|
|
|
+ zipClose(zip, nullptr);
|
|
|
|
+ }
|
|
|
|
+ } else if (export_format == "app" && noto_enabled) {
|
|
|
|
+ // Create temporary ZIP.
|
|
|
|
+ if (err == OK) {
|
|
|
|
+ noto_path = EditorPaths::get_singleton()->get_cache_dir().path_join(pkg_name + ".zip");
|
|
|
|
+
|
|
|
|
+ if (ep.step(TTR("Making ZIP"), 3)) {
|
|
|
|
+ return ERR_SKIP;
|
|
|
|
+ }
|
|
|
|
+ if (FileAccess::exists(noto_path)) {
|
|
|
|
+ OS::get_singleton()->move_to_trash(noto_path);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Ref<FileAccess> io_fa_dst;
|
|
|
|
+ zlib_filefunc_def io_dst = zipio_create_io(&io_fa_dst);
|
|
|
|
+ zipFile zip = zipOpen2(noto_path.utf8().get_data(), APPEND_STATUS_CREATE, nullptr, &io_dst);
|
|
|
|
+
|
|
|
|
+ zip_folder_recursive(zip, tmp_base_path_name, tmp_app_dir_name, pkg_name);
|
|
|
|
+
|
|
zipClose(zip, nullptr);
|
|
zipClose(zip, nullptr);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- bool noto_enabled = (p_preset->get("notarization/notarization").operator int() > 0);
|
|
|
|
if (err == OK && noto_enabled) {
|
|
if (err == OK && noto_enabled) {
|
|
- if (export_format == "app" || export_format == "pkg") {
|
|
|
|
|
|
+ if (export_format == "pkg") {
|
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("Notarization requires the app to be archived first, select the DMG or ZIP export format instead."));
|
|
add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("Notarization requires the app to be archived first, select the DMG or ZIP export format instead."));
|
|
} else {
|
|
} else {
|
|
if (ep.step(TTR("Sending archive for notarization"), 4)) {
|
|
if (ep.step(TTR("Sending archive for notarization"), 4)) {
|
|
return ERR_SKIP;
|
|
return ERR_SKIP;
|
|
}
|
|
}
|
|
- err = _notarize(p_preset, p_path);
|
|
|
|
|
|
+ err = _notarize(p_preset, noto_path);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2024,6 +2048,10 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|
tmp_app_dir->change_dir("..");
|
|
tmp_app_dir->change_dir("..");
|
|
tmp_app_dir->remove(pkg_name);
|
|
tmp_app_dir->remove(pkg_name);
|
|
}
|
|
}
|
|
|
|
+ } else if (noto_path != p_path) {
|
|
|
|
+ if (FileAccess::exists(noto_path)) {
|
|
|
|
+ DirAccess::remove_file_or_error(noto_path);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|