Code Monkey home page Code Monkey logo

danoon2 / boxedwine Goto Github PK

View Code? Open in Web Editor NEW
774.0 21.0 64.0 212.13 MB

Emulator that can run 32-bit Windows programs/games on multiple platforms via Wine

License: GNU General Public License v2.0

C++ 30.48% C 60.38% Objective-C 2.07% Objective-C++ 0.13% Makefile 0.17% HTML 1.69% Batchfile 0.02% CMake 0.32% Shell 0.69% GLSL 0.01% M4 0.48% Java 1.40% PowerShell 0.02% Roff 0.02% Perl 0.08% Python 0.01% Metal 0.01% Assembly 0.31% JavaScript 1.70% SAS 0.01%
emscripten emulator raspberry-pi

boxedwine's Introduction

Boxedwine

Boxedwine is an emulator that runs Windows applications. It achieves this by running a 32-bit version of Wine, and emulating the Linux kernel and CPU. It is written in C++ with SDL and is supported on multiple platforms.

Boxedwine is open source and released under the terms of the GNU General Public License v2 (GPL).

Features

  • Runs 16/32-bit Windows programs
  • Works on Windows, MacOSX, Linux, Raspberry Pi and Web
  • Works on x86-64, i686, ARMv7 and ARMv8
  • Can run multiple versions of Wine, from 1.8 to 5.0
  • Tools and games using OpenGL or Direct3D are supported

TODOs

  • Networking does not work well
  • Mac OpenGL does not work with frame buffers
  • ARMv8 CPU core for Mac M1 and Raspberry Pi still has bugs
  • Games after the year 2000 have limitted success at running

Platforms being tested

  • Emscripten (WASM)
  • Linux 64-bit
  • MacOSX (ARM)
  • MacOSX (Intel)
  • Raspberry Pi 4 32-bit
  • Raspberry Pi 4 64-bit
  • Windows 32-bit
  • Windows 64-bit

Performance Test using MDK Perf with GDI backend on Wine

This is an image

Emscripten on Intel i7-6700K on Windows 10

  • 27 Firefox 81
  • 29 Chrome Version 96.0.4664.110 (Official Build) (64-bit)

Mac Mini M1

  • 870 ARMv8 CPU Core
  • 150 x64 CPU Core with Rosetta

iMac 2017 3.4GHz i5

  • 245 x64 CPU Core

Raspberry Pi 4 64-bit

  • 133 ARMv8 CPU Core

Raspberry Pi 4 32-bit

  • 14 Normal CPU Core + JIT

Windows 10 on Intel i7-6700K

  • 48 Normal CPU Core
  • 64 Normal CPU Core + JIT
  • 985 x64 CPU Core

Documentation

boxedwine's People

Contributors

danoon2 avatar hardbsdk avatar kevodwyer avatar mr-c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boxedwine's Issues

Can't install SnowCross 2000 game

Hi,
I tried to install SnowCross 2000 in Boxedwine ( this game https://www.youtube.com/watch?v=FLlSYboTCXI ). Unfortunately I couldn't install this game. The game started several times but when I chose the track and the scooter and race was about to start, boxedwine crashed. Last time I could run this game was on win 7 with xp mode. I'd be glad if you could check it on win 10.

Sorry for posting it here but I couldn't find your email to ask for that.

Can't get game from 1996 to run, but it runs fine on regular Wine

Specifically, I'm trying to get the game "Fin Fin on Teo the Magic Planet" to run. I've already tried it out in the past and its on WineDB, but the game is able to be installed and played without issue using Wine on Linux, and I've been able to do it with several different versions of Wine on different distros. The game itself is a bit of nightmare in terms of compatibility, and I've been trying out all sorts of ways to create an easily playable version of the game that doesn't need a VM, but haven't had a great amount of success.

To preface slightly about how the program works, the main executable for the game is called "teoboot", and before any gameplay can begin, the user needs to create a profile. The actual gameplay itself and the process of creating a profile both are both done within the teoboot executable, but they can only be opened if the program is ran with the command "-SETUP" for the profile creation, and "-FULLSCREEN" or "-WINDOWED" for the game itself.

Whats strange to me is that the actual setup of process works without any issues at all, but when trying to run the game it will begin and then immediately crash, despite both of them running from the same executable. The game came out in '96, and there are several different versions of it that were released in different regions, but all of them run into the same exact issue. I've tried every available version of Wine and every version of Windows, along with trying out all sorts of different combinations of settings, and I've even tried just about every version of BoxedWine, but the game will not start in any situation. When the game is run in windowed mode within Wine, there will be an error message that states "A program on your system has crashed, but WineDbg was unable to attach to the process to obtain a backtrace."

If there's anything I can try out to fix this, I'd love to hear it. From what I can tell there is a way to have BoxedWine run in a debug mode that shows a lot more info in the log, but I'm not sure how to go about doing this. Let me know if there is any information needed.

One more thing that's slightly unrelated as it only really matters if the game can be run, but is there any way to have microphone access in BoxedWine? Fin Fin is meant to be played by using a microphone, but it can also be played without it.

Add External Dlls/Notepad++ problems/rundll32.exe problems

Hello and good work, what people can do is amazing!
Complete beginner in linux here.
I was trying to install Notepad++ 32bit with an emscripten build but it required dlls that were not already added and when I tryed to add them in the boxedwine.zip in home/username/.wine/drive_c/windows/system32/ boxedwine shutdown.
It could be Notpad++ or the dlls i don't know. I also keep getting the error about missing file rundll32.exe even though it is clearly there. I also know I am working with a good build, although it may be old.

Sharing a cool project: container2wasm

I recently came across the container2wasm project today and it reminded me a lot of boxedwine. The ability to pack up a docker image into a single runnable wasm file leveraging wasi-vfs and wizer and the network stack hacks are neat!

Would be awesome to be able to package up a windows app with boxedwine into a self-contained wasm file using just the wasi api. Would need to find a pattern for the display server 🤔.

No real issue, just wanted to share 😁!

Another fault of building boxedwine

-- Checking for C++14 compiler
-- Checking for C++14 compiler - available
-- Could NOT find APR (missing: APR_INCLUDE_DIR APR_LIBRARY)
-- Could NOT find APRUTIL (missing: APRUTIL_INCLUDE_DIR APRUTIL_LIBRARY)
-- Could NOT find Apache2 (missing: APACHE2_INCLUDE_DIR)
CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to find_package_handle_standard_args (MYSQL) does
not match the name of the calling package (MySQL). This can lead to
problems in calling code that expects find_package result variables
(e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
cmake/FindMySQL.cmake:107 (find_package_handle_standard_args)
CMakeLists.txt:119 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Could NOT find MYSQL (missing: MYSQL_INCLUDE_DIR MYSQL_LIBRARY)
-- Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR)
-- Could NOT find ODBC (missing: ODBC_LIBRARY ODBC_INCLUDE_DIR)
-- Building without tests & samples
-- Using internal sqlite, zlib, pcre, expat, ...
-- CMake 3.22.1 successfully configured Poco using Unix Makefiles generator
-- Poco package version: 1.10.1
-- Building static libraries
-- [cmake] Installation target path: /usr/local
-- [cmake] Bulid for OS type: Linux
-- [cmake] Build for OS version: 4.14.116
-- [cmake] Build for CPU type: aarch64
-- [cmake] Build type: Release
-- [cmake] Build with cxx flags: -O3 -DNDEBUG
-- [cmake] Build with c flags: -O3 -DNDEBUG
-- Building: Util
-- Building: Net
-- Building: NetSSL_OpenSSL
-- Building: Crypto
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fish4terrisa/Boxedwine/project/linux/linux_build
Consolidate compiler generated dependencies of target Foundation
[ 50%] Built target Foundation
Consolidate compiler generated dependencies of target Util
[ 58%] Built target Util
Consolidate compiler generated dependencies of target Net
[ 86%] Built target Net
Consolidate compiler generated dependencies of target Crypto
[ 92%] Built target Crypto
Consolidate compiler generated dependencies of target NetSSL
[100%] Built target NetSSL
In file included from /usr/include/string.h:535,
from ../../include/platform.h:143,
from ../../include/boxedwine.h:56,
from ../../source/ui/controls/containersView.cpp:1:
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘ContainersView::ContainersView(std::string, std::string)::<lambda()>’ at ../../source/ui/controls/containersView.cpp:324:32,
inlined from ‘constexpr _Res std::__invoke_impl(std::__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = ContainersView::ContainersView(std::string, std::string)::<lambda()>&; _Args = {}]’ at /usr/include/c++/11/bits/invoke.h:61:36,
inlined from ‘constexpr std::enable_if_t<is_invocable_r_v<_Res, _Callable, _Args ...>, _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = ContainersView::ContainersView(std::string, std::string)::<lambda()>&; _Args = {}]’ at /usr/include/c++/11/bits/invoke.h:111:28,
inlined from ‘static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = ContainersView::ContainersView(std::string, std::string)::<lambda()>; _ArgTypes = {}]’ at /usr/include/c++/11/bits/std_function.h:290:30:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:496:28:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:497:28:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:503:32:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:501:32:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:530:32:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentApp(BoxedApp*)’ at ../../source/ui/controls/containersView.cpp:531:34:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentContainer(BoxedContainer*)’ at ../../source/ui/controls/containersView.cpp:553:34:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentContainer(BoxedContainer*)’ at ../../source/ui/controls/containersView.cpp:554:38:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void ContainersView::setCurrentContainer(BoxedContainer*)’ at ../../source/ui/controls/containersView.cpp:566:43:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (_dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../source/ui/controls/ImGuiLayout.cpp:4:
../../source/ui/controls/../utils/imgui_markdown.h: In function ‘void ImGui::Markdown(const char*, size_t, const ImGui::MarkdownConfig&)’:
../../source/ui/controls/../utils/imgui_markdown.h:476:36: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
476 | while( ++j < (int)markdownLength
&& bContinueChecking )
| ~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from ../../include/platform.h:143,
from ../../include/boxedwine.h:56,
from ../../source/ui/controls/ImGuiLayout.cpp:1:
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘std::shared_ptr LayoutRow::addTextInput(const string&, bool)’ at ../../source/ui/controls/ImGuiLayout.cpp:321:19:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from ../../include/platform.h:143,
from ../../include/boxedwine.h:56,
from ../../source/ui/controls/installView.cpp:1:
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void InstallView::setContainerName()’ at ../../source/ui/controls/installView.cpp:253:34:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘char* strncpy(char*, const char*, size_t)’,
inlined from ‘void LayoutTextInputControl::setText(const string&)’ at ../../source/ui/controls/../controls/ImGuiLayout.h:74:49,
inlined from ‘void InstallView::createInstallTab(const string&)’ at ../../source/ui/controls/installView.cpp:189:33:
/usr/include/aarch64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 1024 equals destination size [-Wstringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
../../source/ui/data/boxedApp.cpp: In member function ‘void BoxedApp::launch()’:
../../source/ui/data/boxedApp.cpp:145:21: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
145 | if (this->vsync == VSYNC_NOT_SET) {
../../platform/sdl/knativewindow.cpp: In member function ‘virtual unsigned int KNativeWindowSdl::glCreateContext(KThread*, std::shared_ptr, int, int, int, int)’:
../../platform/sdl/knativewindow.cpp:641:44: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
641 | if (windowIsGL && glWindowVersionMajor != major && KSystem::openglType != OPENGL_TYPE_OSMESA) {
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
../../platform/linux/memory64.cpp: In function ‘void freeNativeMemory(Memory*, unsigned int, unsigned int)’:
../../platform/linux/memory64.cpp:108:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
108 | for (int i=0;i<nativePageCount;i++) {
| ~^~~~~~~~~~~~~~~~
../../source/util/crc.cpp: In function ‘unsigned int crc32File(const string&)’:
../../source/util/crc.cpp:41:56: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘__off_t’ {aka ‘long int’} [-Wsign-compare]
41 | if (fread(buffer, 1, (int)buf.st_size, fp) == buf.st_size) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
cc1: warning: command-line option ‘-Wno-delete-incomplete’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-Wno-invalid-offsetof’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-std=c++17’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-Wno-delete-incomplete’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-Wno-invalid-offsetof’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-std=c++17’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-Wno-delete-incomplete’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-Wno-invalid-offsetof’ is valid for C++/ObjC++ but not for C
cc1: warning: command-line option ‘-std=c++17’ is valid for C++/ObjC++ but not for C
/bin/ld: not found -ldecor-0: no such file or directory
collect2: error: ld returned 1 exit status

Make build scripts readable

Please split build flags instead of a huge one-liner in the build scripts.

Example:

  cmake -H../../lib/poco -B./linux_build \
    -DENABLE_SEVENZIP=OFF \
    -DENABLE_XML=OFF \
    -DENABLE_JSON=OFF \
...

Does running Linux apps possible?

I mean, Boxedwine runs Wine, which is technically a Linux software. So I think running Debian based app should be possible too, isn't it?

Emscripten build - file access error with emscripten version 2.0.26 (July 2021)

This issue is to cross-reference bug raised against emscripten version 2.0.26
emscripten-core/emscripten#14783

Have seen below error on occasion:
Uncaught RuntimeError: abort(TypeError: Cannot read property 'ENOENT' of undefined).
Arising from function function ___sys_access(path, amode) in boxedwine.js

Workarounds:

Or 1)
Use previous emscripten toolchain:
./emsdk install 2.0.25
./emsdk activate 2.0.25
source ./emsdk_env.sh

  1. comment out below line in ___sys_access function generated by emscripten:
    // if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);

  2. implement workaround at the browserfs level (will wait to see if bug is accepted first)

Death Drome crash

Game crash after beginning. Is this not accidentally related to the fact that the menu appears first, and then the game should start in another window? I run it with the -p3 argument, because I have an amd processor.
And it also seems that vsync doesn't work in games. It should limit to 60 frames per second, right? I've tried games and have different values ​​everywhere but never 60.

Winfish2 x64 crash

Winfish 2 shareware will crash after you hit "Continue Unregistered" button. This does not crash with the normal core.

https://www.classicdosgames.com/game/WinFish_2_-_Deep_Sea.html

wine: Unhandled division by zero at address 0xd10f239b (thread 0025), starting debugger...

Same crash with Wine

Unhandled exception: invalid float operation in 16-bit code (1317:3b80).
In 16 bit mode.
Register dump:
CS:1317 SS:11d7 DS:1737 ES:11f7 FS:006b GS:0063
IP:3b80 SP:6ee0 BP:6f60 FLAGS:0202( R- -- I - - - )
AX:3b80 BX:0242 CX:164f DX:1231 SI:3f9c DI:6f4a
Stack dump:
0x11d7:0x6ee0: 0000 0000 0000 0000 0000 0000 0000 0000
0x11d7:0x6ef0: 0000 0000 0000 0000 0000 0000 0000 0000
0x11d7:0x6f00: 0000 0000 0000 0000 0000 0000 0000 0000
02e6: sel=1737 base=00c80030 limit=000003bf 16-bit rw-
023e: sel=11f7 base=0039de00 limit=000043bf 16-bit r-x
Backtrace:

Newer version of Wine?

Just wondering if it's possible to get a version of Wine newer than 5.0 for Boxedwine. The application I'm trying to run, Pokemon Uranium, crashes with a black screen on all versions of Wine prior to 6.1.

Graphics are upside down in linux 64-bit build

Launching say regedit.exe, shows the screen to be mirrored vertically.

Undefining BOXEDWINE_LINUX in ./project/linux/build64.sh seems to eliminate this issue.

This is using the current (8f7b18e) tarball of the master branch.

Any plan to use GitHub Actions CI?

  • Better integration than Jenkins
  • Download built binary easily in GitHub Actions
  • Better syntax than Jenkins (personal opinion)
  • No need for self deployed Jenkins agent

Is it possible to... And how?

I had a few things I wanted to do that I am not yet sure how to do so I thought I could ask in bulk here:

  • Start apps maximized
    • Some apps do, some don't
  • Resize canvas dynamically
    • Can it be changed while running?
  • Add files dynamically
    • Can I load/add files while running?
  • Detect shutdown/closing
    • After clicking close the app just freezes
  • Use networking
    • NetSurf didn't load anything
  • Destroy/cleanup after closing
    • After deleting the canvas my app feels sluggish

Thanks for any help with any of these questions! Amazing app and if none of this got resolved I would still be happy to use it in my app as it is now.

big-endian host support

I'm trying to port Boxedwine to a big-endian 32bit PowerPC platform, and I ran into a crash in the elf loader due to it assuming little-endian native types. If I were to fix this, would I run into other issues further down the line?

There are traces of the intent to support arbitrary host endianness in the code (e.g. via setting UNALIGNED_MEMORY macro). But I can't tell if it's implemented everywhere and if not, what the scope of the missing support is?

Granted, big-endian is pretty much dead so I would understand if this is just not something this project wants to bother with.

scale only apply to the initial window

I’m trying BoxedWine with a game which displays with a pretty small resolution, so I start it with -scale 200 -scale_quality 2. The splash screen of the game is indeed twice its normal size, but after that the BoxedWine window is reside a couple of times during the initialization of the game and, when the game finally starts, it is not scaled.

I have tried using the -showWindowImmediately argument, but it is not recognised by BoxedWine version 20.1.2 that is currently available for download.

Provide updated Wine builds

The latest available Wine version for this project seems to be version 5.0, which was released over 1.5 years ago. Can newer Wine versions, including the current version 6.14, be compiled and provided?

(I've tried to compile it myself following the wiki instructions but I keep getting script errors.)

x64 Code won't launch XOrg

The x32 code will launch XOrg with the IceWM desktop, but the Windows x64 build just hangs.

So far I discover that XOrg's input_lock/input_unlock functions will call pthread_mutex_lock/pthread_mutex_unlock. When it calls unlock it is not finding the correct thread id, which causes the mutex to fail to unlock. This happens around the 3rd or 4th time it is called.

This is the pthread_mutex_unlock line that fails

if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid)) return EPERM;

This is the asm instruction that gets the thread id. In this case the current thread is 0xD, and this put 0xF into Eax.
D0769E15 Mov Eax, DWORD PTR [GS:68]

Is there a way to change the height of the window in the emscripten version?

Is there a way to change the height of the window in the emscripten version? I created an application and am trying to get it to run in the emscripten version. The application is running great, the only problem is that the window created is not tall enough for the application. Is there a way to adjust the height? I attached an image so you can see what I am working with.
boxedwinetesting

Can't install Kellogg's Mission Nutrition: DirectX folder not found

Hi, I've been trying to install Kellogg's Mission Nutrition using Boxedwine for a while now, and after finding out it needed Win95 or 98, I found that it also needs a version of DirectX. In the error message it specifies no more than that "DirectX folder could not be found". I've tried running Wine Config and adding d3d9, d3d9, d3d10, d3d11, d3d12, d3dx9_43, d3dx10_43, d3dx11_43, and d2d1, all to no effect. I'm not sure what else I can try.

A link to the game for reproduction: https://archive.org/details/MissionNutritionKelloggs

If anyone else is able to install and run the game, please tell me how. I would appreciate it greatly, as I have a nostalgic bond to the game.

Sometime Wine will fail to create the first window

I've noticed that sometimes Wine will fail to create the first explorer window when starting up. This seems to happen in a reproducible way for the debug win32 target. Perhaps its a speed/timing issue.

Compile Error on Ubuntu with SSL 1.1.1 or 3.0.0

Consolidate compiler generated dependencies of target Foundation
[ 50%] Built target Foundation
Consolidate compiler generated dependencies of target Util
[ 58%] Built target Util
Consolidate compiler generated dependencies of target Net
[ 86%] Built target Net
Consolidate compiler generated dependencies of target Crypto
[ 86%] Building CXX object Crypto/CMakeFiles/Crypto.dir/src/RSACipherImpl.cpp.o
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h: In member function ‘bool Poco::Crypto::EVPPKey::operator==(const Poco::Crypto::EVPPKey&) const’:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:291:54: warning: ‘int EVP_PKEY_cmp(const EVP_PKEY*, const EVP_PKEY*)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
291 | return (1 == EVP_PKEY_cmp(_pEVPPKey, other._pEVPPKey));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1418:5: note: declared here
1418 | int EVP_PKEY_cmp(const EVP_PKEY a, const EVP_PKEY b);
| ^~~~~~~~~~~~
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:291:54: warning: ‘int EVP_PKEY_cmp(const EVP_PKEY
, const EVP_PKEY
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
291 | return (1 == EVP_PKEY_cmp(_pEVPPKey, other._pEVPPKey));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1418:5: note: declared here
1418 | int EVP_PKEY_cmp(const EVP_PKEY a, const EVP_PKEY b);
| ^~~~~~~~~~~~
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h: In member function ‘void Poco::Crypto::EVPPKey::setKey(EC_KEY
)’:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:335:43: warning: ‘int EVP_PKEY_set1_EC_KEY(EVP_PKEY
, ec_key_st*)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
335 | if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1370:5: note: declared here
1370 | int EVP_PKEY_set1_EC_KEY(EVP_PKEY pkey, struct ec_key_st key);
| ^~~~~~~~~~~~~~~~~~~~
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:335:43: warning: ‘int EVP_PKEY_set1_EC_KEY(EVP_PKEY
, ec_key_st
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
335 | if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1370:5: note: declared here
1370 | int EVP_PKEY_set1_EC_KEY(EVP_PKEY pkey, struct ec_key_st key);
| ^~~~~~~~~~~~~~~~~~~~
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h: In member function ‘void Poco::Crypto::EVPPKey::setKey(RSA
)’:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:342:40: warning: ‘int EVP_PKEY_set1_RSA(EVP_PKEY
, rsa_st*)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
342 | if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1344:5: note: declared here
1344 | int EVP_PKEY_set1_RSA(EVP_PKEY pkey, struct rsa_st key);
| ^~~~~~~~~~~~~~~~~
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:342:40: warning: ‘int EVP_PKEY_set1_RSA(EVP_PKEY
, rsa_st
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
342 | if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:27,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/evp.h:1344:5: note: declared here
1344 | int EVP_PKEY_set1_RSA(EVP_PKEY pkey, struct rsa_st key);
| ^~~~~~~~~~~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp: In function ‘int Poco::Crypto::{anonymous}::mapPaddingMode(RSAPaddingMode)’:
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:54:11: error: ‘RSA_SSLV23_PADDING’ was not declared in this scope; did you mean ‘RSA_NO_PADDING’?
54 | return RSA_SSLV23_PADDING;
| ^~~~~~~~~~~~~~~~~~
| RSA_NO_PADDING
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp: In member function ‘virtual std::size_t Poco::Crypto::{anonymous}::RSAEncryptImpl::blockSize() const’:
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:109:24: warning: ‘int RSA_size(const RSA
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
109 | return RSA_size(_pRSA);
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:204:27: note: declared here
204 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA rsa);
| ^~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:109:24: warning: ‘int RSA_size(const RSA
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
109 | return RSA_size(_pRSA);
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:204:27: note: declared here
204 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA rsa);
| ^~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp: In member function ‘virtual std::streamsize Poco::Crypto::{anonymous}::RSAEncryptImpl::transform(const unsigned char
, std::streamsize, unsigned char
, std::streamsize)’:
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:163:127: warning: ‘int RSA_public_encrypt(int, const unsigned char*, unsigned char*, RSA*, int)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
163 | int n = RSA_public_encrypt(static_cast(maxSize), _pBuf, output, const_cast<RSA*>(_pRSA), mapPaddingMode(_paddingMode));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:282:5: note: declared here
282 | int RSA_public_encrypt(int flen, const unsigned char from, unsigned char to,
| ^~~~~~~~~~~~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:163:127: warning: ‘int RSA_public_encrypt(int, const unsigned char
, unsigned char
, RSA*, int)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
163 | int n = RSA_public_encrypt(static_cast(maxSize), _pBuf, output, const_cast<RSA*>(_pRSA), mapPaddingMode(_paddingMode));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:282:5: note: declared here
282 | int RSA_public_encrypt(int flen, const unsigned char from, unsigned char to,
| ^~~~~~~~~~~~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp: In member function ‘virtual std::streamsize Poco::Crypto::{anonymous}::RSAEncryptImpl::finalize(unsigned char
, std::streamsize)’:
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:194:120: warning: ‘int RSA_public_encrypt(int, const unsigned char
, unsigned char*, RSA*, int)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
194 | rc = RSA_public_encrypt(static_cast(_pos), _pBuf, output, const_cast<RSA*>(_pRSA), mapPaddingMode(_paddingMode));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:282:5: note: declared here
282 | int RSA_public_encrypt(int flen, const unsigned char from, unsigned char to,
| ^~~~~~~~~~~~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:194:120: warning: ‘int RSA_public_encrypt(int, const unsigned char
, unsigned char
, RSA*, int)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
194 | rc = RSA_public_encrypt(static_cast(_pos), _pBuf, output, const_cast<RSA*>(_pRSA), mapPaddingMode(_paddingMode));
| ^
In file included from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/EVPPKey.h:26,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKeyImpl.h:22,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSAKey.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/include/Poco/Crypto/RSACipherImpl.h:23,
from /home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:15:
/usr/include/openssl/rsa.h:282:5: note: declared here
282 | int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char to,
| ^~~~~~~~~~~~~~~~~~
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp: In member function ‘virtual std::size_t Poco::Crypto::{anonymous}::RSADecryptImpl::blockSize() const’:
/home/stevena/Boxedwine/lib/poco/Crypto/src/RSACipherImpl.cpp:247:24: warning: ‘int RSA_size(const RSA
)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
247 | return RSA_size(_pRSA);

Precompiled web build/release?

Hi @danoon2,

This is some amazing code and I would love to try and use the latest build/release within my app. I am aware there are instructions, but they felt a bit dauting to me. Would it be possible to get a release or update to http://www.boxedwine.org/ with the latest emscripten build? I'd love to use this but the build process has been a barrier to entry for me, the best I could do was grabbing what was being served on the Demos page, but it all seemed out of date.

Thanks!

Screen repainting doesn't work

I'm not sure how to clearly describe what I'm seeing (running Windows 10 with BoxedWIne using Windows 98 and Wine 5.0). When I run a program that requires any kind of scrolling, like a drop-down menu, the screen doesn't repaint correctly, instead it over-writes what's there with new data, but not in the right location. I'm using BoxedWine binaries downloaded from boxedwine.org.

I tried various configurations -- different Windows versions, poll rates etc to no avail. I'm primarily using BoxedWIne to play Stars! where the behavior is obvious but it's not unique to Stars!

Problem with mount disk

I tried to mount in 2 ways: a virtual cd drive (daemon tools) and a completely copied game folder from the disk itself. No way works, what am I missing? The games still warn me that I have to mount the disk, I can't figure out what the problem is.

Missing precompiled files for macOS

This looks like a terrific project. Thank you for it! I tried to build Boxedwine64 under Big Sur on an Intel Mac, but three of the required precompiled files were missing:

Screen Shot 2021-08-12 at 11 32 08 AM

Is there any chance you could add them to the code? Many thanks again!

Issues with NW.js

I've been trying to run my game, made using NW.js on boxedwine for some time, in hopes to eventually manage to port it to the web, which would then allow me to port it to any platform(also, would there be any way to make a pre-compiled webassembly version of it?). Issue is, after many attempts, and trying to run it as admin, changing wine back and forth between 1.7 and 5, the boxedwine always crashes.

It spends a big amount of time trying to install 2 things I can't quite remember right now, but one of them is for .net support and the other for HTML applications, and always fails one of the two or both

boxedwine.js: TypeError: Cannot read properties of undefined (reading 'parent')

Hello, I am trying to get web version working, but stuck.
I cloned the repo and built with emscripten without errors.
I copied Debian10-Wine-5.0.zip to the same dir as boxedwine.html and renamed it to boxedwine.zip
I access boxedwine.html via web server, as suggested in this comment.
I get this error:

boxedwine.js:18 Uncaught TypeError: Cannot read properties of undefined (reading 'parent')
    at BFSEmscriptenFS.realPath (browserfs.boxedwine.js:2386)
    at BFSEmscriptenNodeOps.lookup (browserfs.boxedwine.js:2212)
    at Object.lookup (boxedwine.js:2186)
    at Object.lookupNode (boxedwine.js:1871)
    at ___syscall_getdents64 (boxedwine.js:4404)
    at readdir (0068935e:0x485e9)
    at Platform::listNodes(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::vector<Platform::ListNodeResult, std::__2::allocator<Platform::ListNodeResult> >&) (0068935e:0x35f78)
    at FsNode::loadChildren() (0068935e:0x1ead4)
    at Fs::getNodeFromLocalPath(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&, BoxedPtr<FsNode>&, std::__2::vector<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >, std::__2::allocator<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > > >&, bool, bool*) (0068935e:0x2eeff)
    at main (0068935e:0xd8423)

screenshot

I think the problem is that it tries to access /root/base dir, which is not present in Debian10-Wine-5.0.zip
I created it manually, but it didn't help.
How can I fix this error?

Debian10-Wine-1.7.zip - same error
Manually combining debian10.zip and Wine-5.0.zip - same error

Windows 10 64 bit
Emscripten 3.0.0 run on Ubuntu 20.04 through WSL2
Chrome 96

Internet Proxy and Password protected zips

Hello!

I have a very specific use case to run an older program. I want to prevent false positives that the program has.

I need to proxy the requests from the app to local files. Is it possible to set the proxy on boxedwine?

The other question I have is: Does boxedwine allow for password protected zips? Or can it mount a virtual drive?

Thanks!!

Any plans to make Boxedwine work as a Libretro Core for RetroArch or is this even possible?

When you choose to use the libretro API, your program gets turned into a single library file (called a ‘libretro core’). A frontend that supports the libretro API can then load that library file and run the app. The frontend’s responsibility is to provide all the implementation-specific details, such as video/audio/input drivers. The libretro core’s responsibility is solely to provide the main program. You therefore don’t have to worry about writing different video drivers for Direct3D, OpenGL or worrying about catering to all possible input APIs/sound APIs/supporting all known joypads/etc. This is none of your concern at the libretro core implementation level.

Can 32 bit R 4.1.3 for Windows run in Boxedwine?

Hi. I'm a novice javascript mobile user/programmer (iPad OS) who is looking for a solution to run the R programming language offline in my browser. I was excited to learn of Boxedwine's web build (18R2) that looked like it might be able to install and run the official 32 bit R 4.1.3. .exe file found at:

https://cran.r-project.org/bin/windows/base/old/4.1.3/

However, when I downloaded it and tried to import it into the shell (via Boxedwine embedded in Dustin Brett's public website):

Https://dustinbrett.com

R loaded and began to install itself until this error occurred in the log after starting:

Launching "/bin/wine" "R-4.1.3-win"
wine: cannot find L"C:\windows\system32\wineboot.exe"
err:process:start_wineboot failed to start wineboot, err 2
wine: cannot find L"C:\windows\system32\R-4.1.3-win"

I had thought that installing might work since the base installer is less than 100 MB and (per the README file) only requires an x86 machine running Windows XP or higher.

I thought if I could get R to run in my browser, I could also then capitalize on Boxedwine's ability to save files into Drop_Box as a means to store my work and would use a local sever on my iPad to serve the Boxedwine project offline.

Please let me know if someone is able to install and get 32 bit R 4.1.3 for Windows to run, and if so, please describe how you did so.

The only other options that I'm aware of to run R on a browser on an iPad are:

WebR: R programming language ported to emscripten. It runs great but is in its only very early stages of development and can only use a limited number of packages for now

RStudio-Cloud: a very professional version of R that runs in the browser but unfortunately runs only in the cloud (cannot run locally off-line) and only allows a limited amount of use for free.

Other linux emulators (e.g. copy/v86, j Linux): Both can install and run R, but like WebR can only run a limited number of R packages.

Thank you for looking into this possibility. :-)

File access errors in web version using Emscripten 2.0.25

Hi!

I can't seem to compile a functional version of Boxedwine for Emscripten... every time I try and launch it I get a bunch of file access errors ultimately leading to Javascript exception in console.

I've tried compiling the Emscripten version of this project using Emscripten 2.0.26 and 2.0.25 (in case #27 was the cause of my issue, compiling with the lower version gave me different error messages but still failed to initialize).

Console output from the 2.0.25 build:

Unable to delete:/lib/wine/wineboot.exe.so error:Error: ENOENT: No such file or directory., '/lib/wine/wineboot.exe.so'
creating: root/base/opt/wine/lib/libwine.so.1.link
FATAL ERROR: Error: FS error
FATAL ERROR: Error: EEXIST: File exists., '/'
FATAL ERROR: Error: Error: EEXIST: File exists., '/'

I've been trying to launch Boxedwine HTML using an instance hosted on a local HTTP server using http://localhost:8000/boxedwine.html?root=debian10.zip&overlay=Wine-5.0.zip.

What am I doing wrong?

Adding `ptrace()` and `fork()` syscall.

These syscall are used for a plenty of compatibility layer/subsystem. Such as User Mode Linux, proot, chroot (chroot has its own syscall too). Implementing it can allowing running User Mode Linux and thus so reduce the amount of works required to run a specific application since User Mode Linux is the Linux kernel run on top of host kernel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.