oblivioncth / CLIFp

An alternate, command-line based launcher for Flashpoint Archive
GNU Affero General Public License v3.0
22 stars 0 forks source link

[BUG] Not Working on Windows 7 as of CLIFp v0.8.1 #49

Closed Gildum closed 1 year ago

Gildum commented 1 year ago

Describe the bug Running CLIFp on Windows 7 results in a system error message pointing out the missing dll file "api-ms-win-shcore-scaling-l1-1-1.dll". This issue occurs as of CLIFp v0.8.1. Prior versions work fine.

Version (please complete the following information):

Additional context I know that CLIFp if devloped for Windows 10+, I just wanted to inform other potential windows 7 users about the issue here.

I tried searching for a solution online and managed to find the missing "api-ms-win-shcore-scaling-l1-1-1.dll" file in a forum. I put it in the Flashpoint main folder where CLIFp is located. Now when running CLIFp, another system error message appears but now listing the missing file "mfc120ud.dll". That's where I stopped my troubleshooting.

oblivioncth commented 1 year ago

There were many changes behind the scenes from 0.8 to 0.8.1:

A summary

This of course was likely not going to come without potential problems for older systems, as now seems to be the case. Qt6 officially doesn't support anything older than Windows 10 and as such I'm guessing that this is where this and most of the other dependencies come from.

Unfortunately there isn't really anything that can be done about this.

I see you got that DLL from here: https://live.paloaltonetworks.com/t5/globalprotect-discussions/missing-api-ms-win-shcore-scaling-l1-1-1-dll-on-upgrade-from-5-2/td-p/394758

The reason you get that second error is that they accidentally messed up and compiled their DLL shim in Debug configuration so it then goes looking for the debug VC++ runtimes (hence the 'd' suffix). The sad reality is though, unlike in the case that user talks about where the application needed a single symbol (function, more or less) from the missing DLL, I took a look at CLIFp on Windows 7 with dependency walker and it's missing several dozen symbols across a number of DLLs.

The few it needed from "api-ms-win-shcore-scaling-l1-1-1.dll" were somewhat easy to come up with shims for, but after that things quickly went down hill when it was clear that a number of the missing functions were heavy duty system functions that involve thread/resource management that I just don't have the experience to re-implement. Of course, even if I did it would be a huge undertaking for something that just frankly isn't worth it.

If it had turned out to just be the couple functions from that initial DLL missing I'd have gladly provided a compatibility pack, but we just didn't get that lucky.

It seems like it might be feasible to make compatibility shims for Windows 8.1 as many of the missing functions were added in 8/8.1 with only a few being from 10; however, I imagine once the few that remain on Windows 7 finally update they're going to go to 10/11 or Mac/Linux and not 8... so there isn't much point really.

Gildum commented 1 year ago

Thanks for your detailed explaination of the issue!