fix: never leave Steam a file it would reinstall itself over
The patch that keeps the script's length was the good path and appending was
the fallback, with -noverifyfiles on everything that starts Steam to cover for
it. That cover does not exist.
Steam checks its files at the shutdown it runs itself, not only at a start
somebody handed arguments to, and that run carries no -noverifyfiles whatever
the session was started with. One wrong length there costs the whole client
package downloaded, extracted and installed again - and the client quits at the
end of it instead of coming up, which is the "Steam just closed itself" that
this was seen as:
BVerifyInstalledFiles: steamwebhelper.sh is 130 bytes, expected 84
Update wird heruntergeladen ... Paket wird extrahiert ...
Aktualisierung abgeschlossen, Steam wird geladen ... Shutdown
So the flag now either fits in the space the comments give back or it is not
written at all, and the status screen says Steam is not patched. No autoscroll
in the interface is a far smaller thing than a client that reinstalls itself.
With no growing patch left to prop up, -noverifyfiles has nothing to do and is
gone with everything that carried it: Steam's launcher entry, its autostart
entry, the shortcuts on the desktop and the ones it writes for single games.
Steam repairs its own installation again. An installation from an older version
is taken back once through the flag scheme, and a patch that version appended
is rebuilt to fit at the next apply - or taken back, if the comments cannot pay
for it.
This commit is contained in:
1 parent
c1841ec169
commit
dcdf2c1df3
11 files changed
+135
-260
No files matched your search
+10
-22
@@ -103,7 +103,9 @@ mca_apply() {
|
||||
mca_desktop_apply "$id" "$file" "$(mca_flags "$kind")"
|
||||
;;
|
||||
steam)
|
||||
mca_steam_desktop_apply "$id" "$file" "$packaging"
|
||||
# Nothing is done to the entry itself: what Steam needs is
|
||||
# in its own installation, and the same patch serves every
|
||||
# way of starting the client.
|
||||
if (( ! steam_done )); then
|
||||
mca_steam_apply
|
||||
steam_done=1
|
||||
@@ -118,30 +120,16 @@ mca_apply() {
|
||||
mca_steam_apply
|
||||
fi
|
||||
|
||||
# The shortcuts Steam writes for single games. They are not applications
|
||||
# and are not offered as ones, but starting a game with Steam closed is a
|
||||
# Steam start like any other: without the switch the client finds the
|
||||
# patched helper script, puts its own back, and the interface loses
|
||||
# autoscroll for the rest of the session.
|
||||
if [[ $CFG_STEAM == yes ]]; then
|
||||
for i in "${!MCA_STEAM_LINKS[@]}"; do
|
||||
mca_steam_desktop_apply "${MCA_STEAM_LINKS[i]}" \
|
||||
"${MCA_STEAM_LINK_FILES[i]}" "${MCA_STEAM_LINK_PACK[i]}"
|
||||
done
|
||||
fi
|
||||
|
||||
# Steam's autostart entry carries Steam's own switch and follows the Steam
|
||||
# setting, not this one - leaving it out while Steam is patched is what puts
|
||||
# the client in an update loop - so both are checked inside.
|
||||
if [[ $CFG_AUTOSTART == yes || $CFG_STEAM == yes ]]; then
|
||||
# Autostart entries. A Chromium application that starts itself at login
|
||||
# points straight at its binary and never reads the entry in the menu, so
|
||||
# Discord at login used to behave differently from Discord from the menu.
|
||||
if [[ $CFG_AUTOSTART == yes ]]; then
|
||||
mca_autostart_apply
|
||||
fi
|
||||
|
||||
# Shortcuts on the desktop itself. Nothing above has seen them - the XDG
|
||||
# search path does not go there - and a game started from one starts Steam
|
||||
# without its switch, which is the difference between autoscroll working
|
||||
# and autoscroll working most of the time. Each entry is gated on its own,
|
||||
# so there is nothing to check out here.
|
||||
# Shortcuts on the desktop itself, which nothing above has seen: the XDG
|
||||
# search path does not go there. Each entry is gated on its own, so there is
|
||||
# nothing to check out here.
|
||||
mca_shortcuts_apply
|
||||
|
||||
[[ $CFG_SPOTIFY == yes ]] && mca_spotify_apply
|
||||
|
||||
Reference in new issue
Block a user