blob: 08e7113b6c241b793bf6f00acea7b07ffe47abb3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/usr/bin/env bash
set -euo pipefail
set -x
exec > >(tee -i /tmp/fgmod-prefix-cleanup.log) 2>&1
log() {
echo "$*"
logger -t fgmod-prefix-cleanup "$*"
}
error_exit() {
local message="$1"
echo "❌ $message"
logger -t fgmod-prefix-cleanup "ERROR: $message"
if [[ -n "${STEAM_ZENITY:-}" ]]; then
"$STEAM_ZENITY" --error --text "$message" || true
elif command -v zenity >/dev/null 2>&1; then
zenity --error --text "$message" || true
fi
exit 1
}
managed_dir_name="optiscaler-managed"
manifest_name="manifest.env"
default_proxy="${OPTISCALER_PROXY:-${DLL:-winmm}}"
default_proxy="${default_proxy%.dll}"
support_files=(
"OptiScaler.ini"
"OptiScaler.log"
"libxess.dll"
"libxess_dx11.dll"
"libxess_fg.dll"
"libxell.dll"
"amd_fidelityfx_dx12.dll"
"amd_fidelityfx_framegeneration_dx12.dll"
"amd_fidelityfx_upscaler_dx12.dll"
"amd_fidelityfx_vk.dll"
"nvngx.dll"
"dlssg_to_fsr3_amd_is_better.dll"
"fakenvapi.dll"
"fakenvapi.ini"
"dlssg_to_fsr3.ini"
"dlssg_to_fsr3.log"
"nvapi64.dll"
"nvapi64.dll.b"
"fakenvapi.log"
"dlss-enabler.dll"
"dlss-enabler-upscaler.dll"
"dlss-enabler.log"
"nvngx-wrapper.dll"
"_nvngx.dll"
"dlssg_to_fsr3_amd_is_better-3.0.dll"
"OptiScaler.asi"
)
[[ -n "${STEAM_COMPAT_DATA_PATH:-}" ]] || error_exit "STEAM_COMPAT_DATA_PATH is required. Use this wrapper from a Steam/Proton launch option."
[[ $# -ge 1 ]] || error_exit "Usage: $0 program [program_arguments...]"
compatdata_path="$STEAM_COMPAT_DATA_PATH"
system32_path="$compatdata_path/pfx/drive_c/windows/system32"
managed_root="$compatdata_path/$managed_dir_name"
manifest_path="$managed_root/$manifest_name"
proxy_name="$default_proxy"
if [[ -f "$manifest_path" ]]; then
# shellcheck disable=SC1090
source "$manifest_path"
proxy_name="${MANAGED_PROXY:-$proxy_name}"
fi
proxy_dll="${proxy_name}.dll"
backup_dll="${proxy_name}-original.dll"
for file_name in "${support_files[@]}"; do
rm -f "$system32_path/$file_name"
done
rm -rf "$system32_path/plugins"
rm -f "$system32_path/$proxy_dll"
if [[ -f "$system32_path/$backup_dll" ]]; then
mv -f "$system32_path/$backup_dll" "$system32_path/$proxy_dll"
fi
rm -rf "$managed_root"
log "Cleaned prefix-managed OptiScaler files from $compatdata_path using proxy $proxy_name"
while [[ $# -gt 0 && "$1" == "--" ]]; do
shift
done
set +e
"$@"
exit_code=$?
set -e
exit "$exit_code"
|