mirror of
https://github.com/derrod/legendary.git
synced 2026-09-19 23:58:34 +00:00
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
This commit is contained in:
parent
b4d75f143a
commit
4c2ed98689
|
|
@ -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}')
|
||||
|
|
|
|||
Loading…
Reference in a new issue