feat: added linux installation script
parent
43341b5b34
commit
eb548c5aee
7
pack.xml
7
pack.xml
|
@ -15,6 +15,13 @@
|
||||||
<include>LICENSE.txt</include>
|
<include>LICENSE.txt</include>
|
||||||
</includes>
|
</includes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>${project.basedir}/static</directory>
|
||||||
|
<outputDirectory>voxelshop/</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.build.directory}</directory>
|
<directory>${project.build.directory}</directory>
|
||||||
<outputDirectory>voxelshop/</outputDirectory>
|
<outputDirectory>voxelshop/</outputDirectory>
|
||||||
|
|
|
@ -0,0 +1,195 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# by Poikilos (Jake Gustafson)
|
||||||
|
me=`basename $0`
|
||||||
|
echo "Installing VoxelShop..."
|
||||||
|
|
||||||
|
customDie() {
|
||||||
|
echo
|
||||||
|
echo "ERROR:"
|
||||||
|
echo " $1"
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
ret=1
|
||||||
|
if [ ! -z $2 ]; then ret=$2; fi
|
||||||
|
exit $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
# region environment checks
|
||||||
|
|
||||||
|
if [ -z "$REFRESH_WM" ]; then
|
||||||
|
REFRESH_WM=true
|
||||||
|
echo "REFRESH_WM not set, so using: '$REFRESH_WM'"
|
||||||
|
elif [ "@$REFRESH_WM" = "@TRUE" ]; then
|
||||||
|
REFRESH_WM=true
|
||||||
|
elif [ "@$REFRESH_WM" = "@1" ]; then
|
||||||
|
REFRESH_WM=true
|
||||||
|
elif [ "@$REFRESH_WM" = "@yes" ]; then
|
||||||
|
REFRESH_WM=true
|
||||||
|
elif [ "@$REFRESH_WM" = "@on" ]; then
|
||||||
|
REFRESH_WM=true
|
||||||
|
fi
|
||||||
|
if [ -z "$PREFIX" ]; then
|
||||||
|
if [[ $EUID = 0 ]]; then
|
||||||
|
PREFIX=/usr/local
|
||||||
|
echo "PREFIX not set, so using '$PREFIX'"
|
||||||
|
else
|
||||||
|
PREFIX=$HOME/.local
|
||||||
|
echo "PREFIX not set, and you're not root, so using '$PREFIX'"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Installing to specified PREFIX '$PREFIX'..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$PREFIX" ]; then
|
||||||
|
echo "WARNING: PREFIX $PREFIX not a directory; continuing anyway..."
|
||||||
|
echo "Press Ctrl+C to cancel..."
|
||||||
|
sleep 1
|
||||||
|
echo "3..."
|
||||||
|
sleep 1
|
||||||
|
echo "2..."
|
||||||
|
sleep 1
|
||||||
|
echo "1..."
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# endregion environment checks
|
||||||
|
|
||||||
|
# region hardcoded settings
|
||||||
|
|
||||||
|
bin_name=voxelshop
|
||||||
|
dest_dir_name=voxelshop
|
||||||
|
dest_dir_path=$PREFIX/lib/$dest_dir_name
|
||||||
|
install_src=`pwd`
|
||||||
|
lib_jar_name=voxelshop-start.jar
|
||||||
|
lib_jar_path=$install_src/$lib_jar_name
|
||||||
|
|
||||||
|
if [ ! -f "$lib_jar_path" ]; then
|
||||||
|
customDie "You must run $me in same path as built $lib_jar_name."
|
||||||
|
fi
|
||||||
|
icon_img_name=voxelshop.png
|
||||||
|
icon_img_path=$install_src/share/pixmaps/icon-48x48.png
|
||||||
|
shortcut_name=com.blackflux.voxelshop.desktop
|
||||||
|
shortcut_path=$install_src/share/applications/$shortcut_name
|
||||||
|
|
||||||
|
# endregion hardcoded settings
|
||||||
|
|
||||||
|
if [ ! -d $PREFIX/lib ]; then
|
||||||
|
mkdir -p $PREFIX/lib || customDie "Cannot create $PREFIX/lib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $PREFIX/bin ]; then
|
||||||
|
mkdir -p $PREFIX/bin || customDie "Cannot create $PREFIX/bin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$dest_dir_path/lib" ]; then
|
||||||
|
msg="Cannot create '$dest_dir_path/lib'"
|
||||||
|
mkdir -p $dest_dir_path/lib || customDie "$msg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$dest_dir_path/share/applications" ]; then
|
||||||
|
msg="Cannot create '$dest_dir_path/share/applications'"
|
||||||
|
mkdir -p $dest_dir_path/share/applications || customDie "$msg"
|
||||||
|
fi
|
||||||
|
install_log_name=install.log
|
||||||
|
install_log=$dest_dir_path/$install_log_name
|
||||||
|
if [ -f "$install_log" ]; then
|
||||||
|
# stopping in this case avoids creating a faulty install_log that
|
||||||
|
# may contain files the user added to the directory.
|
||||||
|
customDie "The program is already installed. Run uninstall.sh or delete $dest_dir_path before trying to reinstall."
|
||||||
|
fi
|
||||||
|
cp -f $install_src/* $dest_dir_path/
|
||||||
|
find $dest_dir_path | grep -v "$install_log_name" > $install_log
|
||||||
|
if [ ! -f "$install_log" ]; then
|
||||||
|
customDie "Cancelling install since cannot create $install_log."
|
||||||
|
fi
|
||||||
|
cp -f $install_src/lib/* $dest_dir_path/lib/
|
||||||
|
find $dest_dir_path | grep -v "$install_log_name" >> $install_log
|
||||||
|
echo
|
||||||
|
if [ -f "$bin_name" ]; then
|
||||||
|
echo "Rewriting $bin_name..."
|
||||||
|
else
|
||||||
|
echo "Writing $bin_name..."
|
||||||
|
fi
|
||||||
|
echo '#!/bin/sh' > $PREFIX/bin/$bin_name
|
||||||
|
echo "java -jar $dest_dir_path/$lib_jar_name" >> $PREFIX/bin/$bin_name
|
||||||
|
echo "$PREFIX/bin/$bin_name" >> $install_log
|
||||||
|
chmod +x $PREFIX/bin/$bin_name
|
||||||
|
if [ -f $shortcut_path ]; then
|
||||||
|
#tmp_shortcut=/tmp/$USER$shortcut_name
|
||||||
|
tmp_shortcut=$dest_dir_path/share/applications/$shortcut_name
|
||||||
|
if [ -f $tmp_shortcut ]; then
|
||||||
|
rm $tmp_shortcut || customDie "Cannot remove old $tmp_shortcut"
|
||||||
|
fi
|
||||||
|
cat $shortcut_path | grep -v "Icon=" | grep -v "Exec=" | grep -v "Path=" > $tmp_shortcut
|
||||||
|
echo "$tmp_shortcut" >> $install_log
|
||||||
|
if [ ! -f $tmp_shortcut ]; then
|
||||||
|
customDie "Cannot rewrite $tmp_shortcut."
|
||||||
|
fi
|
||||||
|
echo Exec=$PREFIX/bin/$bin_name >> $tmp_shortcut
|
||||||
|
if [ -f $icon_img_path ]; then
|
||||||
|
if [ ! -d $PREFIX/share/pixmaps ]; then
|
||||||
|
mkdir -p $PREFIX/share/pixmaps || customDie "Cannot create $PREFIX/share/pixmaps"
|
||||||
|
fi
|
||||||
|
if [ ! -d $PREFIX/share/pixmaps ]; then
|
||||||
|
echo "ERROR: cannot create $PREFIX/share/pixmaps, so not installing graphic for icon"
|
||||||
|
else
|
||||||
|
cp -f $icon_img_path $PREFIX/share/pixmaps/
|
||||||
|
echo Icon=$PREFIX/share/pixmaps/$icon_img_name >> $tmp_shortcut
|
||||||
|
fi
|
||||||
|
if [ ! -d $PREFIX/share/applications ]; then
|
||||||
|
mkdir -p "$PREFIX/share/applications" || customDie "Cannot create $PREFIX/share/applications."
|
||||||
|
fi
|
||||||
|
if [ -f $PREFIX/share/applications/$shortcut_name ]; then
|
||||||
|
rm -f $PREFIX/share/applications/$shortcut_name || customDie "Cannot remove old $PREFIX/share/applications/$shortcut_name."
|
||||||
|
fi
|
||||||
|
if [ -d $PREFIX/share/applications/$shortcut_name ]; then
|
||||||
|
rm -f $PREFIX/share/applications/$shortcut_name || customDie "Cannot remove bogus folder (should be file): $PREFIX/share/applications/$shortcut_name"
|
||||||
|
fi
|
||||||
|
cp $tmp_shortcut $PREFIX/share/applications/$shortcut_name
|
||||||
|
echo "$PREFIX/share/applications/$shortcut_name" >> $install_log
|
||||||
|
echo "Writing shortcut '$PREFIX/share/applications/$shortcut_name' is complete."
|
||||||
|
if [ "@$REFRESH_WM" = "@true" ]; then
|
||||||
|
if [[ $EUID -ne 0 ]]; then
|
||||||
|
if [ -f "`command -v gnome-shell`" ]; then
|
||||||
|
echo "* refreshing Gnome icons..."
|
||||||
|
gnome-shell --replace & disown
|
||||||
|
sleep 10
|
||||||
|
fi
|
||||||
|
if [ -f "$HOME/.cache/icon-cache.kcache" ]; then
|
||||||
|
echo "* clearing $HOME/.cache/icon-cache.kcache..."
|
||||||
|
rm $HOME/.cache/icon-cache.kcache
|
||||||
|
fi
|
||||||
|
if [ -f "`command -v kquitapp5`" ]; then
|
||||||
|
echo "* refreshing KDE icons..."
|
||||||
|
if [ "`command -v kstart5`" ]; then
|
||||||
|
kquitapp5 plasmashell && kstart5 plasmashell && sleep 15 || echo " - skipping plasmashell icon refresh (session not loaded)"
|
||||||
|
else
|
||||||
|
kquitapp5 plasmashell && kstart plasmashell && sleep 15 || echo " - skipping plasmashell icon refresh (session not loaded)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -f "`command -v xfce4-panel`" ]; then
|
||||||
|
echo "* refreshing Xfce icons..."
|
||||||
|
xfce4-panel -r && xfwm4 --replace
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
if [ -f "`command -v lxpanelctl`" ]; then
|
||||||
|
echo "* refreshing LXDE icons..."
|
||||||
|
lxpanelctl restart && openbox --restart
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
if [ -f "`command -v lxqt-panel`" ]; then
|
||||||
|
echo "* refreshing LXQt icons..."
|
||||||
|
killall lxqt-panel && lxqt-panel &
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Since running as root, this script will not update application menus for any currently logged in user(s)."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "WARNING: cannot add graphical icon to shortcut since missing $install_src/$icon_img_name."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "WARNING: cannot add shortcut since missing $shortcut_path."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Install is complete."
|
|
@ -0,0 +1,11 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=VoxelShop
|
||||||
|
GenericName=VoxelShop 3D Voxel-based Painting Software
|
||||||
|
Comment=3D voxel modeling, rendering and export
|
||||||
|
Keywords=3d;cg;modeling;painting;sculpting;texturing;voxel,rendering;game design;
|
||||||
|
Exec=voxelshop %f
|
||||||
|
Icon=/usr/local/share/pixmaps/voxelshop.png
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Graphics;3DGraphics;
|
||||||
|
MimeType=application/x-voxelshop;
|
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# by Poikilos (Jake Gustafson)
|
||||||
|
|
||||||
|
me=`basename $0`
|
||||||
|
echo "Uninstalling VoxelShop..."
|
||||||
|
|
||||||
|
customDie() {
|
||||||
|
echo
|
||||||
|
echo "ERROR:"
|
||||||
|
echo " $1"
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
ret=1
|
||||||
|
if [ ! -z $2 ]; then ret=$2; fi
|
||||||
|
exit $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
dest_dir_name=voxelshop
|
||||||
|
install_log_name=install.log
|
||||||
|
|
||||||
|
if [ -z "$PREFIX" ]; then
|
||||||
|
if [ -f $HOME/.local/lib/$dest_dir_name/$install_log_name ]; then
|
||||||
|
PREFIX=$HOME/.local
|
||||||
|
elif [ -f /usr/local/lib/$dest_dir_name/$install_log_name ]; then
|
||||||
|
PREFIX=/usr/local
|
||||||
|
elif [ -f /usr/lib/$dest_dir_name/$install_log_name ]; then
|
||||||
|
PREFIX=/usr
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dest_dir_path=$PREFIX/lib/$dest_dir_name
|
||||||
|
|
||||||
|
if [ -f "$install_log_name" ]; then
|
||||||
|
# Detect PREFIX as whatever was used before since log is here:
|
||||||
|
dest_dir_path=`pwd`
|
||||||
|
PREFIX_lib=`dirname $dest_dir_path`
|
||||||
|
PREFIX=`dirname $PREFIX_lib`
|
||||||
|
echo "Using PREFIX $PREFIX automatically since $install_log_name"
|
||||||
|
echo " is in `pwd`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$dest_dir_path/$install_log_name" ]; then
|
||||||
|
echo ""
|
||||||
|
customDie "There is no $install_log_name at any known location."
|
||||||
|
fi
|
||||||
|
install_log="$dest_dir_path/$install_log_name"
|
||||||
|
|
||||||
|
echo "Processing install log..."
|
||||||
|
while read p; do
|
||||||
|
if [ ! -z "$p" ]; then
|
||||||
|
if [ -f "$p" ]; then
|
||||||
|
rm -f "$p" && echo "rm -f $p" || echo "rm -f '$p' # FAILED"
|
||||||
|
elif [ ! -d "$p" ]; then
|
||||||
|
echo "rm '$p' # WARNING: neither a file nor a directory"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done <"$install_log"
|
||||||
|
echo "Finished processing install log..."
|
||||||
|
if [ -f "$install_log" ]; then
|
||||||
|
rm "$install_log" || echo "WARNING: Cannot remove '$install_log'--you must remove it before attempting to reinstall."
|
||||||
|
else
|
||||||
|
echo "WARNING: $install_log must have been listed as an installed"
|
||||||
|
echo " file in itself (this is not ideal, as entries after it may"
|
||||||
|
echo " have been lost, leading to incomplete uninstall)"
|
||||||
|
fi
|
||||||
|
rmdir "$PREFIX/lib/$dest_dir_name/share/applications"
|
||||||
|
rmdir "$PREFIX/lib/$dest_dir_name/share"
|
||||||
|
rmdir "$PREFIX/lib/$dest_dir_name/lib"
|
||||||
|
# echo "deleting uninstall.sh..."
|
||||||
|
# rm "$PREFIX/lib/$dest_dir_name/uninstall.sh"
|
||||||
|
rmdir "$PREFIX/lib/$dest_dir_name"
|
||||||
|
# Statements below won't do anything bad--they only remove dir if empty.
|
||||||
|
rmdir --ignore-fail-on-non-empty "$PREFIX/share/applications"
|
||||||
|
rmdir --ignore-fail-on-non-empty "$PREFIX/share/pixmaps"
|
||||||
|
rmdir --ignore-fail-on-non-empty "$PREFIX/share"
|
||||||
|
rmdir --ignore-fail-on-non-empty "$PREFIX/lib"
|
||||||
|
rmdir --ignore-fail-on-non-empty "$PREFIX/bin"
|
||||||
|
|
||||||
|
echo "Uninstall is complete."
|
Loading…
Reference in New Issue