From 4c2ed98689f6289801642f8c99aeee4ce303fc27 Mon Sep 17 00:00:00 2001 From: Zyhloh Date: Sat, 29 Aug 2026 23:22:36 -0400 Subject: [PATCH] Re-check required install tags when updating an installed game Install tags are written to config on first install and never looked at again, so a tag Epic adds later never makes it into an existing install. The next update then deletes the files for it, since they're no longer covered by the stored list, and verify filters by that same list so it reports the install as healthy. On Fortnite this drops pakchunk100iad-WindowsClient.uondemandtoc, which is the only way the game can reach the on-demand container holding glider assets, and pakchunk29-WindowsClient (FatCosmo). Cosmetics fail to load in game, with or without an error depending on which is missing. Fetch the SDL data on update as well and add any required tags that aren't in the stored list. Only ever adds, so optional packs the user deselected are left alone. Ref #711 --- legendary/cli.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/legendary/cli.py b/legendary/cli.py index 45bedf0..35af875 100644 --- a/legendary/cli.py +++ b/legendary/cli.py @@ -973,6 +973,14 @@ class LegendaryCLI: logger.error(f'Unable to get SDL data for {sdl_name}') else: args.install_tag = config_tags.split(',') + # config tags are from install time, Epic may have added required tags since then + sdl_data = self.core.get_sdl_data(sdl_name, platform=args.platform) + if sdl_data and '__required' in sdl_data: + new_tags = [t for t in sdl_data['__required']['tags'] if t not in args.install_tag] + if new_tags: + logger.info(f'Adding new required install tags: {", ".join(t for t in new_tags if t)}') + args.install_tag.extend(new_tags) + self.core.lgd.config.set(game.app_name, 'install_tags', ','.join(args.install_tag)) elif args.install_tag and not game.is_dlc and not args.no_install: config_tags = ','.join(args.install_tag) logger.info(f'Saving install tags for "{game.app_name}" to config: {config_tags}')