diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f112fc8218751fd4beae602e2f48d6dc22c39443..4c664b92eb45d6af0fd6f102c3f059230c944272 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ native_Debian_clang:
     - export CC=gcc; export CXX=g++
     - export PYTHONPATH=$CI_PROJECT_DIR/build/lib
     - export MPLBACKEND=Agg
+    - QTCMAKE="/usr/local/Qt6/6.2.3/gcc_64/lib/cmake"
     - cmake --version
     - clang --version
   stage: build
@@ -20,15 +21,15 @@ native_Debian_clang:
     - env
     - mkdir build
     - cd build
-    - time cmake .. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBA_PY_PACKAGE=ON -DCMAKE_PREFIX_PATH=$QCMAKE -DZERO_TOLERANCE=ON
+    - time cmake .. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBA_PY_PACKAGE=ON -DCMAKE_PREFIX_PATH=$QTCMAKE -DZERO_TOLERANCE=ON
     - time make -j24
     - time xvfb-run -a ctest -j16 --output-on-failure
     - time make package_source
     - time bash var/mk_pypack_linux.sh
-    - time cpack -B ./package .
+    - time cpack -B ./installer .
   artifacts:
     paths:
-    - build/package/BornAgain*.sh
+    - build/installer/BornAgain*.sh
     - build/PythonPackage/py*/wheel/*.whl
     expire_in: 10 days
 
@@ -43,7 +44,7 @@ versiondocs:
     - hugo version
     - mkdir build
     - cd build
-    - time cmake .. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_PREFIX_PATH=$QCMAKE
+    - time cmake .. -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_PREFIX_PATH=$QTCMAKE
     - time make -j8
     - time make -j8 webdoc
     - rm -rf ~www/ba/git-main/hugo-public
@@ -68,10 +69,10 @@ mac_x64:
     - make -j$NPROC
     - ctest -j3 --output-on-failure
     - zsh var/mk_pypack_macos.zsh
-    - cpack .
+    - cpack -B ./installer .
   artifacts: &mac_artifacts
     paths:
-    - build/*.dmg
+    - build/installer/*.dmg
     - build/PythonPackage/py*/wheel/*.whl
     expire_in: 10 days
 
@@ -123,14 +124,14 @@ windows:
     - pwd
     # configure, make, test, pack
     - cmake --version
-    - cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 -DCMAKE_PREFIX_PATH="$OPT_DIR;$QTCMake_DIR" -DQTDIR="$QT_MSVC_DIR" -DCMAKE_INCLUDE_PATH="$BOOST_INCLUDE_DIR" -DCMAKE_LIBRARY_PATH="$BOOST_LIB_DIR" -DBA_PY_PACKAGE=ON -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -B. ..
+    - cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 -DCMAKE_PREFIX_PATH="$OPT_DIR;$QTCMake_DIR" -DCMAKE_INCLUDE_PATH="$BOOST_INCLUDE_DIR" -DCMAKE_LIBRARY_PATH="$BOOST_LIB_DIR" -DBA_PY_PACKAGE=ON -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -B. ..
     - pwd
     - if($CI_PIPELINE_SOURCE -eq "schedule") { cmake --build . --target clean; echo "redundant target purge done" }
     - cmake --build . --config Release
     - ctest -C Release --parallel 8 --output-on-failure
-    - cpack -C Release -B ./winpackage
+    - cpack -C Release -B ./installer .
   artifacts:
     paths:
-    - build/winpackage/BornAgain*.exe
+    - build/installer/BornAgain*.exe
     - build/PythonPackage/py*/wheel/*.whl
     expire_in: 10 days
diff --git a/App/CMakeLists.txt b/App/CMakeLists.txt
index eda9c53e98a09ea975a64ff9c84df90e5c992bc5..3c9194d132684c10c67d774c4cf88484dd5cb1d2 100644
--- a/App/CMakeLists.txt
+++ b/App/CMakeLists.txt
@@ -116,28 +116,28 @@ if(BA_APPLE_BUNDLE)
         RENAME qt.conf)
 
     # adjust MacOS bundle
-    set(MACPK_ROOT_DIR "${CMAKE_INSTALL_PREFIX}/${destination_prefix}")
-    set(MACPK_MAIN_EXE "${executable_name}")
-    set(MACPK_QTDIR "${Qt_DIR}")
+    set(MACPKG_ROOT_DIR "${CMAKE_INSTALL_PREFIX}/${destination_prefix}")
+    set(MACPKG_MAIN_EXE "${executable_name}")
     # NOTE: Only cerf and formfactor libraries should be passed;
     #   other libraries will be found automatically.
-    set(MACPK_EXTRA_LIBS
+    set(MACPKG_EXTRA_LIBS
         ${Cerf_LIBRARIES}
         ${FormFactor_LIBRARIES}
         )
     # list of required Qt plugins (paths relative to Qt root dir)
-    set(MACPK_QT_PLUGINS
-        plugins/platforms/libqcocoa.dylib
-        plugins/iconengines/libqsvgicon.dylib
-        plugins/imageformats/libqjpeg.dylib
-        plugins/imageformats/libqsvg.dylib
-        plugins/styles/libqmacstyle.dylib
+    set(MACPKG_QT_PLUGINS_RELDIR "${QT6_INSTALL_PLUGINS}")
+    set(MACPKG_QT_PLUGINS
+        platforms/libqcocoa.dylib
+        iconengines/libqsvgicon.dylib
+        imageformats/libqjpeg.dylib
+        imageformats/libqsvg.dylib
+        styles/libqmacstyle.dylib
         )
     # Qt plugins directory in within the MacOS bundle
-    set(MACPK_QT_PLUGINS_DIR PlugIns)  # conform to settings in `qt.conf`
+    set(MACPKG_QT_PLUGINS_DIR PlugIns)  # conform to settings in `qt.conf`
     # convert CMake list to space-separated lists
-    string(REPLACE ";" " " MACPK_EXTRA_LIBS "${MACPK_EXTRA_LIBS}")
-    string(REPLACE ";" " " MACPK_QT_PLUGINS "${MACPK_QT_PLUGINS}")
+    string(REPLACE ";" " " MACPKG_EXTRA_LIBS "${MACPKG_EXTRA_LIBS}")
+    string(REPLACE ";" " " MACPKG_QT_PLUGINS "${MACPKG_QT_PLUGINS}")
 
     configure_file("${CMAKE_SOURCE_DIR}/devtools/deploy/mac/adjust_mac_bundle.zsh.in"
         "${BUILD_VAR_DIR}/adjust_mac_bundle.zsh" @ONLY)
@@ -157,25 +157,16 @@ if(WIN32)
     # extract Qt root-dir
     # 'C:/Qt/6.2.4/msvc2019_64/lib/cmake/Qt6' => 'C:/Qt/6.2.4/msvc2019_64'
     file(TO_CMAKE_PATH "${Qt_DIR}" qt_dir_str)
-    string(REGEX MATCH "(.*)/lib/cmake.*" _v "${qt_dir_str}")
-    set(Qt_ROOT_DIR "${CMAKE_MATCH_1}")
-    message(STATUS "Qt root directory: '${Qt_ROOT_DIR}'")
 
     install(FILES
-    ${Qt_ROOT_DIR}/bin/opengl32sw.dll
+    ${Qt_DIR}/bin/opengl32sw.dll
     DESTINATION ${destination_lib} COMPONENT Libraries)
-
-    set(Qt_PLUGINS_DIR "${Qt_ROOT_DIR}/plugins")
-    message(STATUS "Qt plugins directory: '${Qt_PLUGINS_DIR}'")
-
     install(FILES
     ${Qt_PLUGINS_DIR}/platforms/qwindows.dll
     DESTINATION bin/platforms COMPONENT Libraries)
-
     install(FILES
     ${Qt_PLUGINS_DIR}/iconengines/qsvgicon.dll
     DESTINATION bin/iconengines COMPONENT Libraries)
-
     install(FILES
     ${Qt_PLUGINS_DIR}/imageformats/qjpeg.dll
     ${Qt_PLUGINS_DIR}/imageformats/qsvg.dll
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31e45ab9b795ecd1d4d6d15d3c969574cfe45644..0be308bb7e66a78a4299d34c30e44e60922722f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -58,7 +58,7 @@ if(BA_PY_PLATFORM)
 endif()
 
 option(BUILD_DEBIAN "Build a debian package" OFF)
-option(BA_APPLE_BUNDLE "Create a Mac OS X bundle" OFF)
+option(BA_APPLE_BUNDLE "Create a MacOS bundle" OFF)
 option(BA_CPP_API "Install header files" OFF)
 
 # note on a non-options: macro SWIG is defined when code is processed by the tool Swig.
diff --git a/GUI/CMakeLists.txt b/GUI/CMakeLists.txt
index 886d797e3684a19678662a19872d2d40eee6bcf3..8f611c4327ec29862590d52e4633540799b52ec9 100644
--- a/GUI/CMakeLists.txt
+++ b/GUI/CMakeLists.txt
@@ -71,6 +71,5 @@ set_target_properties(${lib} PROPERTIES
     )
 
 install(TARGETS ${lib}
-    LIBRARY DESTINATION ${destination_lib}
-    RUNTIME DESTINATION ${destination_lib}
-    COMPONENT Libraries)
+    LIBRARY DESTINATION ${destination_lib} COMPONENT Libraries
+    RUNTIME DESTINATION ${destination_lib} COMPONENT Libraries)
diff --git a/cmake/BornAgain/Directories.cmake b/cmake/BornAgain/Directories.cmake
index 7b8968fccb96d5977af81f102f291fa76bb254d3..fc970c2b63dd75185700ba49bf3289033feb013f 100644
--- a/cmake/BornAgain/Directories.cmake
+++ b/cmake/BornAgain/Directories.cmake
@@ -90,11 +90,8 @@ set(destination_share ${destination_root}share/${destination_suffix}/)
 set(destination_examples ${destination_share}Examples/)
 set(destination_images ${destination_share}Images/)
 set(destination_man ${destination_share}man/man1)
-if(LINUX)
-    set(destination_man ${CMAKE_INSTALL_PREFIX}/man/man1)
-endif(LINUX)
 
-list(APPEND dstIds bin lib include share examples images)
+list(APPEND dstIds bin lib include share examples images man)
 
 message(STATUS "Destination directories:")
 foreach(dstId IN LISTS dstIds)
diff --git a/cmake/BornAgain/Linux.cmake b/cmake/BornAgain/Linux.cmake
index 08f0384d7324983d555111f1b687a4dd0d626a35..64b085cbcfb394b296eea47b28f18031770095a9 100644
--- a/cmake/BornAgain/Linux.cmake
+++ b/cmake/BornAgain/Linux.cmake
@@ -4,7 +4,7 @@ set(BA_PLATFORM linux)
 if(CMAKE_SIZEOF_VOID_P GREATER 4)
     message(STATUS "Found a 64bit system")
     if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL x86_64)
-        set(BA_ARCHITECTURE linux-x86_64)
+        set(BA_ARCHITECTURE linux_x64)
     endif()
 else()
     message(STATUS "Found a 32bit system, not covered by our CI tests - proceed on your own risk")
diff --git a/cmake/BornAgain/MacOS.cmake b/cmake/BornAgain/MacOS.cmake
index d7a007d9862bff1fdf5184e6b14236f08c8936b4..9f84cc74414cf32977eb7bb6212ac4e48bb40667 100644
--- a/cmake/BornAgain/MacOS.cmake
+++ b/cmake/BornAgain/MacOS.cmake
@@ -1,5 +1,4 @@
-set(BA_ARCHITECTURE macosx)
-set(BA_PLATFORM macosx)
+set(BA_PLATFORM mac)
 
 if(NOT CMAKE_SYSTEM_NAME MATCHES Darwin)
     message(FATAL_ERROR "Found a non-Darwin system, currently unsupported")
@@ -11,10 +10,10 @@ execute_process(COMMAND sw_vers "-productVersion"
 execute_process(COMMAND sw_vers "-productVersion"
     COMMAND cut -d . -f 2
     OUTPUT_VARIABLE MACOSX_MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
-message(STATUS "Found a Mac OS X System ${MACOSX_VERSION}, minor ${MACOSX_MINOR}")
+message(STATUS "Found a MacOS System ${MACOSX_VERSION}, minor ${MACOSX_MINOR}")
 
-if((${MACOSX_VERSION} EQ 10) AND (${MACOSX_MINOR} LESS 15))
-    message(FATAL_ERROR "Found a MacOS X < 10.15, which is unsupported")
+if(${MACOSX_VERSION} LESS 11)
+    message(FATAL_ERROR "Found a MacOS < 11.0, which is unsupported")
 endif()
 
 #TODO: check haveconfig and rpath -> set rpath true
@@ -24,13 +23,25 @@ execute_process(COMMAND /usr/sbin/sysctl machdep.cpu.extfeatures OUTPUT_VARIABLE
 if(NOT ${SYSCTL_OUTPUT} MATCHES 64)
     message(FATAL "Found a 32bit system - no longer supported")
 endif()
+
+if(${CMAKE_SYSTEM_PROCESSOR} MATCHES arm)
+    # arch = arm64
+    set(BA_ARCHITECTURE "${BA_PLATFORM}_arm")
+else()
+    # arch = x86_64
+    set(BA_ARCHITECTURE "${BA_PLATFORM}_x64")
+endif()
+
+# On OS X, the `-dead_strip` flag removes unneeded symbols/object files, and
+# `-dead_strip_dylibs` flag removes unneeded libraries [see `man ld` on OSX]
+set(DEADSTRIP_LFLAGS "-dead_strip -dead_strip_dylibs")
 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
-string(APPEND CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS " -m64")
-string(APPEND CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS " -m64")
+string(APPEND CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS " -m64 ${DEADSTRIP_LFLAGS}")
+string(APPEND CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS " -m64 ${DEADSTRIP_LFLAGS}")
 string(APPEND CMAKE_CXX_FLAGS " -m64 -I${CMAKE_SOURCE_DIR}/Wrap")
 string(APPEND CMAKE_C_FLAGS " -m64")
-string(APPEND CMAKE_C_LINK_FLAGS " -bind_at_load -m64")
-string(APPEND CMAKE_CXX_LINK_FLAGS " -bind_at_load -m64")
+# string(APPEND CMAKE_C_LINK_FLAGS " -bind_at_load -m64")
+# string(APPEND CMAKE_CXX_LINK_FLAGS " -bind_at_load -m64")
 
 
 if(CMAKE_COMPILER_IS_GNUCXX)
diff --git a/cmake/BornAgain/MakeLib.cmake b/cmake/BornAgain/MakeLib.cmake
index 8c5c215ce3902e3dae5333d3076b83f810c10dfe..db4348fc3e723e73b34017d458df641aa12d191f 100644
--- a/cmake/BornAgain/MakeLib.cmake
+++ b/cmake/BornAgain/MakeLib.cmake
@@ -36,7 +36,7 @@ function(MakeLib name lib tmpdir withPython)
     # see 'Dynamic-Link Library Search Order'
     # <https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order>
 
-    if(APPLE AND BA_APPLE_BUNDLE)
+    if(APPLE AND (BA_APPLE_BUNDLE OR BA_PY_PACKAGE))
         # Add proper RPATHs as hints to load the dependencies at run-time
         set(link_flags "-Wl,-rpath,@loader_path -Wl,-rpath,@loader_path/extra")
         set_target_properties(${lib} PROPERTIES LINK_FLAGS ${link_flags})
diff --git a/cmake/BornAgain/Pack.cmake b/cmake/BornAgain/Pack.cmake
index 313500b043bded0a3b0b581708df9fe98513120f..b85d881653a234996ad9e45070895784462be998 100644
--- a/cmake/BornAgain/Pack.cmake
+++ b/cmake/BornAgain/Pack.cmake
@@ -12,6 +12,9 @@ set(CPACK_PACKAGE_RELOCATABLE True)
 set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION})
 set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_SOURCE_PACKAGE_FILE_NAME})
 
+set(SELECTED_PYTHON_VERSION "python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
+set(_pkgname ${CPACK_SOURCE_PACKAGE_FILE_NAME}-${SELECTED_PYTHON_VERSION}-${BA_ARCHITECTURE})
+
 if(WIN32)
     include(BornAgain/PackWindows)
 elseif(APPLE)
@@ -21,12 +24,20 @@ elseif(UNIX)
         include(BornAgain/PackDebian)
     endif()
     set(CPACK_BINARY_TZ OFF)
+    set(CPACK_BINARY_TGZ OFF)
     include(BornAgain/PackSource)
 endif()
 
+set(CPACK_PACKAGE_FILE_NAME ${_pkgname})
+
+# NOTE: The 'Unspecified' component is a _default_ component of CPack needed to finalize
+# the installer. It must be at the end of all other components.
+set(CPACK_COMPONENTS_ALL Libraries Headers Examples Applications Runtime Unspecified)
+
 include(CPack)
 
-set(CPACK_COMPONENTS_ALL Libraries Headers Examples Applications Runtime)
+# reset package name (CPack bug: the original value is overwritten by CPack module)
+set(CPACK_PACKAGE_FILE_NAME ${_pkgname})
 
 message(STATUS "Installer name: ${CPACK_PACKAGE_FILE_NAME}")
 message(STATUS "Source package name: ${CPACK_SOURCE_PACKAGE_FILE_NAME}")
diff --git a/cmake/BornAgain/PackMacOS.cmake b/cmake/BornAgain/PackMacOS.cmake
index 58b95f1da1512a4022d7bd28e2f7657a0475c03d..1710a9453b148d012c19b91c03d369a133c19886 100644
--- a/cmake/BornAgain/PackMacOS.cmake
+++ b/cmake/BornAgain/PackMacOS.cmake
@@ -1,9 +1,4 @@
 # BornAgain Mac packaging
 
-set(SELECTED_PYTHON_VERSION "python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
-
-set(CPACK_PACKAGE_FILE_NAME
-    "${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION}-${SELECTED_PYTHON_VERSION}-${BA_ARCHITECTURE}")
-
 set(CPACK_BINARY_DRAGNDROP ON)
 set(CPACK_GENERATOR "DragNDrop")
diff --git a/cmake/BornAgain/PackWindows.cmake b/cmake/BornAgain/PackWindows.cmake
index f047dde864438001eea26fb846749bc810ccf721..44bd7dfcecefc6ba947a4d71b0074cd55f2778c1 100644
--- a/cmake/BornAgain/PackWindows.cmake
+++ b/cmake/BornAgain/PackWindows.cmake
@@ -1,10 +1,5 @@
 # BornAgain Windows packaging
 
-set(SELECTED_PYTHON_VERSION "python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
-
-set(CPACK_PACKAGE_FILE_NAME
-    "${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION}-${SELECTED_PYTHON_VERSION}-${BA_ARCHITECTURE}")
-
 set(CPACK_GENERATOR "NSIS")
 
 set(CPACK_NSIS_INSTALL_ROOT "C:")
@@ -12,7 +7,6 @@ set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
 
 set(CPACK_NSIS_MENU_LINKS "bin\\\\BornAgain.exe" "BornAgain")
 
-
 set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/GUI\\\\images\\\\BornAgain.ico" )
 set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/GUI\\\\images\\\\BornAgain.ico" )
 set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/GUI\\\\images\\\\BornAgain.ico" )
diff --git a/cmake/BornAgain/Qt.cmake b/cmake/BornAgain/Qt.cmake
index e0a627f9d163fa197e368837e2eeb94a7ae75118..dd0990c66723ff2e9bec116a43c03faed7d82733 100644
--- a/cmake/BornAgain/Qt.cmake
+++ b/cmake/BornAgain/Qt.cmake
@@ -11,15 +11,23 @@ elseif(${Qt6Core_VERSION} VERSION_GREATER_EQUAL "6.2")
     string(APPEND CMAKE_CXX_FLAGS " -DQT_NO_DEPRECATED_WARNINGS")
 endif()
 
-set(Qt_DIR "${Qt6_DIR}" CACHE INTERNAL "")
+set(Qt_DIR "${QT6_INSTALL_PREFIX}" CACHE INTERNAL "")
 set(Qt_VERSION "${Qt6Core_VERSION}" CACHE INTERNAL "")
-set(Qt_INCLUDE_DIR "${Qt6Widgets_INCLUDE_DIRS}" CACHE INTERNAL "")
+set(Qt_INCLUDE_DIR "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_HEADERS}" CACHE INTERNAL "")
+set(Qt_PLUGINS_DIR "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_PLUGINS}" CACHE INTERNAL "")
+set(Qt_LIBS_DIR "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_LIBS}" CACHE INTERNAL "")
+set(Qt_BIN_DIR "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}" CACHE INTERNAL "")
+
 foreach(cmp Core Gui Widgets PrintSupport Svg OpenGL)
     string(APPEND qt_libs " ${Qt6${cmp}_LIBRARIES}")
 endforeach()
 set(Qt_LIBRARIES "${qt_libs}" CACHE INTERNAL "")
 
-message(STATUS "  Qt ${Qt6Core_VERSION} directory: ${Qt_DIR}")
+message(STATUS "  Qt ${Qt_VERSION} directory: ${Qt_DIR}")
+message(STATUS "  Qt include directory: '${Qt_INCLUDE_DIR}'")
+message(STATUS "  Qt libraries directory: '${Qt_LIBS_DIR}'")
+message(STATUS "  Qt plugins directory: '${Qt_PLUGINS_DIR}'")
+message(STATUS "  Qt binaries directory: '${Qt_BIN_DIR}'")
 
 get_target_property(Qt6Widgets_location Qt6::Widgets LOCATION_Release)
 message(STATUS "  ${Qt6Widgets_LIBRARIES} ${Qt6Widgets_location}")
@@ -29,5 +37,3 @@ get_target_property(Qt6Gui_location Qt6::Gui LOCATION_Release)
 message(STATUS "  ${Qt6Gui_LIBRARIES} ${Qt6Gui_location}")
 get_target_property(Qt6OpenGL_location Qt6::OpenGL LOCATION_Release)
 message(STATUS "  ${Qt6OpenGL_LIBRARIES} ${Qt6OpenGL_location}")
-
-message(STATUS "  Includes: ${Qt6Widgets_INCLUDE_DIRS}")
diff --git a/devtools/deploy/linux/adjust_pkg_linux.sh.in b/devtools/deploy/linux/adjust_pkg_linux.sh.in
index f155f36173763ba80922ff2fdc1acbc2bb07d45d..5cd31537dc5ee5c0879589b87d2d5cd83798a51e 100644
--- a/devtools/deploy/linux/adjust_pkg_linux.sh.in
+++ b/devtools/deploy/linux/adjust_pkg_linux.sh.in
@@ -20,6 +20,9 @@
 pkg_root_dir="$1"
 main_exe="@LINUXPKG_MAIN_EXE@"
 framework_dir="$pkg_root_dir/@LINUXPKG_FRAMEWORK_DEST@"
+qt_root_dir="@Qt_DIR@"
+qt_plugins_dir="@Qt_PLUGINS_DIR@"
+qt_libs_dir="@Qt_LIBS_DIR@"
 
 # constants
 TITLE="Linux Package"
@@ -82,15 +85,9 @@ deps_kv_re='s/'$ldd_re'/lib\1\2'$KVFS'\3/p'
 deps=$(ldd $main_exe)
 
 #-- Qt extra dependencies
-# obtain Qt root directory
-# eg. `/lib/x86_64-linux-gnu/libQt5Core.so.5` => `/lib/x86_64-linux-gnu`
-qtdir=$(echo "$deps" | sed -nE 's;.+ =>[[:blank:]]*(.+)/libQt.+;\1;p' | head -n1)
 # obtain Qt major version
 # eg. `/lib/x86_64-linux-gnu/libQt5Core.so.5.1.12` => `5`
-qtversion=$(echo "$deps" | sed -nE 's;.+ =>[[:blank:]]*.+/libQt.+\.so\.([1-9]).+;\1;p' | head -n1)
-# Qt root dir
-qtrootdir="$qtdir/.."  # eg. `/lib/x86_64-linux-gnu/qt5`
-qtpluginsdir="$qtrootdir/plugins" # eg. `/lib/x86_64-linux-gnu/qt5/plugins`
+qt_version=$(echo "$deps" | sed -nE 's;.+ =>[[:blank:]]*.+/libQt.+\.so\.([1-9]).+;\1;p' | head -n1)
 
 #-- Qt for X11 requirements
 # see <https://doc.qt.io/qt-5/linux-requirements.html>
@@ -103,13 +100,14 @@ imageformats="libqgif.so libqico.so libqjpeg.so libqsvg.so"
 xcbglintegrations="libqxcb-egl-integration.so libqxcb-glx-integration.so"
 
 # add extra dependencies from the Qt platforms plugin
-deps="$deps\n"$(ldd "$qtpluginsdir/platforms/libqxcb.so")
+deps="$deps\n"$(ldd "$qt_plugins_dir/platforms/libqxcb.so")
 for plg in $imageformats; do
-    deps="$deps\n"$(ldd "$qtpluginsdir/imageformats/$plg")
+    deps="$deps\n"$(ldd "$qt_plugins_dir/imageformats/$plg")
 done
 
-echo "$TITLE: Qt root dir = '$qtrootdir'"
-echo "$TITLE: Qt major version = '$qtversion'"
+echo "$TITLE: Qt root dir = '$qt_root_dir'"
+echo "$TITLE: Qt major version = '$qt_version'"
+echo "$TITLE: Qt plugins dir = '$qt_plugins_dir'"
 
 # collect all the package dependencies (discard duplicates)
 deps=$(echo "$deps" | sed -nE $deps_kv_re)
@@ -145,25 +143,25 @@ for lib in $framework_dir/*.so*; do
 done
 
 # copy required Qt plugins to the corresponding directory
-pkg_pluginsdir="$pkg_root_dir/plugins"
-echo "$TITLE: Copying Qt plugins to '$pkg_pluginsdir'..."
+pkg_plugins_dir="$pkg_root_dir/plugins"
+echo "$TITLE: Copying Qt plugins from '$qt_plugins_dir' to '$pkg_plugins_dir'..."
 # platform plugins
-dst="$pkg_pluginsdir/platforms"
+dst="$pkg_plugins_dir/platforms"
 $MKDIR "$dst"
 for plg in $platforms; do
-    $COPY "$qtpluginsdir/platforms/$plg" "$dst/$plg"
+    $COPY "$qt_plugins_dir/platforms/$plg" "$dst/$plg"
 done
 # xcb-GL integrations
-dst="$pkg_pluginsdir/xcbglintegrations"
+dst="$pkg_plugins_dir/xcbglintegrations"
 $MKDIR "$dst"
 for plg in $xcbglintegrations; do
-    $COPY "$qtpluginsdir/xcbglintegrations/$plg" "$dst/$plg"
+    $COPY "$qt_plugins_dir/xcbglintegrations/$plg" "$dst/$plg"
 done
 # image formats
-dst="$pkg_pluginsdir/imageformats"
+dst="$pkg_plugins_dir/imageformats"
 $MKDIR "$dst"
 for plg in $imageformats; do
-    $COPY "$qtpluginsdir/imageformats/$plg" "$dst/$plg"
+    $COPY "$qt_plugins_dir/imageformats/$plg" "$dst/$plg"
 done
 
 # final message
diff --git a/devtools/deploy/mac/adjust_mac_bundle.zsh.in b/devtools/deploy/mac/adjust_mac_bundle.zsh.in
index cbe7c266f9d8b021229c84bc9240d62739074f86..81b8a6f6b4cc0b91b45063663471851e00e62eaa 100644
--- a/devtools/deploy/mac/adjust_mac_bundle.zsh.in
+++ b/devtools/deploy/mac/adjust_mac_bundle.zsh.in
@@ -60,14 +60,16 @@ declare -r TITLE="* MacOS Package"
 
 #-- directories for the package binaries
 pkg_root="$1" # root dir, eg. '/tmp/bornagain.app/Contents'
-main_exe="$pkg_root/MacOS/@MACPK_MAIN_EXE@"
-extra_libs="@MACPK_EXTRA_LIBS@"
+main_exe="$pkg_root/MacOS/@MACPKG_MAIN_EXE@"
+extra_libs="@MACPKG_EXTRA_LIBS@"
 # eg. input Qt dir = '/usr/local/opt/qt@5/lib/cmake/Qt'
 #   => '/usr/local/opt/qt@5'
-qtdir="@MACPK_QTDIR@"
-qt_framework_root="${qtdir%/lib/*}"
+qtdir="@Qt_DIR@"
+# Qt plugins paths relative to Qt root dir
+qt_plugins_rel_dir="@MACPKG_QT_PLUGINS_RELDIR@"
+qt_framework_root="$qtdir"
 # list of required Qt plugins
-qt_plugins="@MACPK_QT_PLUGINS@"
+qt_plugins="@MACPKG_QT_PLUGINS@"
 declare -ar qt_plugins=( ${=qt_plugins} )
 
 if [[ -z "$pkg_root" ]]
@@ -99,7 +101,7 @@ declare -A pkgbindir=(
     "exlib"  "Library"  # external libraries dir
     "FW"     "$fwdir"   # frameworks dir
     "FW_qt"  "$fwdir"  # Qt framework dir
-    "FW_qt_plug"  "@MACPK_QT_PLUGINS_DIR@"  # Qt plugins dir
+    "FW_qt_plug"  "@MACPKG_QT_PLUGINS_DIR@"  # Qt plugins dir
 )
 
 #-- copy extra libraries to the Framework-libraries dir;
@@ -129,10 +131,10 @@ pkg_plugins_dir="$pkg_root/$pkgbindir[FW_qt_plug]"
 for plg in $qt_plugins; do
     # full path of the plugin;
     # eg. '/opt/qt@5/plugins/platforms/libqcocoa.dylib'
-    plgpth0="$qt_framework_root/share/qt/$plg"
+    plgpth0="$qt_framework_root/$qt_plugins_rel_dir/$plg"
     # copy the plugin to the same directory under the _package_ plugins dir;
     # eg. '<Package>/PlugIns/platforms/libqcocoa.dylib'
-    pth="$pkg_plugins_dir/${plg#*/}"
+    pth="$pkg_plugins_dir/$plg"
     mkdir -p "${pth%/*}"
     cp -fv "$plgpth0" "$pth"
     # add Qt plugin to the list of initial binaries
diff --git a/devtools/windows/manual_winbuild.ps1 b/devtools/windows/manual_winbuild.ps1
index 9e1721a5320483ad1b46ac3222b99711aa3d09c4..3ab2c55162b8ab06a3e600bf2cb3d541ae010cb4 100644
--- a/devtools/windows/manual_winbuild.ps1
+++ b/devtools/windows/manual_winbuild.ps1
@@ -63,7 +63,7 @@ $test_timer.Stop()
 
 echo "#--- PACKAGING ---"
 # build package via NSIS
-cpack -C Release -B ./winpackage
+cpack -C Release -B ./installer .
 
 echo "----------------------------------------"
 echo "#--- Total Build Time = $($build_timer.Elapsed.TotalMinutes) min(s)."