#!/bin/bash

# Add support for x86 architecture
sudo dpkg --add-architecture i386
sudo apt-get update

# Install necessary packages
sudo apt-get install -qfy --install-recommends \
    software-properties-common \
    gnupg2 \
    wget \
    xvfb \
    cabextract

# Add Wine repository
wget -nv https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

# Additional repository for proper Wine installation
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport

# Install Wine
sudo apt-get install -qfy --install-recommends \
    winehq-staging \
    winbind

# Clean up unnecessary files
sudo apt-get -y clean
sudo rm -rf \
    /var/lib/apt/lists/* \
    /usr/share/doc \
    /usr/share/doc-base \
    /usr/share/man \
    /usr/share/locale \
    /usr/share/zoneinfo

# Download and install winetricks
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
sudo mv winetricks /usr/local/bin/
sudo chmod +x /usr/local/bin/winetricks

# Set environment variables for Wine
export WINEDEBUG=fixme-all
export WINEPREFIX=/root/.wine
export WINEARCH=win64

# Configure Wine
winecfg

# Run Wine with required components
wineboot -u && winetricks -q dotnet472 && xvfb-run winetricks -q vcrun2015

# Create directory for IfcToXktConverter
mkdir -p /tmp/VitroTemp

# Copy your application to the working directory (update the path to your application)
cp -r /usr/local/bin/IfcToXktConverter /usr/local/bin/

echo "Wine setup and installation of required components completed."