dependencies icon indicating copy to clipboard operation
dependencies copied to clipboard

[Bug]: Installing directplay has no effect, immediately resets

Open jakobkmar opened this issue 2 years ago • 2 comments
trafficstars

Describe the bug

Installing the directplay dependency seems to work at first, but every time your start the game (e.g. Stronghold HD or Stronghold Crusader HD) it is missing again. Also it won't be detected by the game.

Expected behaviour: Installing directplay should work, it should still be installed after restarting Bottles. The game should be able to detect directplay.

To Reproduce

  1. install Stronghold Crusader HD on Steam
  2. open the Steam Proton prefix for Stronghold Crusader in Bottles
  3. go to "Dependencies"
  4. install directplay
  5. (optional step) start Stronghold Crusader HD via Bottles or Steam)
  6. observe directplay not being installed again after restarting Bottles, also see that multiplayer is not working in Stronghold Crusader

Step 5 is optional, directplay seems to be missing even after just restarting Bottles immediately after the installation.

Package

Flatpak from Flathub

Distribution

Fedora 37

Troubleshooting Logs

Official Package: true
Version: 2022.12.14.1
Display:
    X.org: true
    X.org (port): :0
    Wayland: true
Graphics:
    vendors:
        nvidia:
            vendor: nvidia
            envs:
                __NV_PRIME_RENDER_OFFLOAD: '1'
                __GLX_VENDOR_LIBRARY_NAME: nvidia
                __VK_LAYER_NV_optimus: NVIDIA_only
            icd: /usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/nvidia_icd.json:/usr/lib/i386-linux-gnu/GL/vulkan/icd.d/nvidia_icd.json
    prime:
        integrated: null
        discrete: null
Kernel:
    Type: Linux
    Version: 6.0.14-300.fc37.x86_64
Distro:
    Name: GNOME
    Version: '43'
Disk:
    Total: 16782127104
    Free: 16781963264
RAM:
    MemTotal: 31.3GiB
    MemAvailable: 25.4GiB
Bottles_envs: null

Additional context

(side-note: installing directplay worked in an earlier version of Bottles months ago, the game didn't receive any update in that time period)

I tried different runners. I tried reinstalling the game.

jakobkmar avatar Dec 26 '22 16:12 jakobkmar

Something to do with the archive_extract step. This issue is also affecting several other dependencies that use dxnt.tar.xz: devenum, dmband, dmcompos, dmime, dmloader, dmscript, dmstyle, dsdmo, dsound, dswave, l3codecx. Changing the steps in the manifest got it to work for me. I tried changing the destination only, but this was seemingly the easiest option. Rename the file:

Change this

- action: archive_extract
  file_name: dxnt.tar.xz
  url: https://proxy.usebottles.com/redistributable/dependencies/dxnt.tar.xz
  file_checksum: 53a21ef097296da1762727e5b04e3372
  file_size: 100275120
  dest: temp/dxnt/

To this:

- action: archive_extract
  file_name: dxnt.tar.xz
  rename: dxnt.tar
  url: https://proxy.usebottles.com/redistributable/dependencies/dxnt.tar.xz
  file_checksum: 53a21ef097296da1762727e5b04e3372
  file_size: 100275120
  dest: temp/dxnt/

You'd also have to go through each step that refers to the temp location and change that.

Change this

- action: copy_dll
  url: temp/dxnt.tar/dxnt/win32/
  file_name: dplaysvr.exe
  dest: win32

To this:

- action: copy_dll
  url: temp/dxnt/dxnt/win32/
  file_name: dplaysvr.exe
  dest: win32

Would it be better to see what would have changed with the dependency action 'archive_extract', or go through each manifest and change those?

Here's a log of the current behavior without any changes.

12:47:46 (INFO) Installing dependency [directplay] in bottle [saerth].
dxnt.tar.xz (100%) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (2.4 MB/2.4 MB - 5.8 MB)

patool: Extracting /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz ...
patool: running /usr/bin/tar --extract --use-compress-program xz --file /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz --directory /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar
patool: ... /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz extracted to `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar'.
12:47:47 (ERROR) Something wrong happened during extraction.
12:47:47 (ERROR) file `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar/dxnt.tar' was not found
12:47:47 (ERROR) Traceback (most recent call last):
          File "/app/share/bottles/bottles/backend/managers/dependency.py", line 514, in __step_archive_extract
            patoolib.extract_archive(tar_path, outdir=archive_path)
          File "/app/lib/python3.10/site-packages/patoolib/__init__.py", line 681, in extract_archive
            util.check_existing_filename(archive)
          File "/app/lib/python3.10/site-packages/patoolib/util.py", line 398, in check_existing_filename
            raise PatoolError("file `%s' was not found" % filename)
        patoolib.util.PatoolError: file `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar/dxnt.tar' was not found

dxnt

keenanweaver avatar Feb 22 '23 18:02 keenanweaver