#!/bin/bash cd /home/container # Set environment variable that holds the Internal Docker IP INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}') export INTERNAL_IP # set this variable, dotnet needs it even without it it reports to `dotnet --info` it can not start any aplication without this export DOTNET_ROOT=/usr/share/ # Start Xvfb for Wine (virtual display) Xvfb :99 -screen 0 1024x768x16 & export DISPLAY=:99.0 # Wait for Xvfb to start sleep 2 # Initialize Wine prefix if it doesn't exist if [ ! -d "$WINEPREFIX" ]; then echo "Initializing Wine prefix..." wineboot --init # Wait for wineboot to complete sleep 5 # Install essential Windows components winetricks -q corefonts vcrun2019 dotnet48 echo "Wine initialization complete." else echo "Wine prefix already exists, checking if it's working..." # Test if Wine is working properly if ! wine --version > /dev/null 2>&1; then echo "Wine prefix seems corrupted, reinitializing..." rm -rf "$WINEPREFIX" wineboot --init sleep 5 winetricks -q corefonts vcrun2019 dotnet48 fi fi # print the dotnet version on startup printf "\033[1m\033[33mcontainer@pelican~ \033[0mdotnet --version\n" dotnet --version # print the wine version on startup printf "\033[1m\033[33mcontainer@pelican~ \033[0mwine --version\n" wine --version # Replace Startup Variables MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g') echo -e ":/home/container$ ${MODIFIED_STARTUP}" # Run the Server eval ${MODIFIED_STARTUP}