diff --git a/build.py b/build.py
old mode 100755
new mode 100644
index 1555504b25ce8934d4244ec7e637f758c124a31a..343e626abec1165ade99bff63971691b30e72a9e
--- a/build.py
+++ b/build.py
@@ -91,7 +91,7 @@ ZYPPER_INSTALL_SCRIPT = [
 ZYPPER_DEPENDENCIES = [
     # build system
     'autoconf', 'autoconf-archive', 'automake', 'cmake', 'make', 'patch', 'gcc-c++',
-    'libtool', 'which', 'pandoc','nasm', 'doxygen', 'graphviz',
+    'libtool', 'which', 'pandoc', 'nasm', 'doxygen', 'graphviz',
     # contrib dependencies
     'curl', 'gzip', 'bzip2',
     # daemon
@@ -138,7 +138,7 @@ DNF_CLIENT_DEPENDENCIES = [
     'qrencode-devel', 'NetworkManager-libnm-devel'
 ]
 
-DNF_QT_WEBENGINE = [ 'qt6-qtwebengine-devel' ]
+DNF_QT_WEBENGINE = ['qt6-qtwebengine-devel']
 
 APT_DEPENDENCIES = [
     'autoconf', 'autoconf-archive', 'autopoint', 'automake', 'cmake', 'make', 'dbus', 'doxygen', 'graphviz',
@@ -173,7 +173,7 @@ APT_CLIENT_DEPENDENCIES = [
 APT_QT_WEBENGINE = [
     'libqt6webengine6-data', 'libqt6webenginecore6-bin',
     'qt6-webengine-dev', 'qt6-webengine-dev-tools',
-    'qml6-module-qtwebengine', 'qml6-module-qtwebchannel' ]
+    'qml6-module-qtwebengine', 'qml6-module-qtwebchannel']
 
 PACMAN_DEPENDENCIES = [
     'autoconf', 'autoconf-archive', 'gettext', 'cmake', 'dbus', 'doxygen', 'graphviz',
@@ -193,7 +193,7 @@ PACMAN_CLIENT_DEPENDENCIES = [
     'qrencode', 'libnm'
 ]
 
-PACMAN_QT_WEBENGINE = [ 'qt6-webengine' ]
+PACMAN_QT_WEBENGINE = ['qt6-webengine']
 
 OSX_DEPENDENCIES = [
     'autoconf', 'cmake', 'gettext', 'pkg-config', 'qt6',
@@ -212,6 +212,7 @@ UNINSTALL_DAEMON_SCRIPT = [
 ASSUME_YES_FLAG = ' -y'
 ASSUME_YES_FLAG_PACMAN = ' --noconfirm'
 
+
 def run_powershell_cmd(cmd):
     p = subprocess.Popen(["powershell.exe", cmd], stdout=sys.stdout)
     p.communicate()
@@ -354,13 +355,13 @@ def cwd(path):
 def run_install(args):
     # Platforms with special compilation scripts
     if args.distribution == WIN32_DISTRIBUTION_NAME:
-        winmake = 'daemon/compat/msvc/winmake.py'
-        with cwd(os.path.dirname(winmake)):
+        with cwd('daemon/compat/msvc'):
             execute_script(
-                f'python {winmake} -iv -s {args.sdk} -b daemon')
+                ['python winmake.py -iv '
+                 f'-s {args.sdk} -b daemon'])
         build_windows = 'extras/scripts/build-windows.py'
-        execute_script(f'python {build_windows} init')
-        execute_script(f'python {build_windows}')
+        execute_script([f'python {build_windows} init'])
+        execute_script([f'python {build_windows}'])
         return True
 
     # Unix-like platforms
@@ -393,7 +394,8 @@ def run_install(args):
         environ['CMAKE_PREFIX_PATH'] = proc.stdout.rstrip("\n")
         environ['CONFIGURE_FLAGS'] = '--without-dbus'
         if not args.qt:
-            raise Exception('provide the Qt path using --qt=/qt/install/prefix')
+            raise Exception(
+                'provide the Qt path using --qt=/qt/install/prefix')
         install_args += ("-Q", args.qt)
     else:
         if args.distribution in ZYPPER_BASED_DISTROS:
@@ -423,7 +425,7 @@ def run_install(args):
                    '--expose=/gnu/store', '--expose=/etc/ssl/certs',
                    '--expose=/usr/bin/env',
                    '--container', '--network'] + share_tarballs_args \
-                   + ['--'] + command
+            + ['--'] + command
 
     print(f'info: Building/installing using the command: {" ".join(command)}')
     return subprocess.run(command, env=environ, check=True)
@@ -436,8 +438,8 @@ def run_uninstall(args):
 
     if (os.path.exists(BUILD_DIR)):
         UNINSTALL_CLIENT_SCRIPT = [
-             f'make -C {BUILD_DIR} uninstall',
-             f'rm -rf {BUILD_DIR}'
+            f'make -C {BUILD_DIR} uninstall',
+            f'rm -rf {BUILD_DIR}'
         ]
         execute_script(UNINSTALL_CLIENT_SCRIPT)
 
@@ -518,8 +520,8 @@ def execute_script(script, settings=None, fail=True):
         line = line % settings
         rv = os.system(line)
         if rv and fail:
-            print('Error executing script! Exit code: %s' %
-                  rv, file=sys.stderr)
+            print('Error executing script! Exit code: %s (%s)' %
+                  (rv, script), file=sys.stderr)
             sys.exit(1)
 
 
@@ -540,7 +542,7 @@ def validate_args(parsed_args):
 
     # Filter unsupported distributions.
     supported_distros = \
-        [ OSX_DISTRIBUTION_NAME, WIN32_DISTRIBUTION_NAME, 'guix'] + \
+        [OSX_DISTRIBUTION_NAME, WIN32_DISTRIBUTION_NAME, 'guix'] + \
         APT_BASED_DISTROS + DNF_BASED_DISTROS + PACMAN_BASED_DISTROS \
         + ZYPPER_BASED_DISTROS + FLATPAK_BASED_RUNTIMES
 
diff --git a/extras/build/cmake/modules/FindLibJami.cmake b/extras/build/cmake/modules/FindLibJami.cmake
index 1e271001ef2cdb8d5e9145ae5509476e3e5d5396..e247caded9db5751e659be586922ce6159d09c28 100644
--- a/extras/build/cmake/modules/FindLibJami.cmake
+++ b/extras/build/cmake/modules/FindLibJami.cmake
@@ -81,6 +81,7 @@ if(NOT LIBJAMI_LIB)
   if(WITH_DAEMON_SUBMODULE)
     find_library(LIBJAMI_LIB NAMES jami ring
       PATHS ${DAEMON_DIR}/src/.libs
+      PATHS ${CMAKE_INSTALL_PREFIX}
       PATHS ${CMAKE_INSTALL_PREFIX}/lib
       PATHS ${CMAKE_INSTALL_PREFIX}/libexec
       NO_DEFAULT_PATH)
@@ -89,6 +90,7 @@ if(NOT LIBJAMI_LIB)
     find_library(LIBJAMI_LIB NAMES jami ring
       PATHS ${LIBJAMI_BUILD_DIR}/.libs
       PATHS ${RING_BUILD_DIR}/.libs
+      PATHS ${CMAKE_INSTALL_PREFIX}
       PATHS ${CMAKE_INSTALL_PREFIX}/lib
       PATHS ${CMAKE_INSTALL_PREFIX}/libexec
       NO_DEFAULT_PATH)
diff --git a/extras/scripts/build-windows.py b/extras/scripts/build-windows.py
index 8d0c2047ca90b88b8e70aeeb5241f2294ea9a9cb..97d2de0db28ee55273852f9bc14c27c59ee08244 100644
--- a/extras/scripts/build-windows.py
+++ b/extras/scripts/build-windows.py
@@ -184,7 +184,7 @@ def build_deps():
     patch_file = os.path.join(repo_root_dir, 'qrencode-win32.patch')
     apply_cmd.append(patch_file)
     print(apply_cmd)
-    if(execute_cmd(apply_cmd, False, None, qrencode_dir)):
+    if (execute_cmd(apply_cmd, False, None, qrencode_dir)):
         print("Couldn't patch qrencode-win32.")
 
     vs_env_vars = {}
@@ -207,12 +207,13 @@ def build(config_str, qtver, tests=False):
     vs_env_vars.update(getVSEnv())
 
     qt_dir = os.path.join(qt_root_path, qtver, qt_kit_path)
-    daemon_dir = os.path.dirname(repo_root_dir) + '\\daemon'
-    daemon_bin_dir = daemon_dir + '\\build\\x64\\ReleaseLib_win32\\bin'
+    daemon_dir = os.path.join(repo_root_dir, 'daemon')
+    daemon_bin_dir = os.path.join(daemon_dir, 'build/x64/ReleaseLib_win32/bin')
 
     # We need to update the minimum SDK version to be able to
     # build with system theme support
     cmake_options = [
+        '-DWITH_DAEMON_SUBMODULE=ON',
         '-DCMAKE_PREFIX_PATH=' + qt_dir,
         '-DCMAKE_INSTALL_PREFIX=' + daemon_bin_dir,
         '-DLIBJAMI_INCLUDE_DIR=' + daemon_dir + '\\src\\jami',
@@ -230,7 +231,7 @@ def build(config_str, qtver, tests=False):
 
     print('Generating…')
     cmd.extend(cmake_options)
-    if(execute_cmd(cmd, False, vs_env_vars, build_dir)):
+    if (execute_cmd(cmd, False, vs_env_vars, build_dir)):
         print("Cmake generate error")
         sys.exit(1)
 
@@ -240,7 +241,7 @@ def build(config_str, qtver, tests=False):
         '--config', 'Release',
         '--', '-m'
     ]
-    if(execute_cmd(cmd, False, vs_env_vars, build_dir)):
+    if (execute_cmd(cmd, False, vs_env_vars, build_dir)):
         print("Cmake build error")
         sys.exit(1)