diff --git a/script/deploy_windows.sh b/script/deploy_windows.sh index 9000e8f9..526e601e 100644 --- a/script/deploy_windows.sh +++ b/script/deploy_windows.sh @@ -2,6 +2,8 @@ CLEAN_AND_SETUP=true REBUILD=true UPDATE_DATABASES=true +CREATE_INSTALLER_ZIP=true +CREATE_PORTABLE_ZIP=true # USEFUL VARIABLES @@ -31,10 +33,15 @@ if [ $UPDATE_DATABASES = false ]; then read -p "Press [Enter] key to continue" fi +if [ $CREATE_INSTALLER_ZIP = false ]; then + echo -e "$INFO CREATE_INSTALLER_ZIP flag is set to false. Do you want to proceed?" + read -p "Press [Enter] key to continue" +fi -# SETTING THE DEPLOY FLAG -rm -rf src/lib_gui/platform_includes/deploy.h -echo "#define DEPLOY" >src/lib_gui/platform_includes/deploy.h +if [ $CREATE_PORTABLE_ZIP = false ]; then + echo -e "$INFO CREATE_PORTABLE_ZIP flag is set to false. Do you want to proceed?" + read -p "Press [Enter] key to continue" +fi ### TODO: add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\MSBuild\EnableOutOfProcBuild @@ -101,96 +108,155 @@ sh build_win64.sh cd ../../.. -# CREATING PACKAGE FOLDER VERSION_STRING=$(git describe --long) VERSION_STRING="${VERSION_STRING//-/_}" VERSION_STRING="${VERSION_STRING//./_}" VERSION_STRING="${VERSION_STRING%_*}" -echo -e "$INFO creating package folder for win32" -APP_PACKAGE_NAME_WIN32=Sourcetrail_${VERSION_STRING}_32bit -APP_PACKAGE_DIR_WIN32=release/$APP_PACKAGE_NAME_WIN32 -rm -rf $APP_PACKAGE_DIR_WIN32 -mkdir -p $APP_PACKAGE_DIR_WIN32 +# CREATING THE INSTALLER ZIP FILES +if [ $CREATE_INSTALLER_ZIP = true ]; then + create_installer_zip() # Parameters: bit {32, 64} + { + # CREATING INSTALLER PACKAGE FOLDER + echo -e "$INFO creating installer package folder for win$1" + local INSTALLER_PACKAGE_NAME=Sourcetrail_${VERSION_STRING}_${1}bit_Installer + local INSTALLER_PACKAGE_DIR=release/$INSTALLER_PACKAGE_NAME + local INSTALLER_PACKAGE_PLUGINS_DIR=$INSTALLER_PACKAGE_DIR/plugins -cp -u -r deployment/windows/wixSetup/bin/win32/* $APP_PACKAGE_DIR_WIN32/ + rm -rf $INSTALLER_PACKAGE_DIR + mkdir -p $INSTALLER_PACKAGE_DIR -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/atom/ -cp -u -r ide_plugins/atom/* $APP_PACKAGE_DIR_WIN32/plugins/atom/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/eclipse/ -cp -u -r ide_plugins/eclipse/* $APP_PACKAGE_DIR_WIN32/plugins/eclipse/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/emacs/ -cp -u -r ide_plugins/emacs/* $APP_PACKAGE_DIR_WIN32/plugins/emacs/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/idea/ -cp -u -r ide_plugins/idea/* $APP_PACKAGE_DIR_WIN32/plugins/idea/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/qt_creator/ -cp -u -r ide_plugins/qt_creator/* $APP_PACKAGE_DIR_WIN32/plugins/qt_creator/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/sublime_text/ -cp -u -r ide_plugins/sublime_text/* $APP_PACKAGE_DIR_WIN32/plugins/sublime_text/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/vim/ -cp -u -r ide_plugins/vim/* $APP_PACKAGE_DIR_WIN32/plugins/vim/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/vscode/ -cp -u -r ide_plugins/vscode/* $APP_PACKAGE_DIR_WIN32/plugins/vscode/ -mkdir -p $APP_PACKAGE_DIR_WIN32/plugins/visual_studio/ -cp -u -r ide_plugins/visual_studio/* $APP_PACKAGE_DIR_WIN32/plugins/visual_studio/ + cp -u -r deployment/windows/wixSetup/bin/win${1}/* $INSTALLER_PACKAGE_DIR/ + + # COPYING PLUGINS DATA + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/atom/ + cp -u -r ide_plugins/atom/* $INSTALLER_PACKAGE_PLUGINS_DIR/atom/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/eclipse/ + cp -u -r ide_plugins/eclipse/* $INSTALLER_PACKAGE_PLUGINS_DIR/eclipse/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/emacs/ + cp -u -r ide_plugins/emacs/* $INSTALLER_PACKAGE_PLUGINS_DIR/emacs/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/idea/ + cp -u -r ide_plugins/idea/* $INSTALLER_PACKAGE_PLUGINS_DIR/idea/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/qt_creator/ + cp -u -r ide_plugins/qt_creator/* $INSTALLER_PACKAGE_PLUGINS_DIR/qt_creator/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/sublime_text/ + cp -u -r ide_plugins/sublime_text/* $INSTALLER_PACKAGE_PLUGINS_DIR/sublime_text/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/vim/ + cp -u -r ide_plugins/vim/* $INSTALLER_PACKAGE_PLUGINS_DIR/vim/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/vscode/ + cp -u -r ide_plugins/vscode/* $INSTALLER_PACKAGE_PLUGINS_DIR/vscode/ + mkdir -p $INSTALLER_PACKAGE_PLUGINS_DIR/visual_studio/ + cp -u -r ide_plugins/visual_studio/* $INSTALLER_PACKAGE_PLUGINS_DIR/visual_studio/ + + cd ./release/ + + # PACKAGING SOURCETRAIL + echo -e "$INFO packaging sourcetrail installer for win$1" + winrar a -afzip Sourcetrail_${VERSION_STRING}_Windows_${1}bit_Installer.zip $INSTALLER_PACKAGE_NAME + + # STORING PDB FILES + echo -e "$INFO storing pdb file for win$1" + mkdir PDB_${INSTALLER_PACKAGE_NAME} + cp -u -r ../build/win$1/Release/app/Sourcetrail.pdb PDB_${INSTALLER_PACKAGE_NAME}/ + + cd ../ + + # CLEANING UP + echo -e "$INFO Cleaning installer package folders for win$1" + rm -rf $INSTALLER_PACKAGE_DIR + } + + create_installer_zip "32" + create_installer_zip "64" +fi -echo -e "$INFO creating package folder for win64" -APP_PACKAGE_NAME_WIN64=Sourcetrail_${VERSION_STRING}_64bit -APP_PACKAGE_DIR_WIN64=release/$APP_PACKAGE_NAME_WIN64 +# CREATING THE PORTABLE ZIP FILES +if [ $CREATE_PORTABLE_ZIP = true ]; then + create_portable_zip() # Parameters: bit {32, 64} + { + # CREATING PORTABLE PACKAGE FOLDER + echo -e "$INFO creating portable package folder for win$1" + local PORTABLE_PACKAGE_NAME=Sourcetrail_${VERSION_STRING}_${1}bit_Portable + local PORTABLE_PACKAGE_DIR=release/$PORTABLE_PACKAGE_NAME + local PORTABLE_PACKAGE_APP_DIR=$PORTABLE_PACKAGE_DIR/Sourcetrail_${VERSION_STRING}_${1}bit + local PORTABLE_PACKAGE_PLUGINS_DIR=$PORTABLE_PACKAGE_DIR/plugins -rm -rf $APP_PACKAGE_DIR_WIN64 -mkdir -p $APP_PACKAGE_DIR_WIN64 + rm -rf $PORTABLE_PACKAGE_DIR + mkdir -p $PORTABLE_PACKAGE_DIR + + + # COPYING APPLICATION DATA + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/3rd_party_licenses/ + cp -u -r bin/app/data/3rd_party_licenses/* $PORTABLE_PACKAGE_APP_DIR/data/3rd_party_licenses/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/color_schemes/ + cp -u -r bin/app/data/color_schemes/* $PORTABLE_PACKAGE_APP_DIR/data/color_schemes/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/fallback/ + cp -u -r bin/app/data/fallback/* $PORTABLE_PACKAGE_APP_DIR/data/fallback/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/fonts/ + cp -u -r bin/app/data/fonts/* $PORTABLE_PACKAGE_APP_DIR/data/fonts/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/gui/ + cp -u -r bin/app/data/gui/* $PORTABLE_PACKAGE_APP_DIR/data/gui/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/install/ + cp -u -r bin/app/data/install/* $PORTABLE_PACKAGE_APP_DIR/data/install/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/data/java/ + cp -u -r bin/app/data/java/* $PORTABLE_PACKAGE_APP_DIR/data/java/ + + mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/javaparser/ + cp -u -r bin/app/user/projects/javaparser/* $PORTABLE_PACKAGE_APP_DIR/user/projects/javaparser/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/tictactoe/ + cp -u -r bin/app/user/projects/tictactoe/* $PORTABLE_PACKAGE_APP_DIR/user/projects/tictactoe/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/user/projects/tutorial/ + cp -u -r bin/app/user/projects/tutorial/* $PORTABLE_PACKAGE_APP_DIR/user/projects/tutorial/ + + mkdir -p $PORTABLE_PACKAGE_APP_DIR/imageformats/ + cp -u -r build/win$1/Release/app/imageformats/*.dll $PORTABLE_PACKAGE_APP_DIR/imageformats/ + mkdir -p $PORTABLE_PACKAGE_APP_DIR/platforms/ + cp -u -r build/win$1/Release/app/platforms/*.dll $PORTABLE_PACKAGE_APP_DIR/platforms/ + + cp -u -r build/win$1/Release/app/*.dll $PORTABLE_PACKAGE_APP_DIR/ + cp -u -r build/win$1/Release/app/qt.conf $PORTABLE_PACKAGE_APP_DIR/ + cp -u -r build/win$1/Release/app/Sourcetrail.exe $PORTABLE_PACKAGE_APP_DIR/ + cp -u -r build/win$1/Release/app/sourcetrail_indexer.exe $PORTABLE_PACKAGE_APP_DIR/ + -cp -u -r deployment/windows/wixSetup/bin/win64/* $APP_PACKAGE_DIR_WIN64/ + # COPYING PLUGINS DATA + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/atom/ + cp -u -r ide_plugins/atom/* $PORTABLE_PACKAGE_PLUGINS_DIR/atom/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/eclipse/ + cp -u -r ide_plugins/eclipse/* $PORTABLE_PACKAGE_PLUGINS_DIR/eclipse/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/emacs/ + cp -u -r ide_plugins/emacs/* $PORTABLE_PACKAGE_PLUGINS_DIR/emacs/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/idea/ + cp -u -r ide_plugins/idea/* $PORTABLE_PACKAGE_PLUGINS_DIR/idea/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/qt_creator/ + cp -u -r ide_plugins/qt_creator/* $PORTABLE_PACKAGE_PLUGINS_DIR/qt_creator/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/sublime_text/ + cp -u -r ide_plugins/sublime_text/* $PORTABLE_PACKAGE_PLUGINS_DIR/sublime_text/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/vim/ + cp -u -r ide_plugins/vim/* $PORTABLE_PACKAGE_PLUGINS_DIR/vim/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/vscode/ + cp -u -r ide_plugins/vscode/* $PORTABLE_PACKAGE_PLUGINS_DIR/vscode/ + mkdir -p $PORTABLE_PACKAGE_PLUGINS_DIR/visual_studio/ + cp -u -r ide_plugins/visual_studio/* $PORTABLE_PACKAGE_PLUGINS_DIR/visual_studio/ + + cd ./release/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/atom/ -cp -u -r ide_plugins/atom/* $APP_PACKAGE_DIR_WIN64/plugins/atom/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/eclipse/ -cp -u -r ide_plugins/eclipse/* $APP_PACKAGE_DIR_WIN64/plugins/eclipse/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/emacs/ -cp -u -r ide_plugins/emacs/* $APP_PACKAGE_DIR_WIN64/plugins/emacs/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/idea/ -cp -u -r ide_plugins/idea/* $APP_PACKAGE_DIR_WIN64/plugins/idea/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/qt_creator/ -cp -u -r ide_plugins/qt_creator/* $APP_PACKAGE_DIR_WIN64/plugins/qt_creator/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/sublime_text/ -cp -u -r ide_plugins/sublime_text/* $APP_PACKAGE_DIR_WIN64/plugins/sublime_text/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/vim/ -cp -u -r ide_plugins/vim/* $APP_PACKAGE_DIR_WIN64/plugins/vim/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/vscode/ -cp -u -r ide_plugins/vscode/* $APP_PACKAGE_DIR_WIN64/plugins/vscode/ -mkdir -p $APP_PACKAGE_DIR_WIN64/plugins/visual_studio/ -cp -u -r ide_plugins/visual_studio/* $APP_PACKAGE_DIR_WIN64/plugins/visual_studio/ + # PACKAGING SOURCETRAIL + echo -e "$INFO packaging sourcetrail portable for win$1" + winrar a -afzip Sourcetrail_${VERSION_STRING}_Windows_${1}bit_Portable.zip $PORTABLE_PACKAGE_NAME + cd ../ -# PACKAGING SOURCETRAIL -echo -e "$INFO packaging sourcetrail" -cd ./release/ - -winrar a -afzip Sourcetrail_${VERSION_STRING}_Windows_32bit.zip $APP_PACKAGE_NAME_WIN32 -winrar a -afzip Sourcetrail_${VERSION_STRING}_Windows_64bit.zip $APP_PACKAGE_NAME_WIN64 - - -# STORING PDB FILES -mkdir PDB_${APP_PACKAGE_NAME_WIN32} -cp -u -r ../build/win32/Release/app/Sourcetrail.pdb PDB_${APP_PACKAGE_NAME_WIN32}/ -mkdir PDB_${APP_PACKAGE_NAME_WIN64} -cp -u -r ../build/win64/Release/app/Sourcetrail.pdb PDB_${APP_PACKAGE_NAME_WIN64}/ - -cd ../ - - -# CLEANING UP -echo -e "$INFO Cleaning package folders" -rm -rf $APP_PACKAGE_DIR_WIN32 -rm -rf $APP_PACKAGE_DIR_WIN64 - - -# UNSETTING THE DEPLOY FLAG -rm -rf src/lib_gui/platform_includes/deploy.h -echo $'// #define DEPLOY' >src/lib_gui/platform_includes/deploy.h + # CLEANING UP + echo -e "$INFO Cleaning portable package folders for win$1" + rm -rf $PORTABLE_PACKAGE_DIR + } + + create_portable_zip "32" + create_portable_zip "64" +fi echo -e "$SUCCESS packaging complete!" diff --git a/script/setup.sh b/script/setup.sh index bc8fc54c..e4142bee 100755 --- a/script/setup.sh +++ b/script/setup.sh @@ -43,22 +43,57 @@ fi # Create Debug and Release folders echo -e $INFO "create build folders" if [ $PLATFORM == "Windows" ]; then - mkdir -p build/win32/Debug/app/platforms - mkdir -p build/win32/Debug/app/imageformats - mkdir -p build/win32/Debug/test/platforms - mkdir -p build/win32/Debug/test/imageformats - mkdir -p build/win32/Release/app/platforms - mkdir -p build/win32/Release/app/imageformats - mkdir -p build/win32/Release/test/platforms - mkdir -p build/win32/Release/test/imageformats - mkdir -p build/win64/Debug/app/platforms - mkdir -p build/win64/Debug/app/imageformats - mkdir -p build/win64/Debug/test/platforms - mkdir -p build/win64/Debug/test/imageformats - mkdir -p build/win64/Release/app/platforms - mkdir -p build/win64/Release/app/imageformats - mkdir -p build/win64/Release/test/platforms - mkdir -p build/win64/Release/test/imageformats + + copy_dynamic_libraries() # Parameters: bit {32, 64}, mode {Debug, Release}, target {app, test} + { + mkdir -p build/win$1/$2/$3/platforms + mkdir -p build/win$1/$2/$3/imageformats + + local QT_DIR=${QT_WIN32_DIR} + + if [[ "$1" == "64" ]] + then + QT_DIR=${QT_WIN64_DIR} + fi + + local SUFFIX="" + if [[ "$2" == "Debug" ]] + then + SUFFIX="d" + fi + + echo -e $INFO "copy dynamic libraries for Win$1 $2 $3" + + if [[ "$3" == "app" ]] + then + cp -u -r setup/dynamic_libraries/win$1/$3/$2/* build/win$1/$2/$3 + fi + + cp -u -r ${QT_DIR}/bin/Qt5Core$SUFFIX.dll build/win$1/$2/$3 + cp -u -r ${QT_DIR}/bin/Qt5Gui$SUFFIX.dll build/win$1/$2/$3 + cp -u -r ${QT_DIR}/bin/Qt5Network$SUFFIX.dll build/win$1/$2/$3 + cp -u -r ${QT_DIR}/bin/Qt5Widgets$SUFFIX.dll build/win$1/$2/$3 + cp -u -r ${QT_DIR}/bin/Qt5WinExtras$SUFFIX.dll build/win$1/$2/$3 + cp -u -r ${QT_DIR}/plugins/platforms/qwindows$SUFFIX.dll build/win$1/$2/$3/platforms + cp -u -r ${QT_DIR}/plugins/imageformats/qgif$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qicns$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qico$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qjpeg$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qsvg$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qtga$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qtiff$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qwbmp$SUFFIX.dll build/win$1/$2/$3/imageformats + cp -u -r ${QT_DIR}/plugins/imageformats/qwebp$SUFFIX.dll build/win$1/$2/$3/imageformats + } + + copy_dynamic_libraries "32" "Debug" "app" + copy_dynamic_libraries "32" "Debug" "test" + copy_dynamic_libraries "32" "Release" "app" + copy_dynamic_libraries "32" "Release" "test" + copy_dynamic_libraries "64" "Debug" "app" + copy_dynamic_libraries "64" "Debug" "test" + copy_dynamic_libraries "64" "Release" "app" + copy_dynamic_libraries "64" "Release" "test" else mkdir -p build/Debug/app mkdir -p build/Debug/test @@ -66,143 +101,8 @@ else mkdir -p build/Release/test fi -# Copy necessary dynamic libraries to bin folder -if [ $PLATFORM == "Windows" ]; then - echo -e $INFO "copy dynamic libraries for app" - cp -u -r setup/dynamic_libraries/win32/app/Debug/* build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Cored.dll build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Guid.dll build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Networkd.dll build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Widgetsd.dll build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5WinExtrasd.dll build/win32/Debug/app - cp -u -r ${QT_WIN32_DIR}/plugins/platforms/qwindowsd.dll build/win32/Debug/app/platforms - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qgifd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicnsd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicod.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qjpegd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qsvgd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtgad.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtiffd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwbmpd.dll build/win32/Debug/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwebpd.dll build/win32/Debug/app/imageformats - - cp -u -r setup/dynamic_libraries/win32/app/Release/* build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Core.dll build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Gui.dll build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Network.dll build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Widgets.dll build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/bin/Qt5WinExtras.dll build/win32/Release/app - cp -u -r ${QT_WIN32_DIR}/plugins/platforms/qwindows.dll build/win32/Release/app/platforms - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qgif.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicns.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qico.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qjpeg.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qsvg.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtga.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtiff.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwbmp.dll build/win32/Release/app/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwebp.dll build/win32/Release/app/imageformats - - cp -u -r setup/dynamic_libraries/win64/app/Debug/* build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Cored.dll build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Guid.dll build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Networkd.dll build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Widgetsd.dll build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5WinExtrasd.dll build/win64/Debug/app - cp -u -r ${QT_WIN64_DIR}/plugins/platforms/qwindowsd.dll build/win64/Debug/app/platforms - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qgifd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicnsd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicod.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qjpegd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qsvgd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtgad.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtiffd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwbmpd.dll build/win64/Debug/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwebpd.dll build/win64/Debug/app/imageformats - - cp -u -r setup/dynamic_libraries/win64/app/Release/* build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Core.dll build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Gui.dll build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Network.dll build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Widgets.dll build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/bin/Qt5WinExtras.dll build/win64/Release/app - cp -u -r ${QT_WIN64_DIR}/plugins/platforms/qwindows.dll build/win64/Release/app/platforms - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qgif.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicns.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qico.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qjpeg.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qsvg.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtga.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtiff.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwbmp.dll build/win64/Release/app/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwebp.dll build/win64/Release/app/imageformats - - - echo -e $INFO "copy dynamic libraries for tests" - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Cored.dll build/win32/Debug/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Guid.dll build/win32/Debug/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Networkd.dll build/win32/Debug/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Widgetsd.dll build/win32/Debug/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5WinExtrasd.dll build/win32/Debug/test - cp -u -r ${QT_WIN32_DIR}/plugins/platforms/qwindowsd.dll build/win32/Debug/test/platforms - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qgifd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicnsd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicod.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qjpegd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qsvgd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtgad.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtiffd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwbmpd.dll build/win32/Debug/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwebpd.dll build/win32/Debug/test/imageformats - - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Core.dll build/win32/Release/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Gui.dll build/win32/Release/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Network.dll build/win32/Release/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5Widgets.dll build/win32/Release/test - cp -u -r ${QT_WIN32_DIR}/bin/Qt5WinExtras.dll build/win32/Release/test - cp -u -r ${QT_WIN32_DIR}/plugins/platforms/qwindows.dll build/win32/Release/test/platforms - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qgif.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qicns.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qico.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qjpeg.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qsvg.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtga.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qtiff.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwbmp.dll build/win32/Release/test/imageformats - cp -u -r ${QT_WIN32_DIR}/plugins/imageformats/qwebp.dll build/win32/Release/test/imageformats - - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Cored.dll build/win64/Debug/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Guid.dll build/win64/Debug/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Networkd.dll build/win64/Debug/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Widgetsd.dll build/win64/Debug/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5WinExtrasd.dll build/win64/Debug/test - cp -u -r ${QT_WIN64_DIR}/plugins/platforms/qwindowsd.dll build/win64/Debug/test/platforms - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qgifd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicnsd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicod.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qjpegd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qsvgd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtgad.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtiffd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwbmpd.dll build/win64/Debug/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwebpd.dll build/win64/Debug/test/imageformats - - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Core.dll build/win64/Release/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Gui.dll build/win64/Release/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Network.dll build/win64/Release/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5Widgets.dll build/win64/Release/test - cp -u -r ${QT_WIN64_DIR}/bin/Qt5WinExtras.dll build/win64/Release/test - cp -u -r ${QT_WIN64_DIR}/plugins/platforms/qwindows.dll build/win64/Release/test/platforms - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qgif.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qicns.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qico.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qjpeg.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qsvg.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtga.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qtiff.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwbmp.dll build/win64/Release/test/imageformats - cp -u -r ${QT_WIN64_DIR}/plugins/imageformats/qwebp.dll build/win64/Release/test/imageformats +if [ $PLATFORM == "Windows" ]; then echo -e $INFO "copy test_main file" cp -u setup/cxx_test/windows/test_main.cpp build/win32 cp -u setup/cxx_test/windows/test_main.cpp build/win64 @@ -211,6 +111,7 @@ if [ $PLATFORM == "Windows" ]; then sh script/create_windows_icon.sh fi + echo -e $INFO "create symbolic links for data" if [ $PLATFORM == "Windows" ]; then BACKSLASHED_ROOT_DIR="${ROOT_DIR//\//\\}" diff --git a/src/lib/utility/AppPath.cpp b/src/lib/utility/AppPath.cpp index 1720df2c..d220da79 100644 --- a/src/lib/utility/AppPath.cpp +++ b/src/lib/utility/AppPath.cpp @@ -6,53 +6,9 @@ std::string AppPath::m_appPath = ""; std::string AppPath::getAppPath() { - if (m_appPath.length() <= 0) - { - setupAppPath(); - } - return m_appPath; } -void AppPath::setupAppPath() -{ -#ifdef _WIN32 - HMODULE hModule = GetModuleHandleW(NULL); - WCHAR path[MAX_PATH]; - GetModuleFileNameW(hModule, path, MAX_PATH); - - std::wstring wPath(path); - m_appPath = std::string(wPath.begin(), wPath.end()); - - size_t pos = m_appPath.find_last_of("/"); - if (pos == std::string::npos) - { - pos = m_appPath.find_last_of("\\"); - } - if (pos != std::string::npos) - { - m_appPath = m_appPath.substr(0, pos + 1); - } -#elif _WIN64 - HMODULE hModule = GetModuleHandleW(NULL); - WCHAR path[MAX_PATH]; - GetModuleFileNameW(hModule, path, MAX_PATH); - - std::wstring wPath(path); - m_appPath = std::string(wPath.begin(), wPath.end()); - - size_t pos = m_appPath.find_last_of("/"); - if (pos == std::string::npos) - { - pos = m_appPath.find_last_of("\\"); - } - if (pos != std::string::npos) - { - m_appPath = m_appPath.substr(0, pos + 1); - } -#endif // WINDOWS -} - bool AppPath::setAppPath(std::string path) { if(!path.empty()) diff --git a/src/lib/utility/AppPath.h b/src/lib/utility/AppPath.h index c9903404..81fd767f 100644 --- a/src/lib/utility/AppPath.h +++ b/src/lib/utility/AppPath.h @@ -7,11 +7,7 @@ #define WIN32_LEAN_AND_MEAN #define NOMINMAX #include -#elif _WIN64 -#define WIN32_LEAN_AND_MEAN -#define NOMINMAX -#include -#endif // WINDOWS +#endif // _WIN32 class AppPath { @@ -20,8 +16,6 @@ public: static bool setAppPath(std::string path); private: - static void setupAppPath(); - static std::string m_appPath; }; diff --git a/src/lib_gui/CMakeLists.txt b/src/lib_gui/CMakeLists.txt index edba17b4..f1fa3408 100644 --- a/src/lib_gui/CMakeLists.txt +++ b/src/lib_gui/CMakeLists.txt @@ -1,7 +1,6 @@ add_files( LIB_GUI_FILES - platform_includes/deploy.h platform_includes/includesLinux.h platform_includes/includesMac.h platform_includes/includesWindows.h diff --git a/src/lib_gui/platform_includes/deploy.h b/src/lib_gui/platform_includes/deploy.h deleted file mode 100644 index 8b8c4369..00000000 --- a/src/lib_gui/platform_includes/deploy.h +++ /dev/null @@ -1 +0,0 @@ -// #define DEPLOY diff --git a/src/lib_gui/platform_includes/includesWindows.h b/src/lib_gui/platform_includes/includesWindows.h index 85b032eb..8fb33109 100644 --- a/src/lib_gui/platform_includes/includesWindows.h +++ b/src/lib_gui/platform_includes/includesWindows.h @@ -8,35 +8,54 @@ #include "vld.h" #include "utility/file/FileSystem.h" +#include "utility/AppPath.h" #include "utility/ResourcePaths.h" #include "utility/UserPaths.h" #include "utility/utility.h" -#include "platform_includes/deploy.h" - void setupPlatform(int argc, char *argv[]) { } void setupApp(int argc, char *argv[]) { -#ifdef DEPLOY - std::string path = std::getenv("APPDATA"); - path += "/../local/Coati Software/"; - if (utility::getApplicationArchitectureType() == APPLICATION_ARCHITECTURE_X86_64) { - path += "Sourcetrail 64-bit/"; + HMODULE hModule = GetModuleHandleW(NULL); + WCHAR path[MAX_PATH]; + GetModuleFileNameW(hModule, path, MAX_PATH); + + const std::wstring wPath(path); + std::string appPath = std::string(wPath.begin(), wPath.end()); + + size_t pos = appPath.find_last_of("/"); + if (pos == std::string::npos) + { + pos = appPath.find_last_of("\\"); + } + if (pos != std::string::npos) + { + appPath = appPath.substr(0, pos + 1); + } + AppPath::setAppPath(FilePath(appPath).str()); } - else + { - path += "Sourcetrail/"; + FilePath userDataPath(AppPath::getAppPath() + "user/"); + if (!userDataPath.exists()) + { + userDataPath = FilePath(std::string(std::getenv("APPDATA")) + "/../local/Coati Software/"); + if (utility::getApplicationArchitectureType() == APPLICATION_ARCHITECTURE_X86_64) + { + userDataPath.concatenate(FilePath("Sourcetrail 64-bit/")); + } + else + { + userDataPath.concatenate(FilePath("Sourcetrail/")); + } + userDataPath.makeCanonical(); + } + UserPaths::setUserDataPath(userDataPath); } - UserPaths::setUserDataPath(FilePath(path)); -#else - std::string path = QDir::currentPath().toStdString(); - path += "/user/"; - UserPaths::setUserDataPath(FilePath(path)); -#endif // This "copyFile" method does nothing if the copy destination already exist FileSystem::copyFile(ResourcePaths::getFallbackPath().concatenate(FilePath("ApplicationSettings.xml")), UserPaths::getAppSettingsPath());