Commit Graph

27 Commits

Author SHA1 Message Date
Matthias Moninger 62b0a5edfe
Build with link time code generation only on the develop branch 2023-03-26 16:50:18 +02:00
Michał Janiszewski 3bc5c6c563 Introduce MSVC ARM64 platform 2022-05-07 23:48:27 +02:00
Ted John 6158d014ff
Make openrct2-win project the default startup project
? Yes, project[1] is always made the default startup project in a solution.
2020-08-31 21:00:15 +02:00
Ted John a8b5304786
Remove exe / com wrapper around openrct2.dll for Windows (#10727)
We get repeated reports of people saying the game is incorrectly reported as a virus. It is becoming more inconvenient for players and even myself, because when we attempt to download a build, it is immediately deleted by scanners (including the default for Windows: Windows Defender).

One scanner is not too much of an issue, but the game is flagged by almost half of available scanners as reported by VirusTotal.

So why is it being flagged?

Windows has a very annoying concept, the subsystem for a binary. The console subsystem allows stdin / stdout as you would expect, just like posix. Unfortunately if a user runs a console subsystem binary from the desktop or explorer, the game will be opened under conhost and thus you get a console showing alongside the game window. This is not a good user experience for most players. To resolve this, you can use the windows subsystem, but this will detach stdin and stdout immediately on launch. There are hacks that can be done in code to allocate a new console but I found this to not work very well with stdin or other terminal emulators.

My solution to the problem was to have two binaries: openrct2.exe and openrct2.com. Both are executable but openrct2.exe is windows subsystem, openrct2.com is console subsystem. The desktop shortcut opens openrct2.exe with no console window showing. Typing openrct2 on the command line will execute openrct2.com (as .com has higher PATH precedence than .exe by default) with working stdin and stdout. In order to reduce the size, I have the entire game inside openrct2.dll and then supply two tiny wrapper EXEs that simply route main(...) into the DLL.

These wrapper EXEs are the problem, they are very small and do nothing but call into a DLL, this must match virus signatures too closely and their size probably reduces the data available for the scanner to analyse.

So as I can not find any other way of achieving my goal of a cli and gui version of OpenRCT2, this changes the build to publish openrct2 as a single executable (rather than a DLL + wrapper EXE), and then duplicate the entire ~10MB exe again and flip the subsystem flag. The installer and zip size won't be affected as this extra size will be completely compressed out, but when unpacked will lead to an extra ~10MB on disc. But I think it is a fair compromise.

VirusTotal now reports all artefacts as safe, for now anyway.
2020-02-18 11:35:27 +00:00
Ted John d8d762dcb9 Build cli, win and tests projects sequentially, not in parallel (#10190)
There is probably some kind of file locking issue with openrct2.lib which stops the win project from building during re-build. Only let the two lib projects build in parallel.
2019-11-04 15:51:10 +01:00
Ted John 550d134146 Build libopenrct2 and libopenrct2ui simultaneously 2018-06-01 09:37:49 +02:00
Ted John a4fe3962f0 Add libopenrct2 as a dependency of openrct2-cli in VS solution 2018-03-27 22:16:13 +01:00
ZehMatt bf0bc77dfc Refactor SetParkEntranceFeeAction to use constructor for parameters.
Add RideSetNameAction.
Support of string serialisation.
Check requested status for ride in Query.
Add RideDemolishAction.
2017-10-05 10:42:44 +02:00
ZehMatt 995c0d0a6b Refactor SetParkEntranceFeeAction to use constructor for parameters.
Add RideSetNameAction.
Support of string serialisation.
2017-10-05 10:42:44 +02:00
Ted John 906b71796c Remove testpaint for VS 2017-06-13 12:23:26 +01:00
Ted John 6375e01f3f Add VS project for CLI only build 2017-05-29 22:38:42 +02:00
Ted John 9c904db1c3 Add UI src project 2017-05-29 22:38:41 +02:00
Ted John c2dbd9968f Make openrct2-win the default startup project in VS
It appears that the second project listed in the solution file is the default startup project. This should make it more convenient for new developers.
[ci skip]
2017-02-23 18:08:22 +00:00
Ted John b7b58817bb Rename openrct2-lib to libopenrct2 2017-01-10 17:29:03 +00:00
Ted John 7d6ea1f5cd Create DLL for openrct2 with win as a wrapper 2017-01-10 17:29:03 +00:00
Ted John 73b21b5880 Convert openrct2 to static library 2017-01-10 17:29:02 +00:00
Ted John 67c0ed8a2f Add new windows project 2017-01-10 17:29:02 +00:00
Ted John a2e3f10ca1 Update VS project files 2017-01-04 18:28:37 +00:00
Ted John 4ccb50409b Add test configurations 2016-12-02 02:49:50 +00:00
Ted John a08af1a253 Get tests to build for Windows and VS 2016-12-02 00:34:14 +00:00
Ted John f680f84523 Update openrct2.sln
VS keeps making this change, we will just have to let it be and not have x64 default platform.
2016-10-16 20:22:46 +01:00
Ted John 96b796a78c msbuild: Build x64 by default 2016-10-15 22:44:24 +01:00
Ted John de5aa4b7d6 Fix VS solution and test 2016-09-16 19:44:43 +02:00
Ted John c55d72412c Add x64 VS project configurations 2016-08-07 01:47:18 +01:00
IntelOrca df279b178b clean up VS solution and project 2016-01-09 21:50:04 +00:00
IntelOrca 00f0f06e83 update VS project to use new dependencies 2016-01-09 21:50:03 +00:00
IntelOrca cb5dab3e57 move projects and add environment setup script 2015-12-22 21:31:26 +00:00
Renamed from projects/openrct2.sln (Browse further)