diff --git a/source/install.c b/source/install.c index 8022b15..5510805 100644 --- a/source/install.c +++ b/source/install.c @@ -764,7 +764,7 @@ int perform_installation(omninx_variant_t pack_variant, install_mode_t mode) { install_set_color(COLOR_YELLOW); gfx_printf("Schritt 2: Dateien kopieren...\n"); install_set_color(COLOR_WHITE); - res = update_mode_install(pack_variant); + res = update_mode_install(pack_variant, true); if (res != FR_OK) return res; install_check_and_clear_screen_if_needed(); diff --git a/source/install.h b/source/install.h index 04f18b3..0b61a05 100644 --- a/source/install.h +++ b/source/install.h @@ -18,7 +18,8 @@ int perform_installation(omninx_variant_t pack_variant, install_mode_t mode); // Update mode operations (install_update.c) int update_mode_cleanup(omninx_variant_t variant); -int update_mode_install(omninx_variant_t variant); +/* offload_aware_switch: true = update (preserve .offload), false = clean (normal copy) */ +int update_mode_install(omninx_variant_t variant, bool offload_aware_switch); int cleanup_staging_directory(omninx_variant_t pack_variant); // Remove other OmniNX staging directories (Standard/Light/OC) that exist, except the one just installed int cleanup_other_staging_directories(omninx_variant_t installed_variant); diff --git a/source/install_clean.c b/source/install_clean.c index 40960b3..82fab64 100644 --- a/source/install_clean.c +++ b/source/install_clean.c @@ -107,9 +107,9 @@ int clean_mode_restore(void) { return res; } -// Clean mode: Install files (reuse update mode install) +// Clean mode: Install files (reuse update copy logic, but normal switch copy – no .offload preservation) int clean_mode_install(omninx_variant_t variant) { - return update_mode_install(variant); + return update_mode_install(variant, false); } // Remove other staging directories (OmniNX Standard/Light/OC) that exist on SD diff --git a/source/install_update.c b/source/install_update.c index cf04d52..7de8036 100644 --- a/source/install_update.c +++ b/source/install_update.c @@ -73,8 +73,9 @@ int update_mode_cleanup(omninx_variant_t variant) { return FR_OK; } -// Update mode: Copy files from staging -int update_mode_install(omninx_variant_t variant) { +// Update/Clean mode: Copy files from staging. +// offload_aware_switch: true = update (preserve .overlays/.offload, .packages/.offload); false = clean (normal copy). +int update_mode_install(omninx_variant_t variant, bool offload_aware_switch) { int res; const char* staging = get_staging_path(variant); char src_path[256]; @@ -103,7 +104,10 @@ int update_mode_install(omninx_variant_t variant) { if (res != FR_OK && res != FR_NO_FILE) return res; s_printf(src_path, "%s/switch", staging); - res = folder_copy_switch_update_offload_aware(src_path, "sd:/", "switch/"); + if (offload_aware_switch) + res = folder_copy_switch_update_offload_aware(src_path, "sd:/", "switch/"); + else + res = folder_copy_with_progress_v2(src_path, "sd:/", "switch/"); if (res != FR_OK && res != FR_NO_FILE) return res; s_printf(src_path, "%s/warmboot_mariko", staging);