mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
Merge pull request #12968 from OatmealDome/mac-updater-embed-3
Embed the Updater into DolphinQt's app bundle on macOS
This commit is contained in:
@ -30,3 +30,59 @@ endif()
|
||||
if (WIN32 AND ENABLE_AUTOUPDATE)
|
||||
add_subdirectory(WinUpdater)
|
||||
endif()
|
||||
|
||||
if (APPLE AND ENABLE_QT)
|
||||
set(DOLPHIN_MAC_BUNDLE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Dolphin.app")
|
||||
|
||||
add_custom_target(build_final_bundle ALL
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory
|
||||
${DOLPHIN_MAC_BUNDLE}
|
||||
|
||||
COMMAND cp -R
|
||||
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DolphinQt.app
|
||||
${DOLPHIN_MAC_BUNDLE}
|
||||
|
||||
# HACK: The Updater does not support setting the executable bit on new files,
|
||||
# so don't use the new executable name, and instead continue to use "Dolphin".
|
||||
COMMAND ${CMAKE_COMMAND} -E rename
|
||||
${DOLPHIN_MAC_BUNDLE}/Contents/MacOS/DolphinQt
|
||||
${DOLPHIN_MAC_BUNDLE}/Contents/MacOS/Dolphin
|
||||
|
||||
COMMAND plutil
|
||||
-replace CFBundleExecutable -string Dolphin
|
||||
${DOLPHIN_MAC_BUNDLE}/Contents/Info.plist
|
||||
|
||||
DEPENDS dolphin-emu)
|
||||
|
||||
if (ENABLE_AUTOUPDATE)
|
||||
add_dependencies(build_final_bundle MacUpdater)
|
||||
|
||||
add_custom_command(TARGET build_final_bundle
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory
|
||||
"${DOLPHIN_MAC_BUNDLE}/Contents/Helpers"
|
||||
|
||||
COMMAND cp -R
|
||||
"$<TARGET_BUNDLE_DIR:MacUpdater>"
|
||||
"${DOLPHIN_MAC_BUNDLE}/Contents/Helpers/Dolphin Updater.app")
|
||||
|
||||
if (MACOS_CODE_SIGNING)
|
||||
add_custom_command(TARGET build_final_bundle
|
||||
POST_BUILD
|
||||
COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh"
|
||||
"-t"
|
||||
"${MACOS_CODE_SIGNING_IDENTITY}"
|
||||
"${DOLPHIN_MAC_BUNDLE}/Contents/Helpers/Dolphin Updater.app")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (MACOS_CODE_SIGNING)
|
||||
add_custom_command(TARGET build_final_bundle
|
||||
POST_BUILD
|
||||
COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh"
|
||||
"-t"
|
||||
"-e" "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmu$<$<CONFIG:Debug>:Debug>.entitlements"
|
||||
"${MACOS_CODE_SIGNING_IDENTITY}"
|
||||
"${DOLPHIN_MAC_BUNDLE}")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -566,15 +566,14 @@ endif()
|
||||
|
||||
if(APPLE)
|
||||
include(BundleUtilities)
|
||||
set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Dolphin.app)
|
||||
set(BUNDLE_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/DolphinQt.app)
|
||||
|
||||
# Ask for an application bundle.
|
||||
set_target_properties(dolphin-emu PROPERTIES
|
||||
MACOSX_BUNDLE true
|
||||
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR}/Info.plist"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/DolphinEmu.entitlements"
|
||||
XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "--deep --options=runtime"
|
||||
OUTPUT_NAME Dolphin
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
|
||||
OUTPUT_NAME DolphinQt
|
||||
)
|
||||
|
||||
# Copy qt.conf into the bundle
|
||||
@ -638,9 +637,13 @@ if(APPLE)
|
||||
endif()
|
||||
|
||||
if(MACOS_CODE_SIGNING)
|
||||
# Code sign make file builds
|
||||
add_custom_command(TARGET dolphin-emu POST_BUILD
|
||||
COMMAND /usr/bin/codesign -f -s "${MACOS_CODE_SIGNING_IDENTITY}" --deep --options=runtime --entitlements "${CMAKE_SOURCE_DIR}/Source/Core/DolphinQt/DolphinEmu$<$<CONFIG:Debug>:Debug>.entitlements" "$<TARGET_BUNDLE_DIR:dolphin-emu>")
|
||||
add_custom_command(TARGET dolphin-emu
|
||||
POST_BUILD
|
||||
COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh"
|
||||
"-e" "${CMAKE_CURRENT_SOURCE_DIR}/DolphinEmu$<$<CONFIG:Debug>:Debug>.entitlements"
|
||||
"${MACOS_CODE_SIGNING_IDENTITY}"
|
||||
"${BUNDLE_PATH}"
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
install(TARGETS dolphin-emu RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
@ -30,7 +30,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Dolphin</string>
|
||||
<string>DolphinQt</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Dolphin.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
@ -53,11 +53,23 @@ foreach(sb ${STORYBOARDS})
|
||||
COMMENT "Compiling Storyboard ${sb}...")
|
||||
endforeach()
|
||||
|
||||
if(MACOS_CODE_SIGNING)
|
||||
if (MACOS_CODE_SIGNING_IDENTITY_UPDATER STREQUAL "")
|
||||
set(MACOS_CODE_SIGNING_IDENTITY_UPDATER "${MACOS_CODE_SIGNING_IDENTITY}")
|
||||
endif()
|
||||
if(NOT SKIP_POSTPROCESS_BUNDLE)
|
||||
# Update library references to make the bundle portable
|
||||
include(DolphinPostprocessBundle)
|
||||
dolphin_postprocess_bundle(MacUpdater)
|
||||
|
||||
add_custom_command(TARGET MacUpdater POST_BUILD
|
||||
COMMAND /usr/bin/codesign -f -s "${MACOS_CODE_SIGNING_IDENTITY_UPDATER}" --deep --options runtime $<TARGET_BUNDLE_DIR:MacUpdater>)
|
||||
# Fix rpath
|
||||
add_custom_command(TARGET MacUpdater
|
||||
POST_BUILD COMMAND
|
||||
${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../Frameworks/"
|
||||
$<TARGET_FILE:MacUpdater>)
|
||||
endif()
|
||||
|
||||
if(MACOS_CODE_SIGNING)
|
||||
add_custom_command(TARGET MacUpdater
|
||||
POST_BUILD
|
||||
COMMAND "${CMAKE_SOURCE_DIR}/Tools/mac-codesign.sh"
|
||||
"${MACOS_CODE_SIGNING_IDENTITY}"
|
||||
"$<TARGET_BUNDLE_DIR:MacUpdater>"
|
||||
)
|
||||
endif()
|
||||
|
@ -9,11 +9,11 @@
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Dolphin.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.dolphinteam.dolphin-updater</string>
|
||||
<string>org.dolphin-emu.updater</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Updater</string>
|
||||
<string>Dolphin Updater</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
@ -49,15 +49,13 @@ const char UPDATER_LOG_FILE[] = "Updater.log";
|
||||
|
||||
std::string UpdaterPath(bool relocated = false)
|
||||
{
|
||||
std::string path(File::GetExeDirectory() + DIR_SEP);
|
||||
#ifdef __APPLE__
|
||||
if (relocated)
|
||||
path += ".Dolphin Updater.2.app";
|
||||
return File::GetExeDirectory() + DIR_SEP + ".Dolphin Updater.2.app";
|
||||
else
|
||||
path += "Dolphin Updater.app";
|
||||
return path;
|
||||
return File::GetBundleDirectory() + DIR_SEP + "Contents/Helpers/Dolphin Updater.app";
|
||||
#else
|
||||
return path + "Updater.exe";
|
||||
return File::GetExeDirectory() + DIR_SEP + "Updater.exe";
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user