Installer works on Linux via command line script build.sh. Based on legacy projects needs refactoring. (./build.sh 0.0.3 linux GenericQtClient org.working_copy.genericQtClient)
This commit is contained in:
112
installer/create-installer.sh
Executable file
112
installer/create-installer.sh
Executable file
@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ $# -ne 4 ]]; then
|
||||
echo "Build script has to be called with exactly two arguments."
|
||||
echo "The version number (Major.Minor.Patch) as its first argument."
|
||||
echo "... and the OS (linux, windows or macos) as the second argument"
|
||||
echo "TODO: DOCUMENT ARGUMENTS 3 & 4!!!"
|
||||
echo "Aborting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=$1
|
||||
regex='^([0-9]+\.){0,2}(\*|[0-9]+)$'
|
||||
if [[ $VERSION =~ $regex ]]; then
|
||||
echo "Version accepted: $VERSION"
|
||||
else
|
||||
echo "Version '$VERSION' is not acceptable. Aborting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PLATFORM=$2
|
||||
TARGET=$3
|
||||
EXECUTABLE="$TARGET-Widgets"
|
||||
BUILD_PREFIX="_build/UIs/GenericWidgets"
|
||||
# TODO refactor this to use PLATFORMS.contains(PLATFORM)
|
||||
if [[ $PLATFORM == linux ]]; then
|
||||
echo "OS: $PLATFORM"
|
||||
BUILD_DIR=$BUILD_PREFIX
|
||||
elif [[ $PLATFORM == windows ]]; then
|
||||
echo "OS: $PLATFORM"
|
||||
BUILD_DIR="$BUILD_PREFIX/release"
|
||||
elif [[ $PLATFORM == macos ]]; then
|
||||
echo "OS: $PLATFORM"
|
||||
BUILD_DIR=$BUILD_PREFIX
|
||||
else
|
||||
echo "Version '$PLATFORM' is not acceptable. Aborting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#if [[ ! -e .env ]]; then
|
||||
# echo "File .env not found. Aborting..."
|
||||
# exit 1
|
||||
#fi
|
||||
#echo "Sourcing .env file..."
|
||||
#source .env
|
||||
|
||||
PACKAGENAME=$4
|
||||
INSTALLER_DIR="_build/installer"
|
||||
PKG_DATA_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/data"
|
||||
PKG_META_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/meta"
|
||||
ASSET_DIR="../assets/icons"
|
||||
OUTPUT_DIR="../_output/installer"
|
||||
|
||||
if [[ -e $PKG_DATA_DIR/$TARGET ]]; then
|
||||
echo "old $TARGET exe exists, cleaning the package data directory..."
|
||||
rm -r $PKG_DATA_DIR/*
|
||||
fi
|
||||
|
||||
if [[ ! -d $PKG_DATA_DIR ]]; then
|
||||
echo "creating package data folder..."
|
||||
mkdir -p $PKG_DATA_DIR
|
||||
fi
|
||||
|
||||
mv $INSTALLER_DIR/packages/meta $PKG_META_DIR
|
||||
|
||||
echo "copying executable..."
|
||||
if [[ $PLATFORM == macos ]]; then
|
||||
cp -r $BUILD_DIR/$EXECUTABLE.app $PKG_DATA_DIR/$TARGET.app
|
||||
else
|
||||
cp $BUILD_DIR/$EXECUTABLE $PKG_DATA_DIR/$TARGET
|
||||
fi
|
||||
|
||||
echo "copying assets..."
|
||||
cp $ASSET_DIR/$TARGET.png $PKG_DATA_DIR/$TARGET.png
|
||||
|
||||
echo "copying license..."
|
||||
cp ../LICENSE $PKG_META_DIR/license.txt
|
||||
|
||||
### Platform dependencies
|
||||
echo "Applying platform dependencies..."
|
||||
INSTALLER_APPENDIX="installer"
|
||||
if [[ $PLATFORM == linux ]]; then
|
||||
echo "Linux..."
|
||||
# echo "Patching the config.xml"
|
||||
# sed -i "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
||||
elif [[ $PLATFORM == windows ]]; then
|
||||
echo "Windows..."
|
||||
cd $PKG_DATA_DIR
|
||||
echo "Copying OpenSSL dlls..."
|
||||
cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libcrypto-1_1-x64.dll .
|
||||
cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libssl-1_1-x64.dll .
|
||||
echo "Calling windeployqt..."
|
||||
$QMAKE_LOCATION/windeployqt $TARGET.exe
|
||||
cd -
|
||||
# echo "Patching the config.xml"
|
||||
# sed -i "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
||||
elif [[ $PLATFORM == macos ]]; then
|
||||
echo "MacOS..."
|
||||
echo "Calling macdeployqt..."
|
||||
INSTALLER_APPENDIX="installer.dmg"
|
||||
cd $PKG_DATA_DIR
|
||||
macdeployqt $TARGET.app
|
||||
cd -
|
||||
# echo "Patching the config.xml..."
|
||||
# sed -i '' "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
||||
fi
|
||||
|
||||
|
||||
echo "running binarycreator..."
|
||||
#echo "$QIF_LOCATION/binarycreator"
|
||||
binarycreator -n -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-online
|
||||
binarycreator -f -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-offline
|
||||
Reference in New Issue
Block a user