Battle.Net Client doesn't start on Linux anymore

When I compared the newest qwindow.dll vs older version I had (13763), at least for me they are exactly same file but still coping from older directory got battle.net client working again.

As I had kept original version from that qwindow.dll file I returned it back and client broke again then I tried following in newest Battle net platforms directory (~/.wine/drive_c/Program Files (x86)/Battle.net/Battle.net.13801/platforms) :
mv qwindows.dll qwindows.dll-original
cp qwindows.dll-original qwindows.dll

And some reason that is enough for Battle net client starting to work again. Don’t ask from me why as it’s same file just copied.

7 Likes

I created a bat file and used the “set” command to set the variable and then launched battlenet from the same bat file. This was done inside the wine enviroment.

I confirm Cefö workaround is working :grinning:
Maybe because there are 2 files instead of one in platforms folder ?
Thank you i can now use Battle.net launcher again

Because I uninstalled and re-installed the client I don’t have the older files to replace anymore :frowning: got only the folder Battle.net.13801

I got a copy of the qwindows.dll file from a friend from an older version and replaced my 13801 file.

It’s weird, but that works here, too. Perhaps some file integrity check is buggy and another modification date works around it. So guys, don’t try to get another file, just try Cefö’s hint.

2 Likes

It worked, I did what he said and it works now, this is really weird because those two commands aren’t that special, I wonder why.

I couldn’t give up so I dug deeper and figured out the qwindows.dll file has an extended attribute set:

 $ getfattr *
 # file: qwindows.dll
 user.DOSATTRIB

 $ getfattr -n user.DOSATTRIB *
 # file: qwindows.dll
 user.DOSATTRIB="0x2"

For comparison, the older Bnet version has a different value:

$ getfattr -n user.DOSATTRIB *
# file: qwindows.dll
user.DOSATTRIB="0x2020"

Not sure why but for some awkward reason this makes the file hidden from Bnet, probably by setting the equivalent of HIDDEN flag on FAT/NTFS filesystems. As an extended attribute the flag is removed on copy so that’s why copying the file works, but the correct and more straightforward solution would be to remove the attribute directly by running:

$ setfattr -x user.DOSATTRIB qwindows.dll

22 Likes

This here fixed the problem for me.
Thanks a lot! :smiley:

1 Like

This thread is 2 weeks old, but on my end it broke today. Anyways, here’s some additional info.
Old attributes:

0x2020 = 0x20 + 0x2000 = ATTR_ARCHIVE + ATTR_NOT_CONTENT_INDEXED

New attributes:

0x2 = ATTR_HIDDEN

That’s why it breaks and it should even break on Windows (in theory).

I’m getting the same error as of today. using Battle.net.13696. When I try the fix it gives me:

setfattr: qwindows.dll: No such attribute

So clearly, the attribute there isn’t the issue but it still gives the same error. I also tried copying and moving but no dice. Any idea on how to further troubleshoot?

I just did a
find -exec setfattr -x user.DOSATTRIB {} \;
inside the Battle.net folder to recursively remove the attribute from everything in there, seems to work for me. Not sure if doing that can potentially break anything else though.

5 Likes

Do as Cefö said, this solution still works.

1 Like

New update of /Battle.net.13859/ and time to remove attributes again.

Safe approach: find . -execdir setfattr -x user.DOSATTRIB {} \;
Specific approach: find . -name qwindows.dll -execdir setfattr -x user.DOSATTRIB {} \;

Both inside your local Battle.net folder.

1 Like

Or run “Wine File”, navigate C:\Program Files (x86)\Battle.net\Battle.net.13xxx\platforms folder, right click Properties and remove mark from qwindows.dll Hidden checkbox

2 Likes

Why is it set as hidden though? It’s not set on Windows when installed under Windows.

And again!
/.wine/drive_c/Program Files (x86)/Battle.net/Battle.net.13894/platforms/

but only change is, with Plasma KDE 5.26.4 Dolphin does not show that properties (?)
F4
getfattr *

file: qwindows.dll

user.DOSATTRIB

then
setfattr -x user.DOSATTRIB *

1 Like

I was hit as well today.

Why is it marked as hidden anyway? What possible purpose does this serve? It’s completely bizarre.

Either way, we should have this incoming:

It’ll be fixed sooner or later.

But why? Why is this a thing?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.