fedora
f4e98b9ea1
EASetup.sh is script preparing a fedora installation for work with EA via wine + helper libs. Last tested in January 2019.
492 lines
16 KiB
Bash
492 lines
16 KiB
Bash
#!/bin/bash
|
|
# Copyright © 2018 not me <notme@yousuck.dick>
|
|
# This work is free. You can redistribute it and/or modify it under the
|
|
# terms of the Do What The Fuck You Want To Public License, Version 2,
|
|
# as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
|
|
|
|
# this is just a really dumb EA setup on fedora(29) through wine
|
|
|
|
# what we'll do in order to get the $hit to work:
|
|
# register a winehq repo
|
|
# install the most recent winehq-devel from winehq repo
|
|
# get winetrics installer from github (binary in fedora repos
|
|
# fails to work and is outdated)
|
|
# chmod +x it and move it to /usr/bin and chown root:root it
|
|
# run ea-recommended winetricks commands
|
|
# reboot
|
|
# curl -O EA && install easetup.msi
|
|
# done.
|
|
|
|
# verify sufficient privileges...
|
|
if [ `id -u` != 0 ]; then
|
|
echo " [x] eeeeee, not root. exiting..."
|
|
exit 183287
|
|
fi
|
|
|
|
setVars() {
|
|
# set these values so the installer can run in color
|
|
COL_NC='\e[0m' # no color
|
|
COL_LIGHT_GREEN='\e[1;32m'
|
|
COL_LIGHT_RED='\033[1;31m'
|
|
COL_PURPLE='\e[1m\033[35m' # bold purple
|
|
COL_LIGHT_BLUE='\e[1;34m'
|
|
COL_LIGHT_YELLOW='\e[1m\e[3;33m' # italic bold, used for warning
|
|
TICK="[${COL_LIGHT_GREEN}✓${COL_NC}]"
|
|
CROSS="[${COL_LIGHT_RED}✗${COL_NC}]"
|
|
INFO="[${COL_LIGHT_BLUE}i${COL_NC}]"
|
|
WARNING="${COL_LIGHT_YELLOW}[!]" # put "no color" at the end of the warning!
|
|
#shellcheck disable=SC2034
|
|
DONE="${COL_LIGHT_GREEN}done! ${COL_NC}"
|
|
OVER="\\r\\033[K"
|
|
NP_USR="$SUDO_USER" # will be using this to run usr commands
|
|
}
|
|
|
|
|
|
unsetVars() {
|
|
unset COL_NC
|
|
unset COL_LIGHT_GREEN
|
|
unset COL_LIGHT_RED
|
|
unset COL_PURPLE
|
|
unset COL_LIGHT_BLUE
|
|
unset COL_LIGHT_YELLOW
|
|
unset TICK
|
|
unset CROSS
|
|
unset INFO
|
|
unset WARNING
|
|
unset DONE
|
|
unset OVER
|
|
unset NP_USR
|
|
}
|
|
|
|
introduction() {
|
|
echo " +---------------------+"
|
|
echo " | ea through wine |"
|
|
echo " +---------------------+"
|
|
echo
|
|
echo " [*] hello ${NP_USR}! this is an ea-through-wine installer script"
|
|
echo " [*] we've got some work to do in order to get this \$h*t working..."
|
|
echo " [*] i.e you're going to need a lot of bandwidth :D"
|
|
echo
|
|
|
|
#NP_USR="$SUDO_USER" # will be using this to run usr commands
|
|
echo -e " [*] so, let\'s start off by letting you know ${COL_LIGHT_RED}u're pwnd${COL_NC}..."
|
|
echo -e " [${COL_LIGHT_GREEN}\$${COL_NC}] everything you own now belongs to Us!"
|
|
echo -e " [*]${COL_LIGHT_RED} chargin' mah lazer${COL_NC}"
|
|
echo
|
|
echo
|
|
}
|
|
|
|
|
|
# first, let's check it's Fedora we're running on...
|
|
isFedora() {
|
|
local relll="/etc/redhat-release"
|
|
echo -e " ${INFO} checking platform..."
|
|
|
|
if grep -iq 'fedora' $relll ; then
|
|
echo -e " ${TICK} neat. working on a ${COL_PURPLE}$(cat $relll) ${COL_NC} [hint: supported]"
|
|
echo -e " ${INFO} some more detail `uname -a`" #cat /proc/version also poss
|
|
# maybe test on centos later
|
|
#elif grep -iq 'centos' /etc/redhat-release; then
|
|
echo
|
|
else
|
|
echo -e " ${CROSS} only ${COL_LIGHT_BLUE}Fedora is supported${COL_NC} at the moment, exiting..."
|
|
unsetVars && exit 9807362
|
|
fi
|
|
}
|
|
|
|
|
|
wineRepos() {
|
|
if grep -iq 'wine:/fedora' /etc/yum.repos.d/* ;then
|
|
echo -e " ${TICK} winehq repository already registered, skipping"
|
|
echo
|
|
else
|
|
echo -e " ${INFO} registering a winehq repository"
|
|
dnf config-manager --add-repo https://download.opensuse.org/repositories/Emulators:/Wine:/Fedora/Fedora_29_standard/Emulators:Wine:Fedora.repo
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} failed to register winehq repository, aborting..."
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} winehq repository successfully registered"
|
|
echo
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
upgradePkgCache() {
|
|
local str="refreshing pkg cache"
|
|
echo -e " ${INFO} ${str}"
|
|
dnf upgrade -y --refresh > /dev/null 2>&1 || dilemmaFailedPkgCacheUpgrade
|
|
echo -e " ${TICK} pkg cache refreshed"
|
|
echo
|
|
}
|
|
|
|
dilemmaFailedPkgCacheUpgrade() {
|
|
if [ `echo $?` -ne 0]; then
|
|
echo -e " ${WARNING} failed to refresh cache ${COL_NC}"
|
|
echo -e " ${INFO} we need to have the latest available packages"
|
|
echo -e " ${WARNING} if you are fairly sure you're up-to-date... "
|
|
echo -e " do you want to continue without upgrading now?${COL_NC}"
|
|
while true; do
|
|
read -p " (y/N): " yn
|
|
case $yn in
|
|
([yY]*)
|
|
echo -e " ${WARNING} proceeding with the installation ${COL_NC}";;
|
|
([nN]*) echo -e " ${CROSS} exiting..."
|
|
unsetVars && exit 3245453;;
|
|
(*) echo "please answer yes or no";;
|
|
esac
|
|
done
|
|
fi
|
|
echo
|
|
}
|
|
|
|
|
|
wineAndFonts() {
|
|
if [ `rpm -q winehq-devel > /dev/null 2>&1; echo $?` -eq 0 ]; then
|
|
echo -e " ${TICK} winehq-devel is already installed, skipping"
|
|
else
|
|
echo -e " ${INFO} not installed, so installing winehq-devel"
|
|
dnf install -y winehq-devel > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} failed to install winehq-devel, aborting..."
|
|
echo -e " we would not have much fun without that pkg either..."
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} winehq-devel successfully installed"
|
|
fi
|
|
fi
|
|
|
|
if [ `rpm -q texlive-carlito > /dev/null 2>&1; echo $?` -eq 0 ]; then
|
|
echo -e " ${TICK} carlito compat font is already installed, skipping"
|
|
echo
|
|
else
|
|
echo -e " ${INFO} not installed, so installing texlive-carlito (ea compat font)"
|
|
dnf install -y texlive-carlito > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} failed to install compat font, aborting... \n fonts for win\$hit could be an issue"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} carlito compat font successfully installed"
|
|
echo
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
latest_update_winetricks() {
|
|
echo -e " ${INFO} setting up winetricks upgrade script"
|
|
cd "$(mktemp -d)"
|
|
cat > update_winetricks <<_EOF_SCRIPT
|
|
#!/bin/sh
|
|
|
|
cd "$(mktemp -d)"
|
|
curl -O https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
|
|
curl -O https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion
|
|
chmod +x winetricks
|
|
sudo sh -c 'mv winetricks /usr/bin ; mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks'
|
|
_EOF_SCRIPT
|
|
|
|
#chmod +x update_winetricks && echo perms || echo noPerms
|
|
#mv update_winetricks /usr/bin/ && echo location || echo noLocation
|
|
#chmod 0755 /usr/bin/winetricks
|
|
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} error setting up \"update_winetricks\" file"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} setting up winetricks upgrade script"
|
|
echo
|
|
fi
|
|
}
|
|
|
|
|
|
latestWinetricksSelf() {
|
|
local str="fixing permissions and moving your dear files all around"
|
|
echo -e " ${INFO} ${str}"
|
|
chmod 0755 update_winetricks || echo errrrr
|
|
chmod +x update_winetricks || echo noPerms
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} there was an issue setting the correct permissions on update_winetricks, aborting..."
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} setting the correct permissions on \"update_winetricks\""
|
|
fi
|
|
|
|
mv update_winetricks /usr/bin/ || echo neviiim
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} there was an issue moving \"update_winetricks\" to /usr/bin, aborting..."
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} moving \"update_winetricks\" to /usr/bin"
|
|
fi
|
|
#ls -la /usr/bin/update_winetricks
|
|
#chmod 0755 /usr/bin/update_winetricks || echo errrrooor
|
|
echo -e " ${TICK} done ${str}"
|
|
|
|
echo -e " ${INFO} getting us latest winetricksSelf"
|
|
bash -c '/usr/bin/update_winetricks > /dev/null 2>&1' > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} there was an issue with getting/setting up latest winetricksSelf, aborting..."
|
|
unsetVars && exit 1
|
|
fi
|
|
|
|
echo -e " ${TICK} setting the correct permissions on winetricksSelf"
|
|
chmod 0755 /usr/bin/winetricks
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} there was an issue setting the correct permissions on winetricksSelf, aborting..."
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} latest winetricksSelf is all set"
|
|
echo
|
|
fi
|
|
}
|
|
|
|
################
|
|
winetricksPkgsxyz() {
|
|
local str="installing ea winetricks dep-packages"
|
|
echo -e " ${INFO} ${str}"
|
|
echo -e " ${WARNING} user assistance may be needed for next few steps ${COL_NC}"
|
|
su $NP_USR bash -c 'winetricks msxml3' || echo -e " ${CROSS} there's been an error getting msxml3 ready" && unsetVars && exit 1
|
|
su $NP_USR bash -c "winetricks msxml4" || echo -e " ${CROSS} there's been an error getting msxml4 ready" && unsetVars && exit 1
|
|
su $NP_USR bash -c "winetricks mdac28" || echo -e " ${CROSS} there's been an error getting mdac28 ready" && unsetVars && exit 1
|
|
su $NP_USR bash -c "winetricks --force mdac28"
|
|
echo -e " ${TICK} ${str}"
|
|
echo
|
|
}
|
|
################
|
|
|
|
winetricksPkgs() {
|
|
local str="installing ea winetricks dep-packages"
|
|
echo -e " ${INFO} ${str}"
|
|
echo -e " ${WARNING} user assistance may be needed for next few steps ${COL_NC}"
|
|
echo
|
|
|
|
###
|
|
# echo -e " ${INFO} attempting to install wine-mono"
|
|
# cat > installmono <<_EOF_SCRIPT
|
|
##!/bin/sh
|
|
#
|
|
#cd "$(mktemp -d)"
|
|
#curl -O https://dl.winehq.org/wine/wine-mono/4.7.3/wine-mono-4.7.3.msi > /dev/null 2>&1
|
|
#WINEARCH=win64 winecfg
|
|
#wine msiexec /i wine-mono-4.7.3.msi /q > /dev/null 2>&1
|
|
#_EOF_SCRIPT
|
|
#
|
|
# chmod +x installmono || echo "issue with perms of installmono"
|
|
# chown -R $NP_USR:$NP_USR . || echo "issue with ownership of installmono"
|
|
# echo -e " ${TICK} perms and ownership successfully of installmono set up"
|
|
#
|
|
# bash -c "su $NP_USR bash -c './installmono'"
|
|
#
|
|
# if [ `echo $?` -ne 0 ]; then
|
|
# echo -e " ${CROSS} error getting \"wine-mono-4.7.3.msi\" file"
|
|
# unsetVars && exit 1
|
|
# else
|
|
# echo -e " ${TICK} wine-mono-4.7.3.msi successfully installed"
|
|
# echo
|
|
# fi
|
|
#
|
|
#
|
|
# echo -e " ${INFO} attempting to install wine_gecko (x86)"
|
|
# cat > installgecko-x86 <<_EOF_SCRIPT
|
|
##!/bin/sh
|
|
#
|
|
#cd "$(mktemp -d)"
|
|
#curl -O https://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi > /dev/null 2>&1
|
|
#WINEARCH=win64 winecfg
|
|
#wine msiexec /i wine_gecko-2.47-x86.msi /q > /dev/null 2>&1
|
|
#_EOF_SCRIPT
|
|
#
|
|
# chmod +x installgecko-x86 || echo "issue with perms of installgecko-x86"
|
|
# chown -R $NP_USR:$NP_USR . || echo "issue with ownership of installgecko-x86"
|
|
# echo -e " ${TICK} perms and ownership successfully of installgecko-x86 set up"
|
|
#
|
|
# bash -c "su $NP_USR bash -c './installgecko-x86'"
|
|
#
|
|
# if [ `echo $?` -ne 0 ]; then
|
|
# echo -e " ${CROSS} error getting \"wine_gecko-2.47-x86.msi\" file"
|
|
# unsetVars && exit 1
|
|
# else
|
|
# echo -e " ${TICK} wine_gecko-2.47-x86.msi successfully installed"
|
|
# echo
|
|
# fi
|
|
#
|
|
#
|
|
# echo -e " ${INFO} attempting to install wine_gecko (x86_64)"
|
|
# cat > installgecko-x86_64 <<_EOF_SCRIPT
|
|
##!/bin/sh
|
|
#
|
|
#cd "$(mktemp -d)"
|
|
#curl -O https://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi > /dev/null 2>&1
|
|
#WINEARCH=win64 winecfg
|
|
#wine msiexec /i wine_gecko-2.47-x86_64.msi /q > /dev/null 2>&1
|
|
#_EOF_SCRIPT
|
|
#
|
|
# chmod +x installgecko-x86_64 || echo "issue with perms of installgecko-x86_64"
|
|
# chown -R $NP_USR:$NP_USR . || echo "issue with ownership of installgecko"
|
|
# echo -e " ${TICK} perms and ownership successfully of installgecko set up"
|
|
#
|
|
# bash -c "su $NP_USR bash -c './installgecko-x86_64'"
|
|
#
|
|
# if [ `echo $?` -ne 0 ]; then
|
|
# echo -e " ${CROSS} error getting \"wine_gecko-2.47-x86_64.msi\" file"
|
|
# unsetVars && exit 1
|
|
# else
|
|
# echo -e " ${TICK} wine_gecko-2.47-x86_64.msi successfully installed"
|
|
# echo
|
|
# fi
|
|
###
|
|
|
|
echo -e " ${INFO} attempting to install msxml3"
|
|
su $NP_USR bash -c 'winetricks -q msxml3 > /dev/null 2>&1' > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -n "exit code is "; echo $?
|
|
echo -e " ${CROSS} there's been an error getting msxml3 ready"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} got dat msxml3 [winetricks -q msxml3]"
|
|
fi
|
|
|
|
|
|
echo -e " ${INFO} attempting to install msxml4"
|
|
su $NP_USR bash -c 'winetricks -q msxml4 > /dev/null 2>&1' > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -n "exit code is "; echo $?
|
|
echo -e " ${CROSS} there's been an error getting msxml4 ready"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} got dat msxml4 [winetricks -q msxml4]"
|
|
fi
|
|
|
|
|
|
echo -e " ${INFO} attempting to install mdac28"
|
|
su $NP_USR bash -c 'winetricks -q mdac28 > /dev/null 2>&1' > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -n "exit code is "; echo $?
|
|
echo -e " ${CROSS} there's been an error getting mdac28 ready"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} got dat mdac28 [winetricks -q mdac28]"
|
|
fi
|
|
|
|
|
|
echo -e " ${INFO} attempting to install refresh winetricks cache [winetricks -q --force mdac28]"
|
|
su $NP_USR bash -c 'winetricks -q --force mdac28 > /dev/null 2>&1' > /dev/null 2>&1
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -n "exit code is "; echo $?
|
|
echo -e " ${CROSS} there's been an error executing \"winetricks -q --force mdac28\""
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} dat winetricks -q --force mdac28 run successfully"
|
|
fi
|
|
|
|
#su $NP_USR bash -c 'winetricks -q msxml4' || echo -e " ${CROSS} there's been an error getting msxml4 ready" && unsetVars && exit 1
|
|
|
|
#su $NP_USR bash -c 'winetricks -q mdac28' || echo -e " ${CROSS} there's been an error getting mdac28 ready" && unsetVars && exit 1
|
|
|
|
#su $NP_USR bash -c 'winetricks -q --force mdac28'
|
|
|
|
echo -e " ${TICK} ${str}"
|
|
echo
|
|
}
|
|
|
|
|
|
eaInstall() {
|
|
echo -e " ${INFO} getting an ea msi and executing it [\e[1m\e[35mthat's the thing\e[0m]"
|
|
echo -e " ${WARNING} user assistance may be needed ${COL_NC}"
|
|
echo
|
|
|
|
# broken installation
|
|
##bash -c "curl -O https://www.sparxsystems.com/bin/easetup.msi"
|
|
##bash -c "chown ${NP_USR}:${NP_USR} easetup.msi"
|
|
|
|
#export WINEARCH=win32
|
|
##su $SUDO_USER bash -c "wine msiexec /i easetup.msi" || echo -e " ${CROSS} easetup.msi installation failed, exiting" && unsetVars && exit 1
|
|
|
|
echo -e " ${INFO} attempting to install ea"
|
|
cat > installme <<_EOF_SCRIPT
|
|
#!/bin/sh
|
|
|
|
cd "$(mktemp -d)"
|
|
curl -O https://www.sparxsystems.com/bin/easetup.msi
|
|
echo
|
|
export WINEARCH=win64
|
|
wine msiexec /i easetup.msi /q > /dev/null 2>&1
|
|
winetricks -q --force mdac28 > /dev/null 2>&1
|
|
wine start .wine/drive_c/users/$USER/Desktop/Enterprise\ Architect.lnk & > /dev/null 2>&1
|
|
echo
|
|
_EOF_SCRIPT
|
|
|
|
chmod +x installme || echo "issue with perms of installme"
|
|
chown -R $NP_USR:$NP_USR . || echo "issue with ownership of installme"
|
|
echo -e " ${TICK} perms and ownership of installme successfully set up"
|
|
|
|
echo -e " ${INFO} downloading the internet"
|
|
bash -c "su $NP_USR bash -c './installme'" > /dev/null 2>&1 #let's not see curl
|
|
#bash -c "su $NP_USR bash -c 'whoami; ls -la'"
|
|
#chown -R $USER:$USER .
|
|
|
|
if [ `echo $?` -ne 0 ]; then
|
|
echo -e " ${CROSS} error getting \"easetup.msi\" file"
|
|
unsetVars && exit 1
|
|
else
|
|
echo -e " ${TICK} easetup.msi successfully installed"
|
|
echo
|
|
fi
|
|
|
|
#debugF() {
|
|
# echo
|
|
# echo "--------------------------------------"
|
|
# echo "start of debugging output"
|
|
# echo "let's find out what's the issue"
|
|
# echo "pwd is : `pwd` "
|
|
# echo "`ls -la installme`"
|
|
# echo "`ls -la`"
|
|
# bash -c "echo \"sudo user: $SUDO_USER\""
|
|
# echo "sudo user je $SUDO_USER, npuser je $NP_USR, pwd je `pwd`"
|
|
# echo "end of debugging output"
|
|
# echo "--------------------------------------"
|
|
# echo
|
|
# }
|
|
# debugF
|
|
}
|
|
|
|
|
|
goodbye() {
|
|
echo -e " ${TICK} you should be all set now"
|
|
echo -e " ${DONE}"
|
|
}
|
|
|
|
|
|
main() {
|
|
setVars
|
|
introduction
|
|
isFedora
|
|
wineRepos
|
|
upgradePkgCache
|
|
wineAndFonts
|
|
latest_update_winetricks
|
|
latestWinetricksSelf
|
|
winetricksPkgs
|
|
eaInstall
|
|
goodbye
|
|
unsetVars
|
|
}
|
|
|
|
main
|
|
echo
|
|
|
|
# some docs
|
|
#
|
|
# ea reference sheet
|
|
# https://www.sparxsystems.com/enterprise_architect_user_guide/14.0/product_information/enterprise_architect_linux.html
|
|
# winehq fedora site
|
|
# https://wiki.winehq.org/Fedora
|
|
# winetricks reference page
|
|
# https://wiki.winehq.org/Winetricks
|
|
# winetricks github repo
|
|
# https://github.com/Winetricks/winetricks
|
|
# http://www.wtfpl.net/
|
|
|