Unable to delete single value name-data pair in regedit
Bug description
Ran across this while updating/writing a portion of the installers.rst doc.
Right now it seems there is no (straighforward) way to delete a specific value name-data pair from the registry.
The delete_registry_key allows deleting an entire key (which in the regedit GUI is an entire "tree" in the left panel). But what I'm referring to is a single value on the right:
Normally with a reg file you can delete a single value by doing this:
[HKEY_LOCAL_MACHINE\Software\Wine\TESTKEY]
"VNAME"=-But it appears this is impossible to replicate in Lutris. When I do this:
- task:
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wine\TESTKEY
key: 'VNAME'
value: -Lutris errors out:
yaml.scanner.ScannerError: sequence entries are not allowed here
in "<unicode string>", line 25, column 14:
value: -
^With value: \-, value: '\-', and value: "\\-" I end up with a literal - value.
And value: "\-" errors out in a different way:
yaml.scanner.ScannerError: while scanning a double-quoted scalar
in "<unicode string>", line 25, column 14:
value: "\-"
^
found unknown escape character '-'
in "<unicode string>", line 25, column 16:
value: "\-"
^I understand why this happens (YAML parser vs. string escape), but I see no direct way of doing this. Since I assume the parser can't be overridden that easily an alternative might be some replacement value, or a whole new delete_registry_value task.
The only workaround would be writing a registry file manually and using set_regedit_file.
How to Reproduce
Steps to reproduce the behavior:
- Run
lutris -d -i <sample.yaml>with the sample below - Check the terminal output
Sample:
game_slug: reg-value-test
gogslug: ''
humblestoreid: ''
installer_slug: reg-value-test-installer
name: 'Reg Value'
runner: wine
script:
game:
exe: $GAMEDIR/drive_c/windows/explorer.exe
prefix: $GAMEDIR
installer:
- task:
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wine\TESTKEY
key: 'VNAME'
value: 'VDATA'
- task:
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wine\TESTKEY
key: 'VNAME'
value: -
slug: reg-value-test-installer
version: 'Reg Value'
steamid: nullExpected behavior
Lutris should create and then delete the value.
Log output
# just demonstrating that regedit can do this
❯ WINEPREFIX=~/test/wine ~/.local/share/lutris/runtime/umu/umu-run regedit value-add.reg
…
❯ grep TESTKEY ~/test/wine/system.reg -A2
[Software\\Wine\\TESTKEY] 1789072413
#time=1dd4163a624a926
"VNAME"="VDATA"
❯ WINEPREFIX=~/test/wine ~/.local/share/lutris/runtime/umu/umu-run regedit value-rm.reg
…
❯ grep TESTKEY ~/test/wine/system.reg -A2
[Software\\Wine\\TESTKEY] 1789072486
#time=1dd4163d1b66f02
Lutris log with sample above:
❯ ./bin/lutris -d -i /home/tarulia/Development/lutris/installers/reg-value-test.yml
INFO 2026-09-10 22:36:27,056 [application.do_command_line:487]:Starting Lutris 0.5.23
INFO 2026-09-10 22:36:27,227 [gpu.get_gpus:37]:"card1" is AMD Radeon RX 7700 XT (1002:747e 1da2:c475 amdgpu) Driver 26.1.8
Cannot use /home/tarulia/.cache/radv_builtin_shaders for shader cache (not a directory)---disabling.
DEBUG 2026-09-10 22:36:27,506 [path_cache._update_missing_games:175]:Checking for missing games
DEBUG 2026-09-10 22:36:27,507 [__init__.read_script:51]:Loading script(s) from /home/tarulia/Development/lutris/installers/reg-value-test.yml
Traceback (most recent call last):
File "/home/tarulia/Development/lutris/lutris/lutris/gui/application.py", line 764, in do_command_line
installers = get_installers(
game_slug=game_slug,
installer_file=installer_file,
revision=revision,
)
File "/home/tarulia/Development/lutris/lutris/lutris/installer/__init__.py", line 64, in get_installers
return [normalize_installer(i, installer_file=installer_file) for i in read_script(installer_file)]
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/home/tarulia/Development/lutris/lutris/lutris/installer/__init__.py", line 53, in read_script
script = yaml.safe_load(local_file.read())
File "/usr/lib64/python3.14/site-packages/yaml/__init__.py", line 125, in safe_load
return load(stream, SafeLoader)
File "/usr/lib64/python3.14/site-packages/yaml/__init__.py", line 81, in load
return loader.get_single_data()
~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/yaml/constructor.py", line 49, in get_single_data
node = self.get_single_node()
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 36, in get_single_node
document = self.compose_document()
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 55, in compose_document
node = self.compose_node(None, None)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 82, in compose_node
node = self.compose_sequence_node(anchor)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 111, in compose_sequence_node
node.value.append(self.compose_node(node, index))
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib64/python3.14/site-packages/yaml/composer.py", line 64, in compose_node
if self.check_event(AliasEvent):
~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/usr/lib64/python3.14/site-packages/yaml/parser.py", line 98, in check_event
self.current_event = self.state()
~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/yaml/parser.py", line 449, in parse_block_mapping_value
if not self.check_token(KeyToken, ValueToken, BlockEndToken):
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.14/site-packages/yaml/scanner.py", line 116, in check_token
self.fetch_more_tokens()
~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/yaml/scanner.py", line 215, in fetch_more_tokens
return self.fetch_block_entry()
~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/site-packages/yaml/scanner.py", line 491, in fetch_block_entry
raise ScannerError(None, None,
"sequence entries are not allowed here",
self.get_mark())
yaml.scanner.ScannerError: sequence entries are not allowed here
in "<unicode string>", line 21, column 14:
value: -
^
DEBUG 2026-09-10 22:36:28,510 [http._request:125]:POST https://lutris.net/api/users/library?since=1789071494
INFO 2026-09-10 22:36:35,290 [application.do_shutdown:1115]:Shutting down LutrisSystem Information
Vulkan support: YES
Esync support: YES
Fsync support: YES
Wine installed: YES
Gamescope: YES
Mangohud: NO
Gamemode: YES
Steam: YES
In Flatpak: NO
[System]
OS: Fedora Linux 44
Arch: x86_64
Kernel: 7.1.13-200.fc44.x86_64
Desktop: KDE
Display Server: wayland
[Lutris]
Lutris Version: 0.5.23 (`master`)
Python Version: 3.14.7 (main, Aug 10 2026, 00:00:00) [GCC 16.1.1 20260515 (Red Hat 16.1.1-2)]
Default Wine version: ge-proton
[CPU]
Vendor: AuthenticAMD
Model: AMD Ryzen 9 5900X 12-Core Processor
Physical cores: 12
Logical cores: 24
[Memory]
RAM: 15.5 GB
Swap: 8.0 GB
[Graphics]
Vendor: AMD
OpenGL Renderer: AMD Radeon RX 7700 XT (radeonsi, navi32, ACO, DRM 3.64, 7.1.13-200.fc44.x86_64)
OpenGL Version: 4.6 (Compatibility Profile) Mesa 26.1.8
OpenGL Core: 4.6 (Core Profile) Mesa 26.1.8
OpenGL ES: OpenGL ES 3.2 Mesa 26.1.8
Vulkan Version: 1.4.341
Vulkan Drivers: AMD Radeon RX 7700 XT (RADV NAVI32) (1.4.354)Media (optional)
No response
Source: lutris/lutris