Jump to content
LaunchBox Community Forums

Running LaunchBox and Big Box on Linux


Jason Carr

Recommended Posts

Since the release of LaunchBox 11.2, we've been working on getting LaunchBox and Big Box running on Linux using Wine. Keep in mind that this is not for the faint of heart, and you may still run into issues at this point. That said, both LaunchBox and Big Box now at least mostly work, since version 11.3-beta-9.

Thanks to @static on Discord for some additional tips and tricks that we hadn't yet discovered.

Here are some current known issues:

  • Only the VLC video playback engine works (of course the Windows Media Player video playback engine does not)
  • Compared to Windows, it's not quite as pretty; fonts and WPF image resizing aren't up to par with their Windows counterparts
  • It's a tad bit slower than Windows
  • Launching games may or may not work, as we haven't done much testing with it
  • Various other features may be broken that we haven't discovered yet
  • Any features that use the Chromium Embedded Framework (web browsing) do not work

With those caveats, here is a script to get LaunchBox 11.3-beta-9 running on Ubuntu 20.04 (updated on August 5, 2020):

Spoiler

#!/bin/bash

# navigate to user folder
cd ~/

# make sure apt-get is updated
sudo apt-get update

# download and install wine, winetricks, and python2
sudo apt-get -y install wine winetricks python2

# download and install Windows fonts
WINEPREFIX=~/LaunchBox winetricks corefonts

# download and install .NET versions (takes a long time and requires clicks)
WINEPREFIX=~/LaunchBox winetricks dotnet48

# download and install Direct3D compiler
WINEPREFIX=~/LaunchBox winetricks -q d3dcompiler_47

# download and install Media Foundation
wget -O mf-install.zip https://github.com/z0z0z/mf-install/archive/master.zip
unzip mf-install.zip
cd mf-install-master
chmod +x mf-install.sh
WINEPREFIX=~/LaunchBox ./mf-install.sh
cd ..

# download and install Media Foundation Cab
wget -O mf-installcab.zip https://github.com/z0z0z/mf-installcab/archive/master.zip
unzip mf-installcab.zip
cd mf-installcab-master
chmod +x install-mf-64.sh
WINEPREFIX=~/LaunchBox ./install-mf-64.sh
cd ..

# download and install DirectX Vulkan (requires clicks, click "No" twice when asked "Do you want to view information about this issue?")
wget -O dxvk.zip https://github.com/doitsujin/dxvk/archive/master.zip
unzip dxvk.zip
cd dxvk-master
chmod +x setup_dxvk.sh
WINEPREFIX=~/LaunchBox ./setup_dxvk.sh install
cd ..

# download and install .NET Core 3.1.6
wget -O windowsdesktop-runtime-3.1.6-win-x64.exe http://download.visualstudio.microsoft.com/download/pr/3eb7efa1-96c6-4e97-bb9f-563ecf595f8a/7efd9c1cdd74df8fb0a34c288138a84f/windowsdesktop-runtime-3.1.6-win-x64.exe
WINEPREFIX=~/LaunchBox wine ./windowsdesktop-runtime-3.1.6-win-x64.exe /passive /norestart

# download and install Visual C++ 2015 Redistributable
wget http://aka.ms/vs/16/release/vc_redist.x64.exe
WINEPREFIX=~/LaunchBox wine ./vc_redist.x64.exe /passive /norestart

# download and install LaunchBox 11.5
wget -O LaunchBox-11.5-Setup.exe https://www.dropbox.com/s/y183jh5o6ob98zf/LaunchBox-11.5-Setup.exe?dl=0
WINEPREFIX=~/LaunchBox wine ./LaunchBox-11.5-Setup.exe /DIR=C:\LaunchBox /SILENT

 

You can either run this script manually (not recommended), or download the attached "launchbox-install.sh" file and run it all automatically (recommended). In order to do so, download the file, open up a terminal to the folder where the file is, and type the following commands:

chmod +x launchbox-install.sh
./launchbox-install.sh

You will be asked for your password at least once, and eventually you'll have to click through several installers for .NET and the like. If all works correctly though, you should eventually see the LaunchBox startup process. If all else fails, try starting with a brand new install of Ubuntu 20.04 64-bit.

Going forward, we hope to make LaunchBox and Big Box more compatible with Linux, to the extent that is currently possible without completely re-writing the apps.

Let us know how it goes below and let us know what is and isn't working. Good luck!

 

launchbox-install.sh

  • Like 1
  • Game On 4
  • The Cake is a Lie 3
  • Unusual Gem 1
Link to comment
Share on other sites

Awesome!  Any idea what the system requirements will end up being?  I have an old 2010 mac mini I slapped Ubuntu on, and run RetroPie/Emulationstation on it.  Obviously I'd much prefer to run LaunchBox/BigBox at some point down the road.  I'm probably being super optimistic here. :)

Link to comment
Share on other sites

@purplebot I plan on working more on this when I get off work tonight, I am pretty confident I will be able to get BigBox working. I know a method to enable AA in wine that may or may not cause some issues with some emulators, I'll have to test it out, my main thing now is to figure out which codecs will be needed be it wmp, ffmpeg, LAVfilters, or others, as well as testing things like Gallium 9 standalone to see if it gets better dx9 performance. I also plan to test things with steams proton wine wrapper (both standard and GE).  I am running Linux Mint 20 and wine-staging 5.12 personally. 

  • Like 2
Link to comment
Share on other sites

dxvk-master != dxvk-1.7; master is not compiled
https://github.com/doitsujin/dxvk/releases/tag/v1.7

We most likely need some more libs installed for bigbox (These throw errors):
libvlc
mscorelib

I Tried out LAVFilters, didnt make a difference to launching BigBox, same with installing VLC with winetricks

https://askubuntu.com/questions/219791/improve-gui-appearance-of-wine-applications

#!/bin/sh
# Quick and dirty script for configuring wine font smoothing
#
# Author: Igor Tarasov <tarasov.igor@gmail.com>

WINE=${WINE:-wine}
WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
DIALOG=whiptail

if [ ! -x "`which "$WINE"`" ]
then
    echo "Wine was not found. Is it really installed? ($WINE)"
    exit 1
fi

if [ ! -x "`which "$DIALOG"`" ]
then
    DIALOG=dialog
fi

TMPFILE=`mktemp` || exit 1

$DIALOG --menu \
    "Please select font smoothing mode for wine programs:" 13 51\
    4\
        1 "Smoothing disabled"\
        2 "Grayscale smoothing"\
        3 "Subpixel smoothing (ClearType) RGB"\
        4 "Subpixel smoothing (ClearType) BGR" 2> $TMPFILE

STATUS=$?
ANSWER=`cat $TMPFILE`

if [ $STATUS != 0 ]
then 
    rm -f $TMPFILE
    exit 1
fi

MODE=0 # 0 = disabled; 2 = enabled
TYPE=0 # 1 = regular;  2 = subpixel
ORIENTATION=1 # 0 = BGR; 1 = RGB

case $ANSWER in
    1) # disable
        ;;
    2) # enable
        MODE=2
        TYPE=1
        ;;
    3) # enable cleartype rgb
        MODE=2
        TYPE=2
        ;;
    4) # enable cleartype bgr
        MODE=2
        TYPE=2
        ORIENTATION=0
        ;;
    *)
        rm -f $TMPFILE
        echo Unexpected option: $ANSWER
        exit 1
        ;;
esac

echo "REGEDIT4

[HKEY_CURRENT_USER\Control Panel\Desktop]
\"FontSmoothing\"=\"$MODE\"
\"FontSmoothingOrientation\"=dword:0000000$ORIENTATION
\"FontSmoothingType\"=dword:0000000$TYPE
\"FontSmoothingGamma\"=dword:00000578" > $TMPFILE

echo -n "Updating configuration... "

$WINE regedit $TMPFILE 2> /dev/null

rm -f $TMPFILE

echo ok

seeing as LaunchBox setup attempts to install direct x, dxvk should probably be installed after setup

Alternative to DXVK but only supports DirectX 9 you need a card that supports it (AMD)
Gallium 9 Wine Standalone:
https://github.com/iXit/wine-nine-standalone
 

VKD3D should be in wine already
https://wiki.winehq.org/Vkd3d

VK9 is in DXVK

having the script install wine and python isn't such a hot idea, Linux users should have wine set up prior to script
windows is a bad name to use in the home folder .launchbox is much better it lets the user know what the wine environment is set up for (you can have multiple wine environments and should, it becomes unstable if you try to run everything in 1 prefix)

instead of corefonts we could use allfonts (I havent changed it below, feel free to do so yourself)

Z:/ should be the root folder in the wine environment meaning we should be able to set up Wine apps to open Native Linux apps (DosBox, ScummVM, RetroArch, etc) (example: z:/usr/bin/dosbox)
https://wiki.winehq.org/FAQ#How_do_I_associate_a_native_program_with_a_file_type_in_Wine.3F
 

#!/bin/bash
WINEPREFIX=~/.launchbox winetricks corefonts                                                                  # install .launchbox fonts
WINEPREFIX=~/.launchbox winetricks dotnet48                                                                   # install .NET versions (takes a long time and requires clicks)
WINEPREFIX=~/.launchbox winetricks -q d3dcompiler_47                                                          # install Direct3D compiler

wget -O mf-install.zip https://github.com/z0z0z/mf-install/archive/master.zip                              # download Media Foundation
unzip mf-install.zip                                                                                       # extract Media Foundation
cd mf-install-master                                                                                       # change to Media Foundation extracted folder
chmod +x mf-install.sh                                                                                     # make the Media Foundation install script executable
WINEPREFIX=~/.launchbox ./mf-install.sh                                                                       # install Media Foundation
cd ..                                                                                                      # back out to parent folder

wget -O mf-installcab.zip https://github.com/z0z0z/mf-installcab/archive/master.zip                        # download Media Foundation Cab
unzip mf-installcab.zip                                                                                    # extract Media Foundation Cab
cd mf-installcab-master                                                                                    # change to Media Foundation Cab extracted folder
chmod +x install-mf-64.sh                                                                                  # make the Media Foundation Cab install script executable
WINEPREFIX=~/.launchbox ./install-mf-64.sh                                                                    # install Media Foundation Cab
cd ..                                                                                                      # back out to parent folder

wget -O LaunchBox-11.2-Setup.exe https://www.dropbox.com/s/cg7fteljnwf0s9r/LaunchBox-11.2-Setup.exe?dl=0   # download LaunchBox 11.2
WINEPREFIX=~/.launchbox wine ./LaunchBox-11.2-Setup.exe                                                       # install LaunchBox 11.2


wget -O dxvk-1.7.tar.gz  https://github.com/doitsujin/dxvk/releases/download/v1.7/dxvk-1.7.tar.gz                                     # download DirectX Vulkan
unzip dxvk-1.7.tar.gz                                                                                              # extract DirectX Vulkan
cd dxvk-1.7                                                                                            # change to DirectX Vulkan extracted folder
chmod +x setup_dxvk.sh                                                                                     # make the DirectX Vulkan install script executable
WINEPREFIX=~/.launchbox ./setup_dxvk.sh install                                                               # install DirectX Vulkan
cd ..                                                                                                      # back out to parent folder


Woth looking into for the future, Valve Proton GE:
https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/5.9-GE-3-ST

Remember to update winetricks
sudo winetricks --self-update

Remember you can also use
WINEPREFIX=~/.launchbox winecfg
to change things about the prefix as well (gives a GUI so you can set enviro settings, install some dependencies, register dll files, set gfx options, set windows version, etc.)

Edited by static
  • Like 2
Link to comment
Share on other sites

crash log from wine when launching bigbox directly
ttps://cdn.discordapp.com/attachments/250719165227204608/733550696535818240/wine.bigbox.error.log


crash log from wine when launching bigbox from launchbox
https://cdn.discordapp.com/attachments/250719165227204608/733550755403005992/wine.launchbox.error.log

not that I expect support but these may be useful to the devs

bigbox from launchbox doesn't crash, it hangs with a black screen but you do get the audio and the splash starts and closes

Link to comment
Share on other sites

0024:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.

sudo apt-get remove winbind && sudo apt-get install winbind


https://askubuntu.com/questions/1090094/wine-missing-ntlm-auth-3-0-25

 

(Inner Exception)

(Inner Exception)

无法载入指定的模块.

App:     Big Box
Version: 11.2
Type:    System.ComponentModel.Win32Exception
Site:    IntPtr (System.String)
Source:  Unbroken.LaunchBox.Windows

   at (String )
   at Meta.Vlc.Win32Api.LoadLibrary(String lpFileName)
   at (String )


(Outer Exception)

Can't load LibVlc dlls, check the platform and LibVlc target platform (should be same, x86 or x64).

App:     Big Box
Version: 11.2
Type:    Meta.Vlc.LibVlcLoadLibraryException
Site:    Void (System.String)
Source:  Unbroken.LaunchBox.Windows

   at (String )
   at Meta.Vlc.LibVlcManager.LoadLibVlc(String libVlcDirectory)
   at ()
   at Meta.Vlc.Wpf.ApiManager.Initialize()
   at (String , String[] )
   at Meta.Vlc.Wpf.ApiManager.Initialize(String libVlcPath, String[] vlcOption)
   at (VlcPlayer , String , String[] )
   at Meta.Vlc.Wpf.VlcPlayer.Initialize(String libVlcPath, String[] libVlcOption)
   at (VlcPlayer , EventArgs )
   at Meta.Vlc.Wpf.VlcPlayer.OnInitialized(EventArgs e)
   at System.Windows.FrameworkElement.TryFireInitialized()
   at System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent)
   at System.Windows.FrameworkElement.AddLogicalChild(Object child)
   at System.Windows.Controls.UIElementCollection.AddInternal(UIElement element)
   at System.Windows.Controls.UIElementCollection.Add(UIElement element)
   at (ImageVideoView )
   at Unbroken.LaunchBox.Windows.Views.ImageVideoView.<.ctor>b__8_0()
   at System.Windows.Threading.DispatcherOperation.InvokeDelegateCore()
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority)
   at (Action , DispatcherPriority )
   at Unbroken.LaunchBox.Windows.Threading.Invoke(Action callback, DispatcherPriority priority)
   at Unbroken.LaunchBox.Windows.Views.ImageVideoView..ctor()
   at Unbroken.LaunchBox.Windows.BigBox.ViewModels.MainViewModel..ctor()


(Outer Exception)

Exception has been thrown by the target of an invocation.

App:     Big Box
Version: 11.2
Type:    System.Reflection.TargetInvocationException
Site:    System.Object CreateInstance(System.RuntimeType, Boolean, Boolean, Boolean ByRef, System.RuntimeMethodHandleInternal ByRef, Boolean ByRef)
Source:  mscorlib

   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at Caliburn.Micro.BootstrapperBase.GetInstance(Type service, String key)
   at Caliburn.Micro.BootstrapperBase.DisplayRootViewFor(Type viewModelType, IDictionary`2 settings)
   at (Bootstrapper , Object , StartupEventArgs )
   at Unbroken.LaunchBox.Windows.BigBox.Bootstrapper.OnStartup(Object sender, StartupEventArgs e)
   at System.Windows.Application.OnStartup(StartupEventArgs e)
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Recent Log:

   2:08:28 AM Exception

wine.bigbox.error.log


Lets go ahead and get winetricks to reg d3dx9
WINEPREFIX=~/.launchbox winetricks d3dx9_43

 

Edited by static
Link to comment
Share on other sites

@shodblitzkrieg That is how I plan to run it with proton :)
Im just uploading things Ive researched and ran across here/tested so that others in the community can try things out and report back as well, Ive been mostly focusing on wine because its easier than dealing with the proton pfx folder and protontricks while Im breaking the wineprefix while testing out possible fixes (and having to revert changes etc). Everyone is welcome to post things they have tried here.

 

  • Game On 1
Link to comment
Share on other sites

Thank you for the progress here guys, especially @static. I have everything upgraded to .NET Core 3.1; we're just doing some final testing and fixes before releasing it in beta form. I plan to release a new beta before the end of the week, and I expect things to run at least a little bit more smoothly on Linux with the .NET Core 3.1 beta release.

  • Thanks 3
Link to comment
Share on other sites

@The_Keeper86 11.3 beta uses .net core and not .net framework, I'll test it out later and see if it helps, I have a feeling it will, I'll report back when I've had a chance to get it all set up. 

Edit: Crashes at startup after update to 11.3 beta 3 from 11.2 on 11.2 setup prefix, with LB installing the netcore dep

 

backtrace.txt

Edited by static
Link to comment
Share on other sites

@static thanks for testing. shame it crashes but I have a feeling we're getting closer.

 

Hopefully @Jason Carr can chime in on that error when he has time.

 

I did have a question though since this will be using Wine I keep wondering if it'll be possible to launch Linux native versions of emulators such as Retroarch or will we have to use Windows versions? Sorry if this is way too early to ask.

Link to comment
Share on other sites

@The_Keeper86 we are so much closer, even if the beta doesnt launch .net core is available on linux so this should bring us closer to a native build. You can launch native emu's from wine via wines "z:" but I'm not sure if LaunchBox's launch options are configurable enough at this time to let us get rid of the .exe extension or not and haven't really tested it out enough to get it working as I've mainly focused on just getting LaunchBox to run in wine.
 

https://docs.microsoft.com/en-us/dotnet/core/install/linux

https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework
https://devblogs.microsoft.com/dotnet/migrating-a-sample-wpf-app-to-net-core-3-part-1/ 
https://ccifra.github.io/PortingWPFAppsToLinux/Overview.html
 

Edited by static
  • Thanks 2
Link to comment
Share on other sites

1 hour ago, Jason Carr said:

Hey all, 11.3-beta-7 is out now, and the instructions and scripts in the first post of this topic have been updated. Videos are now working in LaunchBox. :)

Amazing man thanks so much! I'll have to give it a shot! Still wondering how native Linux emulators will work but I know first priority is getting LB/BB working :)

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...