Handle obsolete runners more safely.

Resolves #4863

In case one winds up in the sidebar, it will have no actions.
This commit is contained in:
Daniel Johnson 2023-05-18 17:00:13 -04:00
parent 1fd460b8e3
commit 4d4d7f6319
2 changed files with 10 additions and 2 deletions

View file

@ -15,6 +15,7 @@ from lutris.gui.dialogs import ErrorDialog
from lutris.gui.dialogs.runner_install import RunnerInstallDialog
from lutris.gui.widgets.utils import has_stock_icon
from lutris.installer.interpreter import ScriptInterpreter
from lutris.runners import InvalidRunner
from lutris.services import SERVICES
from lutris.services.base import AuthTokenExpired, BaseService
@ -212,7 +213,11 @@ class RunnerSidebarRow(SidebarRow):
# Creation is delayed because only installed runners can be imported
# and all visible boxes should be installed.
self.runner = runners.import_runner(self.id)()
try:
self.runner = runners.import_runner(self.id)()
except InvalidRunner:
return entries
if self.runner.multiple_versions:
entries.append((
"system-software-install-symbolic",

View file

@ -120,7 +120,10 @@ def get_runner_human_name(runner_name):
names."""
if runner_name:
if runner_name not in _cached_runner_human_names:
_cached_runner_human_names[runner_name] = import_runner(runner_name)().human_name
try:
_cached_runner_human_names[runner_name] = import_runner(runner_name)().human_name
except InvalidRunner:
_cached_runner_human_names[runner_name] = runner_name # an obsolete runner
return _cached_runner_human_names[runner_name]
return ""