AntiMicroX/antimicrox

Restore Windows support

pktiuk opened this issue ยท 33 comments

This project requires installer for Windows.

Original antimicro was compiled on Windows, but this fork doesn't have this feature yet.
Most of required components are already included in antimicro's repository (I think it would be a good point to start).

It would be nice to also add portable version of AntiMicroX, it was done there

Things to do:

  • compile AntimicroX on Windows #220
  • Restore most of functionalities for Windows #225
    • for now, support for vmulti input method will be disabled
  • Build Windows installer #237
  • Add CI for Windows to avoid breaking compatibility. #223
    • (optional) Add building and uploading exe to github actions on release
  • Ensure that config migration works properly in Windows #266
  • Add instruction for building to docs #265

This issue is migrated of original issue juliagoda/antimicroX#131 from legacy AntiMicroX repo.

โš ๏ธ We are looking for developers familiarized with Windows for this one, because our team consists mostly of Linux users/developers.

While looking around for #32 I discovered this.

We need to learn what the original antimicro used as output library that was dropped in favor of Linux, and need to restore that event handler. See here.

Maybe we should stick to QT-based input methods, just like Qt Virtual Keyboard.
Maybe there is also a class for controlling mouse movement. ๐Ÿค”

Are you sure that you can generate OS input events with that? It just looks like... well, a virtual keyboard that the user can interact with.

It is virtual keyboard, but we could "borrow" some libraries used by this app :)

In accordance with the wishes of the respected developer, I would like to ask about the progress of work on the Windows version. Yes, I've been using Windows to play games for some time, because unfortunately Wine does not fully meet my expectations. Some games work tragically on Wine so I had to apologize with Windows and install it after 17 years. I would be delighted if I could use the same program on two platforms and use the same profiles. Don't treat this as a rush, I just want to know if it makes any sense for me to wait or better to look for an alternative.

Currently, there is no measurable progress in restoring Windows support, now we are investigating possibilities of using more universal (independent on operating system) qt libraries, but while dealing with other issues we are still thinking about avoiding further breaking app for Windows (like avoiding deletion of default icons used by app, because QIcon::fromTheme won't work properly with Windows without defined fallback option).

This is still our top priority, but I am not able to deal with this task without preparations and getting familiar with the architecture of AntiMicroX, which is not as small and simple app as end-users may see it.
I am going to familiarize with structure of this project by fixing its bugs, cleaning its code/configs/files and (probably) improving logging to easier investigate problems with apps (I think it would be great to use multiple logs level in app, it would make debugging easier, because enabling all of logs gives huge output which is difficult to read)

take a look at https://github.com/Tylemagne/Gopher360 the code might help?

Starting to try and install antimicrox on Windows... argh... :)

I set up QT Creator on my Windows, and first tried to build the original antimicro using the build instructions there. It found the SDL DLL, compiled, but failed miserably during linking.
I have 32 bit cmake, QT (5.14.2), SDL, everything (except windows).
Attached logs to see if we find anything.
cmake.txt
build.txt

In other words, where can I learn more, see logs about what is happening (and going wrong) during linking?

At first glance it seems that CMake was not searching for SDL2.
It would be good to have in legacy cmake lines (try to add it somewhere at the beginning):

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})

As an example cmake with sdl check this_link

I see find_library(SDL2_LIBRARY SDL2 ${SDL2_LIBRARY_DIR}), but it is less reliable solution than finding packages.

After a lot of work, I managed to get the FindSDL2.cmake script running and using find_package for SDL2... to get to the same error. xD
Now that I looked through the 2 cmakelist files, I see about a dozen Windows-specific files in antimicro that have been removed from antimicrox.

Ha! I was only 1 step from doing it, doing this AntiMicro/antimicro#207 helped.
Now we can move on to getting things working for antimicrox...

kรฉp

Is your current work on any branch?
In case if someone else would like to try it.

How you have installed SDL2?

So far I pushed here: https://github.com/AntiMicro/antimicro/tree/windows-build-fix
I used the link you mentioned to install SDL2. Though I haven't done any Linux testing, all this was for Windows.

Ok, first I was doing some research around #114 and exploring the past issues/commits, and now I am starting to understand why juliagoda became so bitter about things in the end.
Windows support was neglected and I completely understand why, when you don't have access to a windows box and no help is around this is what happens.

To further eliviate the case first we need windows focused devs and testers. And second we should consider this a "port/back port" not a "restoration effort".
This might be to some degree in contradiction with #114.

Yes. I need a day or so to just sit down and measure how big of an effort this would be. Fortunately, this day is like that. :)

original comment: #115 (comment)
copying it here so we can discuss it further here and not go off-topic in #115

Ok this is bad! to restore windows we probably have to bring back this deleted code(and probably much more...)

And also there's this:16b4af6
which is a part of 2.25(just a few versions after 2.23 which is made by the original team.)

Then I think to restore windows It maybe best to start from somewhere between 2.25 and 2.23 and port back new features from what we have now to windows...

pretty much from what I see AntimicroX(with *nix endig is which is cooler) could be Linux only and we could continue Antimicro as a windows (only?) project.

I can get back to this in late March, or April, sorry. It's in progress and there is some hope. :)

Good luck in restoring Windows compatibility. I can't help with the code, but I might be able to test any Windows version you'll be able to make.

Any progress? I'm desperately waiting for Windows version!

Hey, just found this open issue. I'll look into getting involved soon. Let me know if you need any testing done on windows

Any progress for Windows? Desperate to have this working again!

Sorry guys, but we haven't made any significant progress since then.
Everything done in this matter is (and will be) reported here. If you don't see any updates here you can safely assume there is no progress.

Any progress for Windows? Desperate to have this working again!

+1

First step is made, app compiles on Windows and can be launched, but this task is still far from being done.

Anyway, does anybody have experience with configuring Github Actions for Windows? #223

STATUS UPDATE
Thanks to help from @avinal I will be able to prepare the first Windows AntiMicroX release within 2 weeks.

STATUS UPDATE
AntiMicroX 3.2.0 is now released ๐ŸŽ‰
Installer can be downloaded from release site https://github.com/AntiMicroX/antimicrox/releases/tag/3.2.0
This is the first release supporting Windows.
Because of this there may be some brand-new Windows-only bugs in there.
That's why this release may be not as stable as legacy AntiMicro. In case of any bugs open bug issue. For other questions (about usage etc) feel free to open new thread in discussions.

Launching on Windows 10 after running the installer throws 4 separate errors about Qt5 dll's being missing. The order seems to change.

The code execution cannot proceed because Qt5Core.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because Qt5Gui.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because Qt5Concurrent.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because Qt5Network.dll was not found. Reinstalling the program may fix this problem.

I've tried reinstalling as administrator and uninstall + reinstall, and a full system restart. I've also performed a full system restart.

Created new issue for this #268
Reinstalling won't help in this case.

Everything should now work fine.
Newly uploaded installer contains all of needed dll files

Just downloaded antimicrox-3.2.0-AMD64.exe but when starting it on Windows 10 nothing happens. I also tried to run it as administrator but still: Nothing happens.
I'm on Windows 10 Version 21H1 (Build 19043.1320)
Any hints?
Thank you!

EDIT: Got it working running it in Windows 7 compatibility mode.

Just downloaded antimicrox-3.2.0-AMD64.exe but when starting it on Windows 10 nothing happens. I also tried to run it as administrator but still: Nothing happens. I'm on Windows 10 Version 21H1 (Build 19043.1320) Any hints? Thank you!

EDIT: Got it working running it in Windows 7 compatibility mode.

I'm on Windows 10 Version 21H1 (Build 19043.1348). antimicrox-3.2.0-AMD64.exe works without administrator setting.
Also it might be a coincidence that I got Controller Companion working running it in Windows7 compatibility mode.
lol