513 lines
16 KiB
Bash
Executable File
513 lines
16 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
function main(){
|
|
|
|
SCR_PATH="$HOME/.photoshopCCV19"
|
|
CACHE_PATH="$HOME/.cache/photoshopCCV19"
|
|
|
|
mkdir -p $SCR_PATH
|
|
mkdir -p $CACHE_PATH
|
|
|
|
setup_log "================| script executed |================"
|
|
|
|
check_arg $1
|
|
is64
|
|
|
|
#make sure aria2c and wine package is already installed
|
|
package_installed aria2c
|
|
package_installed wine
|
|
package_installed md5sum
|
|
|
|
#delete wine3.4 dir if exist then create it
|
|
WINE_PATH="$SCR_PATH/wine-3.4"
|
|
rmdir_if_exist $WINE_PATH
|
|
|
|
RESOURCES_PATH="$SCR_PATH/resources"
|
|
WINE_PREFIX="$SCR_PATH/prefix"
|
|
|
|
#install wine 3.4
|
|
install_wine34
|
|
|
|
#create new wine prefix for photoshop
|
|
rmdir_if_exist $WINE_PREFIX
|
|
|
|
#export necessary variable for wine 3.4
|
|
export_var
|
|
|
|
#config wine prefix and install mono and gecko automatic
|
|
echo -e "\033[1;93mplease allow mono and gecko packages to be installed automatically\e[0m"
|
|
echo -e "\033[1;93mif they're not already installed then click on OK button\e[0m"
|
|
winecfg 2> "$SCR_PATH/wine-error.log"
|
|
if [ $? -eq 0 ];then
|
|
show_message "prefix configured..."
|
|
sleep 5
|
|
else
|
|
error "prefix config failed :("
|
|
fi
|
|
|
|
if [ -f "$WINE_PREFIX/user.reg" ];then
|
|
#add necessary dlls
|
|
append_DLL
|
|
sleep 4
|
|
#add dark mod
|
|
set_dark_mod
|
|
else
|
|
error "user.reg Not Found :("
|
|
fi
|
|
|
|
#create resources directory
|
|
rmdir_if_exist $RESOURCES_PATH
|
|
|
|
#install vcrun 2008 ,2010,2012,2013
|
|
install_vcrun2008
|
|
sleep 3
|
|
install_vcrun2010
|
|
sleep 3
|
|
install_vcrun2012
|
|
sleep 3
|
|
install_vcrun2013
|
|
|
|
#install msxml3 and msxml6 and atmlib
|
|
sleep 3
|
|
install_msxml3
|
|
sleep 3
|
|
install_msxml6
|
|
sleep 2
|
|
install_atmlib
|
|
|
|
#install photoshop
|
|
sleep 3
|
|
install_photoshopSE
|
|
sleep 5
|
|
|
|
replacement
|
|
|
|
if [ -d $RESOURCES_PATH ];then
|
|
show_message "deleting resources folder"
|
|
rm -rf $RESOURCES_PATH
|
|
else
|
|
error "resources folder Not Found"
|
|
fi
|
|
|
|
luncher
|
|
show_message "\033[1;33mwhen you run photoshop for the first time it may take a while\e[0m"
|
|
show_message "Almost Finish..."
|
|
sleep 30
|
|
}
|
|
|
|
function setup_log(){
|
|
echo -e "$(date) : $@" >> $SCR_PATH/setuplog.log
|
|
}
|
|
|
|
function show_message(){
|
|
echo -e "$@"
|
|
setup_log "$@"
|
|
}
|
|
|
|
function error(){
|
|
echo -e "\033[1;31merror:\e[0m $@"
|
|
setup_log "$@"
|
|
exit 1
|
|
}
|
|
|
|
function warning(){
|
|
echo -e "\033[1;33mWarning:\e[0m $@"
|
|
setup_log "$@"
|
|
}
|
|
|
|
function luncher(){
|
|
local luncher_path="$PWD/luncher.sh"
|
|
rmdir_if_exist "$SCR_PATH/luncher"
|
|
|
|
if [ -f "$luncher_path" ];then
|
|
show_message "luncher.sh detected..."
|
|
cp "$luncher_path" "$SCR_PATH/luncher" || error "can't copy luncher"
|
|
chmod +x "$SCR_PATH/luncher/luncher.sh"
|
|
else
|
|
error "luncher.sh Note Found"
|
|
fi
|
|
|
|
#create desktop entry
|
|
local desktop_entry="$PWD/photoshop.desktop"
|
|
local desktop_entry_dest="/usr/share/applications/photoshop.desktop"
|
|
|
|
if [ -f "$desktop_entry" ];then
|
|
show_message "desktop entry detected..."
|
|
#delete desktop entry if exists
|
|
if [ -f "$desktop_entry_dest" ];then
|
|
show_message "desktop entry exist deleted..."
|
|
sudo rm "$desktop_entry_dest"
|
|
fi
|
|
sudo cp "$desktop_entry" "/usr/share/applications" || error "can't copy desktop entry"
|
|
sudo sed -i "s|gictorbit|$HOME|g" "$desktop_entry_dest" || error "can't edit desktop entry"
|
|
else
|
|
error "desktop entry Not Found"
|
|
fi
|
|
|
|
#create photoshop command
|
|
show_message "create photoshop command..."
|
|
if [ -f "/usr/local/bin/photoshop" ];then
|
|
show_message "photoshop command exist deleted..."
|
|
sudo rm "/usr/local/bin/photoshop"
|
|
fi
|
|
sudo ln -s "$SCR_PATH/luncher/luncher.sh" "/usr/local/bin/photoshop" || error "can't create photoshop command"
|
|
|
|
unset desktop_entry desktop_entry_dest luncher_path
|
|
}
|
|
|
|
function replacement(){
|
|
local filename="replacement.tgz"
|
|
local filemd5="6441a8e77c082897a99c2b7b588c9ac4"
|
|
local filelink="https://www.dropbox.com/s/17pv6aezl7wz6gs/replacement.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/replacement"
|
|
show_message "extract replacement component..."
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/replacement"
|
|
|
|
local replacefiles=("IconResources.idx" "PSIconsHighRes.dat" "PSIconsLowRes.dat")
|
|
local destpath="$WINE_PREFIX/drive_c/users/$USER/PhotoshopSE/Resources"
|
|
|
|
for f in "${replacefiles[@]}";do
|
|
local sourcepath="$RESOURCES_PATH/replacement/$f"
|
|
cp -f "$sourcepath" "$destpath" || error "cant copy replacement $f file..."
|
|
done
|
|
|
|
show_message "replace component compeleted..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_photoshopSE(){
|
|
local filename="photoshopCC-V19.1.6-2018x64.tgz"
|
|
local filemd5="b63f6ed690343ee12b6195424f94c33f"
|
|
local filelink="https://www.dropbox.com/s/dwfyzq2ie6jih7g/photoshopCC-V19.1.6-2018x64.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/photoshopCC"
|
|
show_message "extract photoshop..."
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/photoshopCC"
|
|
|
|
echo "===============| photoshop CC v19 |===============" >> "$SCR_PATH/wine-error.log"
|
|
show_message "install photoshop..."
|
|
show_message "\033[1;33mPlease don't change default Destination Folder\e[0m"
|
|
wine "$RESOURCES_PATH/photoshopCC/photoshop_cc.exe" &>> "$SCR_PATH/wine-error.log" && notify-send "photoshop installed successfully" -i "photoshop" || error "sorry something went wrong during install photoshop"
|
|
|
|
show_message "photoshopCC V19 x64 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_atmlib(){
|
|
local filename="atmlib.tgz"
|
|
local filemd5="d93d050fc2f310acd13894d6a0c32ee0"
|
|
local filelink="https://www.dropbox.com/s/tnwv6prfoq5mc15/atmlib.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/atmlib"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/atmlib"
|
|
|
|
cp "$RESOURCES_PATH/atmlib/atmlib.dll" "$WINE_PREFIX/drive_c/windows/syswow64/atmlib.dll"
|
|
cp "$RESOURCES_PATH/atmlib/atmlib32.dll" "$WINE_PREFIX/drive_c/windows/system32/atmlib.dll"
|
|
|
|
show_message "atmlib installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_msxml6(){
|
|
local filename="msxml6.tgz"
|
|
local filemd5="6d0035ce77c0c5fdb81bafdbb145d993"
|
|
local filelink="https://www.dropbox.com/s/z7mkvnknufji5a3/msxml6.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/msxml6"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/msxml6"
|
|
|
|
echo "===============| msxml6 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine msiexec /i "$RESOURCES_PATH/msxml6/msxml6_x64.msi" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing msxml6"
|
|
show_message "msxml6 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_msxml3(){
|
|
local filename="msxml3.tgz"
|
|
local filemd5="f5d2f91929f4201c134e33daf0e07fec"
|
|
local filelink="https://www.dropbox.com/s/oablx3gp16dneck/msxml3.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/msxml3"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/msxml3"
|
|
|
|
echo "===============| msxml3 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine msiexec /i "$RESOURCES_PATH/msxml3/msxml3.msi" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing msxml3"
|
|
show_message "msxml3 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_vcrun2013(){
|
|
local filename="vcrun2013.tgz"
|
|
local filemd5="f0d4e9405c9fc39974d7a62629bfe605"
|
|
local filelink="https://www.dropbox.com/s/r1o6k8906gbx920/vcrun2013.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/vcrun2013"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/vcrun2013"
|
|
|
|
echo "===============| VCRUN 2013 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine "$RESOURCES_PATH/vcrun2013/vcredist_x86.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2013 x86"
|
|
show_message "vcrun 2013 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_vcrun2012(){
|
|
local filename="vcrun2012.tgz"
|
|
local filemd5="86f912bed7b3d76aad04adc23dbe9f48"
|
|
local filelink="https://www.dropbox.com/s/4lv27vgjkx5gkv2/vcrun2012.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/vcrun2012"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/vcrun2012"
|
|
|
|
echo "===============| VCRUN 2012 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine "$RESOURCES_PATH/vcrun2012/vcredist_x86.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2012 x86"
|
|
show_message "vcrun 2012 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_vcrun2010(){
|
|
local filename="vcrun2010.tgz"
|
|
local filemd5="484a242b64b3a7de0fa6567d78b771f9"
|
|
local filelink="https://www.dropbox.com/s/c7jyzb93hm2p7v8/vcrun2010.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/vcrun2010"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/vcrun2010"
|
|
|
|
echo "===============| VCRUN 2010 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine "$RESOURCES_PATH/vcrun2010/vcredist_x64.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2010 x64"
|
|
sleep 1
|
|
wine "$RESOURCES_PATH/vcrun2010/vcredist_x86.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2010 x86"
|
|
show_message "vcrun 2010 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function install_vcrun2008(){
|
|
local filename="vcrun2008.tgz"
|
|
local filemd5="38983c8f8736738ed9d2e2bbf5d82373"
|
|
local filelink="https://www.dropbox.com/s/fmjjrx9xq5a9qqc/vcrun2008.tgz?dl=1"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
|
|
mkdir "$RESOURCES_PATH/vcrun2008"
|
|
tar -xzf $filepath -C "$RESOURCES_PATH/vcrun2008"
|
|
|
|
echo "===============| VCRUN 2008 |===============" >> "$SCR_PATH/wine-error.log"
|
|
|
|
wine "$RESOURCES_PATH/vcrun2008/vcredist_x64.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2008 x64"
|
|
sleep 1
|
|
wine "$RESOURCES_PATH/vcrun2008/vcredist_x86.exe" 2>> "$SCR_PATH/wine-error.log" || error "something went wrong during installing vcrun2008 x86"
|
|
show_message "vcrun 2008 installed..."
|
|
unset filename filemd5 filelink filepath
|
|
}
|
|
|
|
function set_dark_mod(){
|
|
echo " " >> "$WINE_PREFIX/user.reg"
|
|
local colorarray=(
|
|
'[Control Panel\\Colors] 1491939580'
|
|
'#time=1d2b2fb5c69191c'
|
|
'"ActiveBorder"="49 54 58"'
|
|
'"ActiveTitle"="49 54 58"'
|
|
'"AppWorkSpace"="60 64 72"'
|
|
'"Background"="49 54 58"'
|
|
'"ButtonAlternativeFace"="200 0 0"'
|
|
'"ButtonDkShadow"="154 154 154"'
|
|
'"ButtonFace"="49 54 58"'
|
|
'"ButtonHilight"="119 126 140"'
|
|
'"ButtonLight"="60 64 72"'
|
|
'"ButtonShadow"="60 64 72"'
|
|
'"ButtonText"="219 220 222"'
|
|
'"GradientActiveTitle"="49 54 58"'
|
|
'"GradientInactiveTitle"="49 54 58"'
|
|
'"GrayText"="155 155 155"'
|
|
'"Hilight"="119 126 140"'
|
|
'"HilightText"="255 255 255"'
|
|
'"InactiveBorder"="49 54 58"'
|
|
'"InactiveTitle"="49 54 58"'
|
|
'"InactiveTitleText"="219 220 222"'
|
|
'"InfoText"="159 167 180"'
|
|
'"InfoWindow"="49 54 58"'
|
|
'"Menu"="49 54 58"'
|
|
'"MenuBar"="49 54 58"'
|
|
'"MenuHilight"="119 126 140"'
|
|
'"MenuText"="219 220 222"'
|
|
'"Scrollbar"="73 78 88"'
|
|
'"TitleText"="219 220 222"'
|
|
'"Window"="35 38 41"'
|
|
'"WindowFrame"="49 54 58"'
|
|
'"WindowText"="219 220 222"'
|
|
)
|
|
for i in "${colorarray[@]}";do
|
|
echo "$i" >> "$WINE_PREFIX/user.reg"
|
|
done
|
|
show_message "set dark mode for wine..."
|
|
unset colorarray
|
|
}
|
|
|
|
function append_DLL(){
|
|
local dllarray=(
|
|
'[Software\\Wine\\DllOverrides] 1580889458'
|
|
'#time=1d5dbf9ef00b116'
|
|
'"*atl110"="native,builtin"'
|
|
'"*atl120"="native,builtin"'
|
|
'"*msvcp110"="native,builtin"'
|
|
'"*msvcp120"="native,builtin"'
|
|
'"*msvcr100"="native,builtin"'
|
|
'"*msvcr110"="native,builtin"'
|
|
'"*msvcr120"="native,builtin"'
|
|
'"*msvcr90"="native,builtin"'
|
|
'"*msxml3"="native"'
|
|
'"*msxml6"="native"'
|
|
'"*vcomp110"="native,builtin"'
|
|
'"*vcomp120"="native,builtin"'
|
|
'"atl110"="native,builtin"'
|
|
'"atl80"="native,builtin"'
|
|
'"atl90"="native,builtin"'
|
|
'"msvcp100"="native,builtin"'
|
|
'"msvcp110"="native,builtin"'
|
|
'"msvcp120"="native,builtin"'
|
|
'"msvcr100"="native,builtin"'
|
|
'"msvcr110"="native,builtin"'
|
|
'"msvcr120"="native,builtin"'
|
|
'"msvcr90"="native,builtin"'
|
|
'"msxml3"="native,builtin"'
|
|
'"msxml6"="native,builtin"'
|
|
'"vcomp110"="native,builtin"'
|
|
'"vcomp120"="native,builtin"'
|
|
)
|
|
show_message "add necessary DLLs..."
|
|
echo " " >> "$WINE_PREFIX/user.reg"
|
|
for i in ${dllarray[@]};do
|
|
echo "$i" >> "$WINE_PREFIX/user.reg"
|
|
done
|
|
unset dllarray
|
|
}
|
|
|
|
function export_var(){
|
|
export WINEPREFIX="$WINE_PREFIX"
|
|
export PATH="$WINE_PATH/bin:$PATH"
|
|
export LD_LIBRARY_PATH="$WINE_PATH/lib:$LD_LIBRARY_PATH"
|
|
export WINEDLLOVERRIDES="winemenubuilder.exe=d"
|
|
export WINESERVER="$WINE_PATH/bin/wineserver"
|
|
export WINELOADER="$WINE_PATH/bin/wine"
|
|
export WINEDLLPATH="$WINE_PATH/lib/wine"
|
|
|
|
show_message "wine variables exported..."
|
|
local wine_version=$(wine --version)
|
|
|
|
if [ $wine_version == "wine-3.4" ];then
|
|
show_message "wine 3.4 is configured..."
|
|
else
|
|
error "wine 3.4 config is wrong"
|
|
fi
|
|
}
|
|
|
|
|
|
function install_wine34(){
|
|
local filename="wine-3.4.tgz"
|
|
local filepath="$CACHE_PATH/$filename"
|
|
local filemd5="72b485c28e40bba2b73b0d4c0c29a15f"
|
|
local filelink="http://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-amd64/PlayOnLinux-wine-3.4-upstream-linux-amd64.tar.gz"
|
|
download_component $filepath $filemd5 $filelink $filename
|
|
tar -xzf $filepath -C $WINE_PATH
|
|
show_message "wine 3.4 installed..."
|
|
unset filename filepath filemd5 filelink
|
|
}
|
|
|
|
#parameters is [PATH] [CheckSum] [URL] [FILE NAME]
|
|
function download_component(){
|
|
local tout=0
|
|
while true;do
|
|
if [ $tout -ge 2 ];then
|
|
error "sorry somthing went wrong during download $4"
|
|
fi
|
|
if [ -f $1 ];then
|
|
local FILE_ID=$(md5sum $1 | cut -d" " -f1)
|
|
if [ "$FILE_ID" == $2 ];then
|
|
show_message "\033[1;36m$4\e[0m detected"
|
|
return 1
|
|
else
|
|
show_message "md5 is not match"
|
|
rm $1
|
|
fi
|
|
else
|
|
show_message "downloading $4 ..."
|
|
aria2c -c -x 8 -d $CACHE_PATH -o $4 $3
|
|
if [ $? -eq 0 ];then
|
|
notify-send "$4 download completed" -i "download"
|
|
fi
|
|
((tout++))
|
|
fi
|
|
done
|
|
}
|
|
|
|
function rmdir_if_exist(){
|
|
if [ -d "$1" ];then
|
|
rm -rf $1
|
|
show_message "\033[0;36m$1\e[0m directory exists deleting it..."
|
|
fi
|
|
mkdir $1
|
|
show_message "create\033[0;36m $1\e[0m directory..."
|
|
}
|
|
|
|
function check_arg(){
|
|
if [ $1 != 0 ]
|
|
then
|
|
error "It haven't any parameter just execute script"
|
|
fi
|
|
show_message "argument checked..."
|
|
}
|
|
|
|
function is64(){
|
|
local arch=$(uname -m)
|
|
if [ $arch != "x86_64" ];then
|
|
warning "your distro is not 64 bit"
|
|
read -r -p "Would you continue? [N/y] " response
|
|
if [[ ! "$response" =~ ^([yY][eE][sS]|[yY])$ ]];then
|
|
echo "Good Bye!"
|
|
exit 0
|
|
fi
|
|
fi
|
|
show_message "is64 checked..."
|
|
}
|
|
|
|
function package_installed(){
|
|
local which=$(which $1 2>/dev/null)
|
|
if [ "$which" == "/usr/bin/$1" ];then
|
|
show_message "package\033[1;36m $1\e[0m is installed..."
|
|
else
|
|
error "package\033[1;33m $1\e[0m is not installed.\nplease install it and Try again"
|
|
fi
|
|
}
|
|
|
|
main $# $@
|