summaryrefslogtreecommitdiff
path: root/defaults/assets/fgmod.sh
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2026-05-19 11:43:14 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2026-05-19 11:43:14 -0400
commitef0b58b8836e6e53b0a32d569159f769853413e5 (patch)
treee130ab8779b72e80094476322b2a912cc4e74517 /defaults/assets/fgmod.sh
parent94d1f366e5d7c7f8860000cce73643b2b8cfb0dd (diff)
downloadDecky-Framegen-fix/proxy-backup-idempotency.tar.gz
Decky-Framegen-fix/proxy-backup-idempotency.zip
fix: preserve proxy dll backups on repatchfix/proxy-backup-idempotency
Diffstat (limited to 'defaults/assets/fgmod.sh')
-rwxr-xr-xdefaults/assets/fgmod.sh62
1 files changed, 60 insertions, 2 deletions
diff --git a/defaults/assets/fgmod.sh b/defaults/assets/fgmod.sh
index 8d0b77b..ed8aaf5 100755
--- a/defaults/assets/fgmod.sh
+++ b/defaults/assets/fgmod.sh
@@ -96,8 +96,66 @@ logger -t fgmod "Target directory: $exe_folder_path"
logger -t fgmod "Using DLL name: $dll_name"
logger -t fgmod "Preserve INI: $preserve_ini"
-# === Cleanup Old Injectors ===
-rm -f "$exe_folder_path"/{dxgi.dll,winmm.dll,nvngx.dll,_nvngx.dll,nvngx-wrapper.dll,dlss-enabler.dll,OptiScaler.dll}
+proxy_backup_files=(
+ "dxgi.dll"
+ "winmm.dll"
+ "dbghelp.dll"
+ "version.dll"
+ "wininet.dll"
+ "winhttp.dll"
+ "OptiScaler.asi"
+)
+
+cleanup_files=(
+ "${proxy_backup_files[@]}"
+ "OptiScaler.dll"
+ "nvngx.dll"
+ "_nvngx.dll"
+ "nvngx-wrapper.dll"
+ "nvngx.ini"
+ "dlss-enabler.dll"
+ "dlss-enabler-upscaler.dll"
+ "fakenvapi.log"
+ "OptiScaler.log"
+ "dlssg_to_fsr3.log"
+ "dlssg_to_fsr3_amd_is_better-3.0.dll"
+)
+
+is_bundled_proxy_copy() {
+ local existing_file="$1"
+ local bundled_copy="$fgmod_path/renames/$(basename "$existing_file")"
+ [[ -f "$existing_file" && -f "$bundled_copy" ]] && cmp -s "$existing_file" "$bundled_copy"
+}
+
+has_patch_fingerprint() {
+ local fingerprint
+ for fingerprint in "FRAMEGEN_PATCH" "OptiScaler.ini" "fakenvapi.dll" "fakenvapi.ini" "dlssg_to_fsr3_amd_is_better.dll" "D3D12_Optiscaler"; do
+ [[ -e "$exe_folder_path/$fingerprint" ]] && return 0
+ done
+ return 1
+}
+
+# === Backup Pre-existing Proxy DLLs Before Cleanup ===
+for dll in "${proxy_backup_files[@]}"; do
+ existing_path="$exe_folder_path/$dll"
+ backup_path="$exe_folder_path/$dll.b"
+ if [[ -f "$existing_path" && ! -f "$backup_path" ]]; then
+ if has_patch_fingerprint || is_bundled_proxy_copy "$existing_path"; then
+ logger -t fgmod "Skipping backup for managed/stale proxy copy: $dll"
+ else
+ mv -f "$existing_path" "$backup_path"
+ echo " Backed up pre-existing $dll"
+ logger -t fgmod "Backed up pre-existing proxy file: $dll"
+ fi
+ fi
+done
+unset existing_path backup_path fingerprint
+
+# === Cleanup Old Injectors / Legacy OptiScaler Artifacts ===
+for cleanup_file in "${cleanup_files[@]}"; do
+ rm -f "$exe_folder_path/$cleanup_file"
+done
+unset cleanup_file
# === Optional: Backup Original DLLs ===
original_dlls=("d3dcompiler_47.dll" "amd_fidelityfx_dx12.dll" "amd_fidelityfx_framegeneration_dx12.dll" "amd_fidelityfx_upscaler_dx12.dll" "amd_fidelityfx_vk.dll")