LRFLEW / OpenRCT2Launcher

An Open Source Launcher & Updater for OpenRCT2
MIT License
200 stars 20 forks source link

Attempt at fixing OpenSSL in AppVeyor #46

Closed Gymnasiast closed 5 years ago

Gymnasiast commented 5 years ago

OpenSSL should be available, according to https://help.appveyor.com/discussions/questions/1132-openssl-installation-issues and if I read it correctly.

LRFLEW commented 5 years ago

You are right about appveyor including OpenSSL as part of their build system, and I used to use it directly for the builds. The problem is the builds themselves. Last I checked, they were built with an older version of Visual Studio, which caused a complication with providing the redistributable installer. I had switched to my own build of OpenSSL to force them to use the same redistributable and avoid issues. We need to check the binaries that appveyor uses before trying to merge this.

LRFLEW commented 5 years ago

Could you rebase this? I fixed the rest of the Windows build (I think), and I want to check the artifact from the PR build before this gets merged to test which redistributable is used by OpenSSL.

LRFLEW commented 5 years ago

Unfortunately, this does have the issue that I feared. Looking at the AppVeyor artifacts, you can see that the application and Qt load VCRUNTIME140.dll, which is part of the Visual Studio 2015/2017 redistributable, while the OpenSSL binaries load MSVCR120.dll, which is part of the Visual Studio 2013 redistributable. Since the installer only includes/runs the 2017 redistributable installer (and adding the 2013 one would be impractical and a bad idea), this can cause runtime issues for users. (#5)

Qt5 5.11 (which is what it's using now) should be able to support OpenSSL 1.1.0 or 1.1.1. Based on my tests with the source that AppVeyor uses, switching to this might fix the issue. Try changing the path to use OpenSSL 1.1.1 (as that's the LTS version), and I can look at the artifacts again. (Note, OpenSSL 1.1.X changes the DLL names)

LRFLEW commented 5 years ago

So, we have a problem. Based on what I can tell from my research, OpenSSL 1.1.X support in Qt5 requires a compile-time flag that isn't set in the official release. I'm expecting this to be changed in the near future, but for now, we either need to build Qt from source ourselves, or use another source for OpenSSL (or build it ourselves). I think the best option at this point is to use our own OpenSSL build, like it is currently trying to do without this PR. The problem is that AppVeyor no longer holds on to artifacts indefinitely. I think the best way of doing it now would be to use GitHub releases, as I'm using a mirror of the official Git repository to do the builds with CI already. I'll work on this.