Diablo II no install from script lutris

Hi, I’m already using the forum because I’ve been having a headache for several hours and I can’t find a solution to this problem.
I’m currently trying to install Diablo II with the scripts. But the installation client is frozen.

“Per to per networking is Disabled.”


If you need to add more information there is no problem, I don’t know what else needs to be added.

I’m working on this.
Debian 10 buster
Desktop: Xfce4
Kernel: 5.5
CPU: Pentium g2030
GPU: INTEL
Ram: 4gb

If there is a solution to this please ! I have already tried everything.
Thank you, folks, right away.

I’ve already solved it !
The only thing I did was to close the launcher and replace it with the one provided by Blizzard, manually, because sometimes the tracker is stuck and you have to restart the download launcher.
Just open the winetricks explorer, and install it manually and it will detect where the directory was.

1 Like

You can also cancel the install when it freezes, (click cancel in the launcher, and in the Lutris install window), and choose not to delete the game folder. If you then run the same script again with all the same options, it will resume the download. when the downloader opens.

You may have to repeat this more than once. It’s how I managed to get it installed.

Hello,

fellow D2 fan here. I’d like to help as much as I can. I’ve took a closer look at the install process and I’m having the same issue: the installer starts and then gets stuck when downloading the game.

When troubleshooting I’ve noticed a few things. The installer isn’t completely stuck: during my ~1H tinkering it managed to download 2,25MB.

This means the process is working, but extremely slow. And I may have a clue.

A quick check with strace revealed this:

openat(AT_FDCWD, "/proc/32705/stat", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
ioctl(4, TCGETS, 0x7ffe6aff6750)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
ioctl(4, TCGETS, 0x7ffe6aff6720)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
read(4, "32705 (Downloader_Diab) S 32701 "..., 8192) = 290
close(4)                                = 0
openat(AT_FDCWD, "/proc/32705/stat", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
ioctl(4, TCGETS, 0x7ffe6aff6750)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
ioctl(4, TCGETS, 0x7ffe6aff6720)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
read(4, "32705 (Downloader_Diab) S 32701 "..., 8192) = 290
close(4)                                = 0
wait4(-1, 0x7ffe6aff717c, WNOHANG, 0x7ffe6aff7180) = 0
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=100000}) = 0 (Timeout)
getpid()                                = 32701
stat("/proc/32701/task/", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
openat(AT_FDCWD, "/proc/32701/task/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
getdents(4, /* 3 entries */, 32768)     = 80
getdents(4, /* 0 entries */, 32768)     = 0
close(4)                                = 0
openat(AT_FDCWD, "/proc/32701/task/32701/children", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
ioctl(4, TCGETS, 0x7ffe6aff6720)        = -1 ENOTTY (Inappropriate ioctl for device)

I’m getting the above output constantly. I did a bit of digging and TCGETS and ENOTTY seem to be suggesting, that the Blizzard downloader and/or lutris is unable to open a file descriptor to write to because they can’t connect to a terminal. My strace-fu isn’t the strongest and I’m not that great with Linux’ internals, so correct me if I’m wrong.

https://manpages.debian.org/stretch/manpages/tty_ioctl.4.en.html
https://linux.die.net/man/4/tty_ioctl

If you take a closer look at the PIDs you’ll see, that 32701 is the lutris install script and 32705 is the Blizzard installer.

td@emerald:~$ ps aux | grep 32705
td        3767  0.0  0.0  14352  1004 pts/6    S+   23:32   0:00 grep --color=auto 32705
td       32705 16.7  0.7 1828112 62792 ?       Sl   22:19  12:13 /home/td/.cache/lutris-installers/diablo-ii/installer/Downloader_Diablo2_enUS.exe
td@emerald:~$ ps aux | grep 32701                                                                                                               
td        3065  0.0  0.0  14352  1148 pts/6    S+   23:14   0:00 grep --color=auto 32701                                                        
td       32701  0.8  0.2  89496 19504 ?        S    22:19   0:28 lutris-wrapper: /home/td/.local/share/lutris/runners/wine/lutris-5.6-2-x86_64/b
in/wine                                                                                                                                         
td@emerald:~$ ps aux                                                                                                                            
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND                                               
root         1  0.0  0.1 225580  8968 ?        Ss   maj19   0:03 /sbin/init splash                                                              
root         2  0.0  0.0      0     0 ?        S    maj19   0:00 [kthreadd]                                                                     
root         3  0.0  0.0      0     0 ?        I<   maj19   0:00 [rcu_gp]   

None of them have an assigned tty, hence the ? in the output of ps aux.

Perhaps a way to solve it is to apply the same technique as with the Warcraft III installer by @legluondunet , that seems to be using similar technology (a Blizzard client) i.e. use explorer.exe to do the dirty work?

https://lutris.net/games/install/17509/view

- task:
    args: /desktop=WarcraftIII,1024x780 "$w3"
    description: Running setup of the game. Just proceed and keep all settings at
      their defaults
    executable: $GAMEDIR/drive_c/windows/explorer.exe
    include_processes: explorer.exe
    name: wineexec
    prefix: $GAMEDIR

I’m a noob when it comes to wine so bear with me.

What do you think?

1 Like

Hello!

TLDR; Try overriding WinINet.

I decided to give it a new shot. This time I did what was recommended by jasoncollege24:

I started the installer and attached strace to the lutris wrapper process. After some initial downloading:

read(5, "\"\0\0\300\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{iov_base="<\3\2\0f\t\300\5<\0\2\0g\t\300\5<\1\2\0e\t\300\5<\t\2\0d\t\300\5"..., iov_len=72}, {iov_base=NULL, iov_len=0}, {iov_base=
"", iov_len=0}], 3) = 72
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
write(3, "\267\0\0\0\0\0\0\0\0\1\0\0d\0\1\0\0\0\0\0#\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
read(5, "\0\0\0\0\0\0\0\0d\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0
write(3, "\220\0\0\0\0\0\0\0\0\1\0\0\1\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0"..., 64) = 64
read(5, "\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
recvmsg(33, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(33, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{iov_base=";\3\5\0c\t\300\5\35\0\327\1\0\0\0\0\241\1\20\0", iov_len=20}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) =
 20
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)

the download failed:

rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0                  
mmap2(0xff0000, 2228224, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xff0000
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0                              
write(11, "\r\nhttp error code = 12029\r\n", 27) = 27                                                                                           
lstat64("/home/td/Games/diablo-ii/dosdevices/z:/home/td/.cache/lutris-installers/diablo-ii/installer/mscoree.dll", 0x32efd0) = -1 ENOENT (No suc
h file or directory)                       

Finally! An actual error code! I rejoiced :wink:

There was a bunch of tech tips on forums for companies like Cisco on how to configure your VPN by disabling things in the Internet Explorer settings panel. But with Wine that was all done (or missing).

My search has led me however to the WinINet library:

   12029       ERROR_INTERNET_CANNOT_CONNECT
               The attempt to connect to the server failed.
https://support.microsoft.com/en-us/help/193625/info-wininet-error-codes-12001-through-12156
https://docs.microsoft.com/en-us/windows/win32/wininet/about-wininet

Here:

https://community.microfocus.com/t5/LoadRunner-Professional-User/quot-HttpSendRequest-quot-failed-Windows-error-code-12029/td-p/1679615

the user recommends disabling the library:

‎2018-12-21 07:43
Re: “HttpSendRequest” failed, Windows error code=12029
Hi Malan,

try to disable the WinInet function. I had a similar error (with code 27492) and I resolved this ussue unchecked this option.

Let me now if this can help you with the problem,
Lorenzo

And here, this time for gaming:

Finally I’ve had success and now Lichdom Battlemage runs in Wine with Fullscreen Windowed mode and override: wininet

http://www.gamersonlinux.com/forum/threads/lichdom-battlemage-guide.2957/

Result:

Two things: I have a blank window so I can not accept the EULA to continue the installation. I suspect me skipping the install of wine-gecko to be the reason.

[EDIT] Yes, adding wine-gecko allowed me to accept the EULA.

@jasoncollege24 and @guvox - can you please test if the override helps you as well? Maybe I just got lucky?

1 Like

I’m not trusted enough to post 2 images in one message, so here’s the second one.

On the very bottom you can see that I added an override for wininet:

due to a hardware incompatibility with my new system, I’ve gone back to Windows, until it’s cleared up in a future Linux kernel. This was literally days after I posted my reply here. This means I can’t run this check for you.