Matoking / protontricks

A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
GNU General Public License v3.0
1.66k stars 36 forks source link

Protontricks exits 0 on failure #126

Closed ralgar closed 2 years ago

ralgar commented 2 years ago

Describe the bug When installing vcrun2019, which usually fails due to sha256 mismatch, protontricks exits zero when it should exit with a non-zero code. I'm unsure whether this bug affects other scenarios or not.

To Reproduce Steps to reproduce the behavior:

  1. Run command protontricks 489830 vcrun2019
  2. Command fails but exits 0 anyway

Expected behavior Command should exit with a non-zero return code since it failed to complete

System (please complete the following information):

Additional context

I'm writing a script which configures Bethesda games for modding, and this issue breaks the return logic for installing verbs.

protontricks (INFO): Found Steam directory at /home/user/.steam/steam. You can also define Steam directory manually using $STEAM_DIR
protontricks (INFO): Using default Steam Runtime at /home/user/.steam/root/ubuntu12_32/steam-runtime
protontricks (INFO): WINETRICKS environment variable is not available. Searching from $PATH.
protontricks (INFO): Found 1 Steam library folders
protontricks (INFO): Currently logged-in Steam user: REDACTED
protontricks (INFO): Found 0 Steam shortcuts running using Steam compatibility tools
protontricks (INFO): Found active compatibility tool: Proton 5.0
protontricks (INFO): Active compatibility tool is a Proton installation
protontricks (INFO): WINE environment variable is not available. Setting WINE environment variable to Proton bundled version
protontricks (INFO): WINESERVER environment variable is not available. Setting WINESERVER environment variable to Proton bundled version
protontricks (INFO): Created Steam Runtime Wine binary directory at /home/user/.cache/protontricks/proton/Proton 5.0/bin
protontricks (INFO): Attempting to run command ['/usr/bin/winetricks', 'vcrun2019']
SSL_INIT
Executing mkdir -p /home/user/.local/share/Steam/steamapps/compatdata/489830
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20210206-next - sha256sum: 0769bbcdbd92c407f4eacaa85acc1339f607dbeafe2febd1be0912034c7af3a1 with wine-5.0-655-g2409bd1 and WINEARCH=win64
Executing w_do_call vcrun2019
Executing mkdir -p /home/user/.local/share/Steam/steamapps/compatdata/489830
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_vcrun2019
------------------------------------------------------
warning: ucrtbase.dll is no longer included in vcrun2019. For details see: https://github.com/Winetricks/winetricks/issues/1770
------------------------------------------------------
Using native,builtin override for following DLLs: api-ms-win-crt-private-l1-1-0 api-ms-win-crt-conio-l1-1-0 api-ms-win-crt-heap-l1-1-0 api-ms-win-crt-locale-l1-1-0 api-ms-win-crt-math-l1-1-0 api-ms-win-crt-runtime-l1-1-0 api-ms-win-crt-stdio-l1-1-0 api-ms-win-crt-time-l1-1-0 atl140 concrt140 msvcp140 msvcp140_1 msvcp140_2 msvcr140 vcomp140 vcruntime140
Executing /home/user/.cache/protontricks/proton/Proton 5.0/bin/wine regedit C:\windows\Temp\override-dll.reg
wineserver: using server-side synchronization.
Executing /home/user/.cache/protontricks/proton/Proton 5.0/bin/wine64 regedit C:\windows\Temp\override-dll.reg
wineserver: using server-side synchronization.
------------------------------------------------------
warning: Checksum for /home/user/.cache/winetricks/vcrun2019/vc_redist.x86.exe did not match, retrying download
------------------------------------------------------
Executing cd /home/user/.cache/winetricks/vcrun2019
Downloading https://aka.ms/vs/16/release/vc_redist.x86.exe to /home/user/.cache/winetricks/vcrun2019
--2021-11-19 13:25:43--  https://aka.ms/vs/16/release/vc_redist.x86.exe
SSL_INIT
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving aka.ms (aka.ms)... 23.74.155.80
Connecting to aka.ms (aka.ms)|23.74.155.80|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.visualstudio.microsoft.com/download/pr/73b58d04-0049-47d1-9f54-1784792c71cd/80C7969F4E05002A0CD820B746E0ACB7406D4B85E52EF096707315B390927824/VC_redist.x86.exe [following]
--2021-11-19 13:25:43--  https://download.visualstudio.microsoft.com/download/pr/73b58d04-0049-47d1-9f54-1784792c71cd/80C7969F4E05002A0CD820B746E0ACB7406D4B85E52EF096707315B390927824/VC_redist.x86.exe
SSL_INIT
Resolving download.visualstudio.microsoft.com (download.visualstudio.microsoft.com)... 2606:2800:11f:7de:d31:7db:168f:1225, 93.184.215.201
Connecting to download.visualstudio.microsoft.com (download.visualstudio.microsoft.com)|2606:2800:11f:7de:d31:7db:168f:1225|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13780552 (13M) [application/octet-stream]
Saving to: ‘vc_redist.x86.exe’

vc_redist.x86.exe                                    100%[===================================================================================================================>]  13.14M  51.2MB/s    in 0.3s

2021-11-19 13:25:44 (51.2 MB/s) - ‘vc_redist.x86.exe’ saved [13780552/13780552]

Executing cd /home/user/Projects/ansible/home-server
------------------------------------------------------
warning: sha256sum mismatch! Rename /home/user/.cache/winetricks/vcrun2019/vc_redist.x86.exe and try again. Alternatively, use --force to ignore this check.
------------------------------------------------------
❯ echo $?
0
Matoking commented 2 years ago

I've pushed a fix to master to make Protontricks use the return code from the executed user command.