diff --git a/.github/workflows/BuildMeshLab.yml b/.github/workflows/BuildMeshLab.yml index f2030ffca..b75d980bd 100644 --- a/.github/workflows/BuildMeshLab.yml +++ b/.github/workflows/BuildMeshLab.yml @@ -67,11 +67,6 @@ jobs: shell: bash run: | bash scripts/${{ runner.os }}/2_deploy.sh - - name: Packaging - if: runner.os == 'Windows' - shell: bash - run: | - bash scripts/${{ runner.os }}/3_pack.sh - name: Upload MeshLab Portable uses: actions/upload-artifact@v3 with: diff --git a/scripts/Windows/2_deploy.sh b/scripts/Windows/2_deploy.sh index 8cd70eea3..9b18801e2 100644 --- a/scripts/Windows/2_deploy.sh +++ b/scripts/Windows/2_deploy.sh @@ -1,15 +1,10 @@ #!/bin/bash -# This is a script shell for deploying a meshlab-portable folder. -# Requires a properly built meshlab (see 1_build.sh). -# -# Without given arguments, the folder that will be deployed is meshlab/install. -# -# You can give as argument the path where meshlab is installed. SCRIPTS_PATH="$(dirname "$(realpath "$0")")" RESOURCES_PATH=$SCRIPTS_PATH/../../resources INSTALL_PATH=$SCRIPTS_PATH/../../install -QT_DIR="" +QT_DIR_OPTION="" +PACKAGES_PATH=$SCRIPTS_PATH/../../packages #checking for parameters for i in "$@" @@ -20,7 +15,11 @@ case $i in shift # past argument=value ;; -qt=*|--qt_dir=*) - QT_DIR=${i#*=}/bin/ + QT_DIR_OPTION=qt=${i#*=} + shift # past argument=value + ;; + -p=*|--packages_path=*) + PACKAGES_PATH="${i#*=}" shift # past argument=value ;; *) @@ -29,17 +28,10 @@ case $i in esac done -${QT_DIR}windeployqt $INSTALL_PATH/meshlab.exe +bash $SCRIPTS_PATH/internal/2a_portable.sh -i=$INSTALL_PATH $QT_DIR_OPTION -${QT_DIR}windeployqt $INSTALL_PATH/plugins/filter_sketchfab.dll --libdir $INSTALL_PATH/ +echo "======= Portable Version Created =======" -mv $INSTALL_PATH/lib/meshlab/IFX* $INSTALL_PATH -cp $INSTALL_PATH/IFXCoreStatic.lib $INSTALL_PATH/lib/meshlab/ -cp $RESOURCES_PATH/LICENSE.txt $INSTALL_PATH/ -cp $RESOURCES_PATH/privacy.txt $INSTALL_PATH/ +bash $SCRIPTS_PATH/internal/2b_installer.sh -i=$INSTALL_PATH -p=$PACKAGES_PATH -if [ ! -f $INSTALL_PATH/vc_redist.x64.exe ] -then - echo "Downloading vc_redist because it was missing..." - wget https://aka.ms/vs/17/release/vc_redist.x64.exe --output-document=$INSTALL_PATH/vc_redist.x64.exe -fi +echo "======= Installer Created =======" \ No newline at end of file diff --git a/scripts/Windows/3_pack.sh b/scripts/Windows/3_pack.sh deleted file mode 100644 index 1cba131d7..000000000 --- a/scripts/Windows/3_pack.sh +++ /dev/null @@ -1,44 +0,0 @@ -# This is a powershell script for computing an installer for MeshLab. -# Requires: -# - a properly deployed meshlab (see 1_deploy.sh); -# - the env variable PATH containing the NSIS folder (makensis.exe must be directly accessible) -# -# Without given arguments, the folder that will be deployed is meshlab/install. -# -# You can give as argument the INSTALL_PATH. -# -# After running this script, the installer can be found inside the install folder. - -SCRIPTS_PATH="$(dirname "$(realpath "$0")")" -RESOURCES_PATH=$SCRIPTS_PATH/../../resources -INSTALL_PATH=$SCRIPTS_PATH/../../install -PACKAGES_PATH=$SCRIPTS_PATH/../../packages - -#checking for parameters -for i in "$@" -do -case $i in - -i=*|--install_path=*) - INSTALL_PATH="${i#*=}" - shift # past argument=value - ;; - -p=*|--packages_path=*) - PACKAGES_PATH="${i#*=}" - shift # past argument=value - ;; - *) - # unknown option - ;; -esac -done - -sh $SCRIPTS_PATH/internal/nsis_script.sh -i=$INSTALL_PATH - -makensis.exe $INSTALL_PATH/meshlab_final.nsi - -rm $INSTALL_PATH/meshlab_final.nsi -rm $INSTALL_PATH/ExecWaitJob.nsh -rm $INSTALL_PATH/FileAssociation.nsh - -mkdir $PACKAGES_PATH -mv $INSTALL_PATH/MeshLab*-windows.exe $PACKAGES_PATH diff --git a/scripts/Windows/internal/2a_portable.sh b/scripts/Windows/internal/2a_portable.sh new file mode 100644 index 000000000..77771bf00 --- /dev/null +++ b/scripts/Windows/internal/2a_portable.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +SCRIPTS_PATH="$(dirname "$(realpath "$0")")"/.. +RESOURCES_PATH=$SCRIPTS_PATH/../../resources +INSTALL_PATH=$SCRIPTS_PATH/../../install +QT_DIR="" + +#checking for parameters +for i in "$@" +do +case $i in + -i=*|--install_path=*) + INSTALL_PATH="${i#*=}" + shift # past argument=value + ;; + -qt=*|--qt_dir=*) + QT_DIR=${i#*=}/bin/ + shift # past argument=value + ;; + *) + # unknown option + ;; +esac +done + +${QT_DIR}windeployqt $INSTALL_PATH/meshlab.exe + +${QT_DIR}windeployqt $INSTALL_PATH/plugins/filter_sketchfab.dll --libdir $INSTALL_PATH/ + +mv $INSTALL_PATH/lib/meshlab/IFX* $INSTALL_PATH +cp $INSTALL_PATH/IFXCoreStatic.lib $INSTALL_PATH/lib/meshlab/ +cp $RESOURCES_PATH/LICENSE.txt $INSTALL_PATH/ +cp $RESOURCES_PATH/privacy.txt $INSTALL_PATH/ + +if [ ! -f $INSTALL_PATH/vc_redist.x64.exe ] +then + echo "Downloading vc_redist because it was missing..." + wget https://aka.ms/vs/17/release/vc_redist.x64.exe --output-document=$INSTALL_PATH/vc_redist.x64.exe +fi \ No newline at end of file diff --git a/scripts/Windows/internal/nsis_script.sh b/scripts/Windows/internal/2b_installer.sh similarity index 62% rename from scripts/Windows/internal/nsis_script.sh rename to scripts/Windows/internal/2b_installer.sh index 855c94066..529314ac2 100644 --- a/scripts/Windows/internal/nsis_script.sh +++ b/scripts/Windows/internal/2b_installer.sh @@ -1,20 +1,11 @@ -# This is a powershell script for computing the meshlab_final.nsi script. -# Requires: -# - a properly deployed meshlab (see windows_deploy.ps1); -# -# Without given arguments, the folder that will be deployed is meshlab/distrib. -# -# You can give as argument the DISTRIB_PATH. -# -# After running this script, a meshlab_final.script can be found in the resources folder. -# This script is ready to be run by makensis.exe +#!/bin/bash SCRIPTS_PATH="$(dirname "$(realpath "$0")")"/.. RESOURCES_PATH=$SCRIPTS_PATH/../../resources -SOURCE_PATH=$SCRIPTS_PATH/../../src -INSTALL_PATH=$SOURCE_PATH/../install +INSTALL_PATH=$SCRIPTS_PATH/../../install +PACKAGES_PATH=$SCRIPTS_PATH/../../packages -#check parameters +#checking for parameters for i in "$@" do case $i in @@ -22,12 +13,18 @@ case $i in INSTALL_PATH="${i#*=}" shift # past argument=value ;; + -p=*|--packages_path=*) + PACKAGES_PATH="${i#*=}" + shift # past argument=value + ;; *) # unknown option ;; esac done +# Make nsis script + #get version IFS=' ' #space delimiter STR_VERSION=$($INSTALL_PATH/meshlab.exe --version) @@ -40,3 +37,14 @@ sed -i "s%DISTRIB_PATH%.%g" $RESOURCES_PATH/windows/meshlab_final.nsi mv $RESOURCES_PATH/windows/meshlab_final.nsi $INSTALL_PATH/ cp $RESOURCES_PATH/windows/ExecWaitJob.nsh $INSTALL_PATH/ cp $RESOURCES_PATH/windows/FileAssociation.nsh $INSTALL_PATH/ + +# Make Installer + +makensis.exe $INSTALL_PATH/meshlab_final.nsi + +rm $INSTALL_PATH/meshlab_final.nsi +rm $INSTALL_PATH/ExecWaitJob.nsh +rm $INSTALL_PATH/FileAssociation.nsh + +mkdir $PACKAGES_PATH +mv $INSTALL_PATH/MeshLab*-windows.exe $PACKAGES_PATH \ No newline at end of file diff --git a/scripts/Windows/make_it.sh b/scripts/Windows/make_it.sh index e8c97d7ca..01863dfe9 100644 --- a/scripts/Windows/make_it.sh +++ b/scripts/Windows/make_it.sh @@ -65,6 +65,5 @@ esac done bash $SCRIPTS_PATH/1_build.sh -b=$BUILD_PATH -i=$INSTALL_PATH $NIGHTLY_OPTION $DOUBLE_PRECISION_OPTION $QT_DIR_OPTION $CCACHE_OPTION -bash $SCRIPTS_PATH/2_deploy.sh -i=$INSTALL_PATH $QT_DIR_OPTION -bash $SCRIPTS_PATH/3_pack.sh -i=$INSTALL_PATH -p=$PACKAGES_PATH +bash $SCRIPTS_PATH/2_deploy.sh -i=$INSTALL_PATH -p=$PACKAGES_PATH $QT_DIR_OPTION diff --git a/scripts/macOS/3_pack.sh b/scripts/macOS/3_pack.sh deleted file mode 100755 index 3ab9c49ca..000000000 --- a/scripts/macOS/3_pack.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# this is a script shell for setting up the application DMG for MacOS. -# Requires a properly built and deployed meshlab (requires to run the -# 2_deploy.sh script first). -# -# Without given arguments, meshlab.app will be looked for in meshlab/install -# folder. MeshLab DMG will be placed in the same directory of meshlab.app. -# -# You can give as argument the INSTALL_PATH containing meshlab.app, with -i or -# --install_path option. - -SCRIPTS_PATH=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) -RESOURCES_PATH=$SCRIPTS_PATH/../../resources -INSTALL_PATH=$SCRIPTS_PATH/../../install -PACKAGES_PATH=$SCRIPTS_PATH/../../packages - -#checking for parameters -for i in "$@" -do -case $i in - -i=*|--install_path=*) - INSTALL_PATH="${i#*=}" - shift # past argument=value - ;; - -p=*|--packages_path=*) - PACKAGES_PATH="${i#*=}" - shift # past argument=value - ;; - *) - # unknown option - ;; -esac -done - -if ! [ -e $INSTALL_PATH/meshlab.app -a -d $INSTALL_PATH/meshlab.app ] -then - echo "Started in the wrong dir: I have not found the meshlab.app" - exit -1 -fi - -#get version -IFS=' ' #space delimiter -STR_VERSION=$($INSTALL_PATH/meshlab.app/Contents/MacOS/meshlab --version) -read -a strarr <<< "$STR_VERSION" -ML_VERSION=${strarr[1]} #get the meshlab version from the string - -# final step create the dmg using appdmg -# appdmg is installed with 'npm install -g appdmg'", -sed "s%DISTRIB_PATH%$INSTALL_PATH%g" $RESOURCES_PATH/macos/meshlab_dmg_latest.json > $RESOURCES_PATH/macos/meshlab_dmg_final.json -sed -i '' "s%ML_VERSION%$ML_VERSION%g" $RESOURCES_PATH/macos/meshlab_dmg_final.json -sed -i '' "s%RESOURCES_PATH%$RESOURCES_PATH%g" $RESOURCES_PATH/macos/meshlab_dmg_final.json - -rm -f $INSTALL_PATH/*.dmg - -mv $INSTALL_PATH/meshlab.app $INSTALL_PATH/MeshLab$ML_VERSION.app - -mkdir $PACKAGES_PATH - -appdmg $RESOURCES_PATH/macos/meshlab_dmg_final.json $PACKAGES_PATH/MeshLab$ML_VERSION-macos.dmg - -rm $RESOURCES_PATH/macos/meshlab_dmg_final.json