diff --git a/cmake/BornAgain/Pack.cmake b/cmake/BornAgain/Pack.cmake
index 313500b043bded0a3b0b581708df9fe98513120f..b73049a12ff501c91f6adecbaf096168abb6bc2f 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)
@@ -24,9 +27,16 @@ elseif(UNIX)
     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" )