From f4e98b9ea1cc058c209c299ef6549d165fee1510 Mon Sep 17 00:00:00 2001 From: fedora Date: Wed, 15 May 2019 04:54:59 +0200 Subject: [PATCH] Added EASetup.sh and updated alltheconfigs.sh accordingly EASetup.sh is script preparing a fedora installation for work with EA via wine + helper libs. Last tested in January 2019. --- alltheconfigs.sh | 1 + setup-env/EASetup.sh | 491 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 492 insertions(+) create mode 100644 setup-env/EASetup.sh diff --git a/alltheconfigs.sh b/alltheconfigs.sh index b545366..97bfe90 100755 --- a/alltheconfigs.sh +++ b/alltheconfigs.sh @@ -22,6 +22,7 @@ rsync -auP ~/MEGAsync/backups/createarchive.sh $dotfiles/backups rsync -auP ~/MEGAsync/fedora-backup/fedora-setup/fedora-setup.sh $dotfiles/setup-env rsync -auP ~/MEGAsync/fedora-backup/fedora-setup/deploy-dotfiles.sh $dotfiles/setup-env +rsync -auP ~/MEGAsync/EASetup.sh $dotfiles/setup-env #rsync -auP ~/.config/openbox/autostart $dotfiles/config/openbox diff --git a/setup-env/EASetup.sh b/setup-env/EASetup.sh new file mode 100644 index 0000000..24e28ee --- /dev/null +++ b/setup-env/EASetup.sh @@ -0,0 +1,491 @@ +#!/bin/bash +# Copyright © 2018 not me +# 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/ +