A ton of updates. We now have working 32 bit wine, Swamp installs and works, many other 32 bit games should as well. Improvements to the user interface both GUI and CLI. Tons of bug fixes. Not quite yet ready for mainstream testing, but getting closer.
This commit is contained in:
@@ -41,13 +41,127 @@ check_wine32() {
|
||||
} | agm_progressbox "Wine32 Setup" "Extracting Wine32 for SAPI compatibility..."
|
||||
fi
|
||||
|
||||
# Export wine32 path for function overrides
|
||||
# Export wine32 path for bottle creation
|
||||
if [[ -f "$wine32Dir/bin/wine" ]]; then
|
||||
export wine32="$wine32Dir/bin/wine"
|
||||
export wine32server="$wine32Dir/bin/wineserver"
|
||||
fi
|
||||
}
|
||||
|
||||
# Ensure wine bottles exist with proper dependencies
|
||||
ensure_wine_bottles() {
|
||||
local wine32Bottle="$HOME/.local/wine32"
|
||||
local wine64Bottle="$HOME/.local/wine64"
|
||||
|
||||
# Create wine32 bottle for SAPI games if missing
|
||||
if [[ ! -d "$wine32Bottle" ]] || [[ ! -f "$wine32Bottle/system.reg" ]]; then
|
||||
{
|
||||
echo "# Creating wine32 bottle for SAPI compatibility..."
|
||||
echo "# This may take several minutes on first run..."
|
||||
|
||||
# Set up environment for wine32
|
||||
export WINEPREFIX="$wine32Bottle"
|
||||
export WINE="$wine32"
|
||||
export WINESERVER="$wine32server"
|
||||
export PATH="${wine32%/*}:$PATH"
|
||||
unset WINEARCH
|
||||
|
||||
# Initialize wine32 bottle
|
||||
echo "# Initializing wine32 environment..."
|
||||
DISPLAY="" "$WINE" wineboot -u
|
||||
|
||||
# Install mono and gecko
|
||||
echo "# Installing .NET Framework..."
|
||||
monoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name mono 2> /dev/null)"
|
||||
if [[ -z "$monoPath" ]]; then
|
||||
download 'http://dl.winehq.org/wine/wine-mono/6.0.0/wine-mono-6.0.0-x86.msi'
|
||||
monoPath="${cache}/wine-mono-6.0.0-x86.msi"
|
||||
fi
|
||||
"$WINE" msiexec /i z:"$monoPath" /quiet
|
||||
|
||||
echo "# Installing web browser support..."
|
||||
geckoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name "gecko" 2> /dev/null)"
|
||||
if [[ -z "$geckoPath" ]]; then
|
||||
download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi'
|
||||
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
|
||||
fi
|
||||
"$WINE" msiexec /i z:"$geckoPath" /quiet
|
||||
|
||||
# Install SAPI dependencies
|
||||
echo "# Installing Speech SDK and SAPI dependencies..."
|
||||
env WINE="$WINE" WINESERVER="$WINESERVER" DISPLAY="${DISPLAY:-:0}" winetricks -q isolate_home speechsdk corefonts winxp
|
||||
|
||||
# Set Microsoft Mike as default voice (better than Mary/Sam)
|
||||
echo "# Setting Microsoft Mike as default voice..."
|
||||
|
||||
# Initialize SAPI to create registry entries
|
||||
mkdir -p "${WINEPREFIX}/drive_c/windows/temp"
|
||||
cat << "EOF" > "${WINEPREFIX}/drive_c/windows/temp/init_sapi.vbs"
|
||||
dim speechobject
|
||||
set speechobject=createobject("sapi.spvoice")
|
||||
speechobject.speak ""
|
||||
EOF
|
||||
"$WINE" cscript "c:\\windows\\temp\\init_sapi.vbs"
|
||||
|
||||
# Set Microsoft Mike as default voice
|
||||
"$WINE" reg add "HKCU\\SOFTWARE\\Microsoft\\Speech\\Voices" /v "DefaultTokenId" /t REG_SZ /d "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MSMike" /f
|
||||
# Set speech rate to 7 (normal speed)
|
||||
"$WINE" reg add "HKCU\\SOFTWARE\\Microsoft\\Speech\\Voices" /v "DefaultTTSRate" /t REG_DWORD /d "7" /f
|
||||
echo "Set Microsoft Mike as default voice"
|
||||
|
||||
echo "# Wine32 bottle creation complete."
|
||||
} | agm_progressbox "Wine Bottle Setup" "Creating wine32 bottle for SAPI games (this may take several minutes)..."
|
||||
fi
|
||||
|
||||
# Create wine64 bottle for modern games if missing
|
||||
if [[ ! -d "$wine64Bottle" ]] || [[ ! -f "$wine64Bottle/system.reg" ]]; then
|
||||
{
|
||||
echo "# Creating wine64 bottle for modern games..."
|
||||
|
||||
# Set up environment for wine64
|
||||
export WINEPREFIX="$wine64Bottle"
|
||||
export WINE="wine"
|
||||
export WINESERVER="wineserver"
|
||||
unset WINEARCH
|
||||
|
||||
# Initialize wine64 bottle
|
||||
echo "# Initializing wine64 environment..."
|
||||
DISPLAY="" wine wineboot -u
|
||||
|
||||
# Install mono and gecko
|
||||
echo "# Installing .NET Framework..."
|
||||
monoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name mono 2> /dev/null)"
|
||||
if [[ -z "$monoPath" ]]; then
|
||||
download 'http://dl.winehq.org/wine/wine-mono/6.0.0/wine-mono-6.0.0-x86.msi'
|
||||
monoPath="${cache}/wine-mono-6.0.0-x86.msi"
|
||||
fi
|
||||
wine msiexec /i z:"$monoPath" /quiet
|
||||
|
||||
echo "# Installing web browser support..."
|
||||
geckoPath="$(find /usr/share/wine/ -maxdepth 1 -type d -name "gecko" 2> /dev/null)"
|
||||
if [[ -z "$geckoPath" ]]; then
|
||||
download 'http://dl.winehq.org/wine/wine-gecko/2.40/wine_gecko-2.40-x86.msi'
|
||||
geckoPath="${cache}/wine_gecko-2.40-x86.msi"
|
||||
fi
|
||||
wine msiexec /i z:"$geckoPath" /quiet
|
||||
|
||||
# Install common dependencies for modern games
|
||||
echo "# Installing common dependencies..."
|
||||
winetricks -q isolate_home corefonts vcrun2019 win10
|
||||
|
||||
# Setup nvda2speechd for accessibility
|
||||
echo "# Setting up accessibility support..."
|
||||
download "https://github.com/RastislavKish/nvda2speechd/releases/download/v0.1/nvda2speechd"
|
||||
if [[ ! -f "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd" ]]; then
|
||||
cp "${cache}/nvda2speechd" "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
|
||||
chmod +x "${XDG_DATA_HOME:-$HOME/.local/share}/audiogame-manager/nvda2speechd"
|
||||
fi
|
||||
|
||||
echo "# Wine64 bottle creation complete."
|
||||
} | agm_progressbox "Wine Bottle Setup" "Creating wine64 bottle for modern games..."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Install games
|
||||
game_installer() {
|
||||
@@ -524,6 +638,8 @@ source .includes/update.sh
|
||||
check_requirements || exit 1
|
||||
# Set up wine32 for SAPI games
|
||||
check_wine32
|
||||
# Ensure wine bottles exist with dependencies
|
||||
ensure_wine_bottles
|
||||
# Check for updates
|
||||
update
|
||||
# Get latest news if available
|
||||
|
Reference in New Issue
Block a user