diff --git a/VERSION.cmake b/VERSION.cmake
index 1623810ab798a..e7ff4215f9e47 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -11,6 +11,8 @@ set(MIRALL_VERSION_PATCH 50)
set(MIRALL_VERSION_YEAR 2025)
set(MIRALL_SOVERSION 0)
set(MIRALL_PREVERSION_HUMAN "3.17.0 alpha") # For preversions where PATCH>=50. Use version + alpha, rc1, rc2, etc.
+set(NCEXT_BUILD_NUM 47)
+set(NCEXT_VERSION 3,0,0,${NCEXT_BUILD_NUM})
# ------------------------------------
# Minimum supported server versions
diff --git a/admin/win/msi/Nextcloud.wxs b/admin/win/msi/Nextcloud.wxs
index b8ef1514ded05..22354a2bdee59 100644
--- a/admin/win/msi/Nextcloud.wxs
+++ b/admin/win/msi/Nextcloud.wxs
@@ -33,8 +33,9 @@
https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/replacing-ourselves/
https://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/
-->
-
-
+
+
+
@@ -77,9 +78,6 @@
(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")
-
-
- (SCHEDULE_REBOOT=1) OR NOT (UILevel=2)
diff --git a/shell_integration/windows/NCUtil/CMakeLists.txt b/shell_integration/windows/NCUtil/CMakeLists.txt
index 234e1e775bc2e..75972307f6957 100644
--- a/shell_integration/windows/NCUtil/CMakeLists.txt
+++ b/shell_integration/windows/NCUtil/CMakeLists.txt
@@ -1,5 +1,7 @@
# SPDX-FileCopyrightText: 2018 ownCloud GmbH
# SPDX-License-Identifier: LGPL-2.1-or-later
+configure_file(Version.h.in ${CMAKE_CURRENT_BINARY_DIR}/Version.h)
+
add_library(NCUtil STATIC
CommunicationSocket.cpp
RemotePathChecker.cpp
@@ -9,5 +11,6 @@ add_library(NCUtil STATIC
target_include_directories(NCUtil
PUBLIC
- "${CMAKE_CURRENT_SOURCE_DIR}"
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
)
diff --git a/shell_integration/windows/NCUtil/Version.h b/shell_integration/windows/NCUtil/Version.h.in
similarity index 81%
rename from shell_integration/windows/NCUtil/Version.h
rename to shell_integration/windows/NCUtil/Version.h.in
index 92f6600cc2bd7..30ce150ce4e11 100644
--- a/shell_integration/windows/NCUtil/Version.h
+++ b/shell_integration/windows/NCUtil/Version.h.in
@@ -5,10 +5,10 @@
// This is the number that will end up in the version window of the DLLs.
// Increment this version before committing a new build if you are today's shell_integration build master.
-#define NCEXT_BUILD_NUM 47
+#cmakedefine NCEXT_BUILD_NUM @NCEXT_BUILD_NUM@
#define STRINGIZE2(s) #s
#define STRINGIZE(s) STRINGIZE2(s)
-#define NCEXT_VERSION 3,0,0,NCEXT_BUILD_NUM
+#cmakedefine NCEXT_VERSION @NCEXT_VERSION@
#define NCEXT_VERSION_STRING STRINGIZE(NCEXT_VERSION)
diff --git a/src/libsync/vfs/cfapi/shellext/CMakeLists.txt b/src/libsync/vfs/cfapi/shellext/CMakeLists.txt
index 8d391c7c74fcf..b4c9d404e62d6 100644
--- a/src/libsync/vfs/cfapi/shellext/CMakeLists.txt
+++ b/src/libsync/vfs/cfapi/shellext/CMakeLists.txt
@@ -155,6 +155,8 @@ set(cppWinRtExe "${WindowsSDKBinPathForTools}\\cppwinrt.exe")
message("cppWinRtExe: ${cppWinRtExe}")
message("midlExe: ${midlExe}")
+configure_file(CfApiShellIntegrationVersion.h.in ${CMAKE_CURRENT_BINARY_DIR}/CfApiShellIntegrationVersion.h)
+
# use midl.exe and cppwinrt.exe to generate files for CustomStateProvider (WinRT class)
add_custom_command(OUTPUT ${MidlOutputPathHeader}
COMMAND ${midlExe} /winrt /h nul /tlb ${MidlOutputPathTlb} /winmd ${MidlOutputPathWinmd} /metadata_dir "${WindowsSDKReferencesPath}\\Windows.Foundation.FoundationContract\\${WindowsFoundationContractVersion}" /nomidl /reference "${WindowsSDKReferencesPath}\\Windows.Foundation.FoundationContract\\${WindowsFoundationContractVersion}\\Windows.Foundation.FoundationContract.winmd" /reference "${WindowsSDKReferencesPath}\\Windows.Storage.Provider.CloudFilesContract\\${WindowsStorageProviderCloudFilesContractVersion}\\Windows.Storage.Provider.CloudFilesContract.winmd" /I ${MidleFileFolder} customstateprovider.idl
@@ -172,6 +174,7 @@ add_library(CfApiShellExtensions MODULE
${CMAKE_SOURCE_DIR}/src/common/shellextensionutils.cpp
customstateprovider.cpp
CfApiShellIntegration.def
+ CfApiShellIntegration.rc
)
message("CUSTOM_STATE_ICON_LOCKED_OUT: ${CUSTOM_STATE_ICON_LOCKED_OUT}")
diff --git a/src/libsync/vfs/cfapi/shellext/CfApiShellIntegration.rc b/src/libsync/vfs/cfapi/shellext/CfApiShellIntegration.rc
new file mode 100644
index 0000000000000..b6a3777370a08
--- /dev/null
+++ b/src/libsync/vfs/cfapi/shellext/CfApiShellIntegration.rc
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+// Microsoft Visual C++ generated resource script.
+//
+#include "CfApiShellIntegrationVersion.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION NCEXT_VERSION
+ PRODUCTVERSION NCEXT_VERSION
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "Nextcloud GmbH"
+ VALUE "FileDescription", "Nextcloud CfApi shell extension"
+ VALUE "FileVersion", NCEXT_VERSION_STRING
+ VALUE "InternalName", "NCOverlays"
+ VALUE "LegalCopyright", "Copyright (C) 2023 Nextcloud GmbH"
+ VALUE "ProductName", "Nextcloud shell extension"
+ VALUE "ProductVersion", NCEXT_VERSION_STRING
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/src/libsync/vfs/cfapi/shellext/CfApiShellIntegrationVersion.h.in b/src/libsync/vfs/cfapi/shellext/CfApiShellIntegrationVersion.h.in
new file mode 100644
index 0000000000000..30ce150ce4e11
--- /dev/null
+++ b/src/libsync/vfs/cfapi/shellext/CfApiShellIntegrationVersion.h.in
@@ -0,0 +1,14 @@
+#pragma once
+
+// SPDX-FileCopyrightText: 2016 ownCloud GmbH
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+// This is the number that will end up in the version window of the DLLs.
+// Increment this version before committing a new build if you are today's shell_integration build master.
+#cmakedefine NCEXT_BUILD_NUM @NCEXT_BUILD_NUM@
+
+#define STRINGIZE2(s) #s
+#define STRINGIZE(s) STRINGIZE2(s)
+
+#cmakedefine NCEXT_VERSION @NCEXT_VERSION@
+#define NCEXT_VERSION_STRING STRINGIZE(NCEXT_VERSION)