devcontainers-features/src/wine/install.sh

78 lines
2.0 KiB
Bash

#!/bin/bash
set -e
WINEVERSION="${VERSION:-"latest"}"
WINEHOME=$_REMOTE_USER_HOME
WINEPREFIX="$WINEHOME/.wine32"
WINEARCH="win32"
WINEDEBUG="-all"
update_rc_file() {
# see if folder containing file exists
local rc_file_folder
rc_file_folder="$(dirname "$1")"
if [ ! -d "${rc_file_folder}" ]; then
echo "${rc_file_folder} does not exist. Skipping update of $1."
elif [ ! -e "$1" ] || [[ "$(cat "$1")" != *"$2"* ]]; then
echo "$2" >>"$1"
fi
}
install_debian() {
export DEBIAN_FRONTEND=noninteractive
dpkg --add-architecture i386
apt-get update
apt-get install -y --no-install-recommends \
apt-transport-https \
ca-certificates \
telnet \
cabextract \
gnupg2 \
wget
wget https://dl.winehq.org/wine-builds/winehq.key -O - | apt-key add -
echo "deb https://dl.winehq.org/wine-builds/debian $VERSION_CODENAME main" >/etc/apt/sources.list.d/winehq.list
if [ "${WINEVERSION}" != "latest" ]; then
{
echo "Package: *wine* *wine*:i386"
echo "Pin: version $WINEVERSION~*"
echo "Pin-Priority: 1001"
} >/etc/apt/preferences.d/winehq.pref
fi
apt-get update
apt-get install -y --no-install-recommends winehq-staging
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks -O /usr/bin/winetricks
chmod +rx /usr/bin/winetricks
snippet="export WINEHOME=\"$_REMOTE_USER_HOME\"
export WINEPREFIX=\"\$WINEHOME/.wine32\"
export WINEARCH=win32
export WINEDEBUG=-all"
update_rc_file "$_REMOTE_USER_HOME/.zshenv" "${snippet}"
update_rc_file "$_REMOTE_USER_HOME/.profile" "${snippet}"
update_rc_file "$_REMOTE_USER_HOME/.bashrc" "${snippet}"
su -l "$_REMOTE_USER" -c "mkdir -p $WINEPREFIX && wine wineboot --init"
su -l "$_REMOTE_USER" -c "echo \"check-certificate=off\" >> ~/.wgetrc"
su -l "$_REMOTE_USER" -c "winetricks corefonts"
# Cleanup
apt purge --auto-remove -y
apt autoremove --purge -y
rm -rf /var/lib/apt/lists/*
}
. /etc/os-release
if [ "${ID}" = "debian" ]; then
install_debian
else
echo "Linux distro ${ID} not supported."
exit 1
fi