macos: self-contained application bundle with user files beside it (SDK bump)

This commit is contained in:
mchughalex 2026-07-21 11:01:12 +01:00
parent 25c68a89d7
commit 2b43fb2474
3 changed files with 5 additions and 5 deletions

View file

@ -48,7 +48,7 @@ Notes:
1. Download the latest release Skate3Recomp-macOS.zip from the releases page. 1. Download the latest release Skate3Recomp-macOS.zip from the releases page.
2. Extract it anywhere you like, to a folder you control. 2. Extract it anywhere you like, to a folder you control.
3. Run the game by opening the "Skate 3 Recomp" app (or "./skate3" from a terminal). The app must stay in the extracted folder next to the other files. 3. Run the game by opening the Skate3Recomp app. Game files, saves and settings are kept in the folder containing the app, so keep it in a folder you control rather than in Downloads or Applications.
4. The first time, right-click the app and choose Open, or approve it under System Settings > Privacy & Security, before macOS will allow it to run. 4. The first time, right-click the app and choose Open, or approve it under System Settings > Privacy & Security, before macOS will allow it to run.
5. Click "Select ISO" to select your legally obtained copy of Skate 3. 5. Click "Select ISO" to select your legally obtained copy of Skate 3.
6. Wait for the installer to extract the game files. 6. Wait for the installer to extract the game files.

View file

@ -339,7 +339,7 @@ std::filesystem::path DefaultRoamingUserRoot() {
} }
std::filesystem::path ResolveSkate3UserRoot(const rex::PathConfig& paths) { std::filesystem::path ResolveSkate3UserRoot(const rex::PathConfig& paths) {
const auto executable_root = rex::filesystem::GetExecutableFolder(); const auto executable_root = rex::filesystem::GetAppRootFolder();
if (std::filesystem::exists(executable_root / "portable.txt")) { if (std::filesystem::exists(executable_root / "portable.txt")) {
return executable_root; return executable_root;
} }
@ -778,7 +778,7 @@ void Skate3BaseApp::OnPostSetup() {
// content tree, and without the folder the default location is unchanged. // content tree, and without the folder the default location is unchanged.
{ {
const auto portable_saves = const auto portable_saves =
rex::filesystem::GetExecutableFolder() / std::string(kSavesDirectoryName); rex::filesystem::GetAppRootFolder() / std::string(kSavesDirectoryName);
if (std::filesystem::is_directory(portable_saves) && runtime()->kernel_state() && if (std::filesystem::is_directory(portable_saves) && runtime()->kernel_state() &&
runtime()->kernel_state()->content_manager()) { runtime()->kernel_state()->content_manager()) {
runtime()->kernel_state()->content_manager()->SetContentTypeRoot( runtime()->kernel_state()->content_manager()->SetContentTypeRoot(
@ -1271,7 +1271,7 @@ void Skate3BaseApp::InstallDlcPackages() {
} }
const auto source_dirs = const auto source_dirs =
DiscoverDlcSourceDirectories(rex::filesystem::GetExecutableFolder(), DiscoverDlcSourceDirectories(rex::filesystem::GetAppRootFolder(),
runtime()->game_data_root(), runtime()->user_data_root()); runtime()->game_data_root(), runtime()->user_data_root());
std::unordered_set<std::string> seen_packages; std::unordered_set<std::string> seen_packages;
size_t installed_count = 0; size_t installed_count = 0;

@ -1 +1 @@
Subproject commit 705b78f53e11e4a29c4f9b58ca2d041bab8ecd3d Subproject commit 3e842e62a6f9ad260399f44d9797380e53e157d0