diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt
index dec2657ef899cad00df1ac59965a518d6ec60c98..ca2e06fa75c12961e5c020acd045e8efa5b39b18 100644
--- a/Applications/CLI/CMakeLists.txt
+++ b/Applications/CLI/CMakeLists.txt
@@ -19,3 +19,15 @@ IF(OGS_USE_PETSC)
 ENDIF()
 
 INCLUDE(Tests.cmake)
+
+####################
+### Installation ###
+####################
+INSTALL (TARGETS ogs RUNTIME DESTINATION bin COMPONENT ogs_cli)
+
+set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ogs" "OGS Simulator")
+cpack_add_component(ogs_cli
+	DISPLAY_NAME "OGS THMC Simulator"
+	DESCRIPTION "The command line interface for OpenGeoSys."
+	GROUP Applications
+)
diff --git a/Applications/DataExplorer/DataExplorer.cmake b/Applications/DataExplorer/DataExplorer.cmake
index 6784c70fec6f06e23b112c92bb093aa677620815..0421bf7695596aa9f83aa4b09884e573f76a552e 100644
--- a/Applications/DataExplorer/DataExplorer.cmake
+++ b/Applications/DataExplorer/DataExplorer.cmake
@@ -63,7 +63,10 @@ INCLUDE_DIRECTORIES(
 SOURCE_GROUP("UI Files" REGULAR_EXPRESSION "\\w*\\.ui")
 SOURCE_GROUP("Moc Files" REGULAR_EXPRESSION "moc_.*")
 
-# Create the library
+# Application icon
+SET(APP_ICON ${CMAKE_SOURCE_DIR}/scripts/packaging/ogs-de-icon.icns)
+
+# Create the executable
 ADD_EXECUTABLE( DataExplorer MACOSX_BUNDLE
 	main.cpp
 	${SOURCES}
@@ -72,6 +75,8 @@ ADD_EXECUTABLE( DataExplorer MACOSX_BUNDLE
 	${MOC_SOURCES}
 	${UIS}
 	${QTRESOURCES}
+	${APP_ICON}
+	exe-icon.rc
 )
 
 TARGET_LINK_LIBRARIES( DataExplorer
@@ -132,33 +137,30 @@ SET_PROPERTY(TARGET DataExplorer PROPERTY FOLDER "DataExplorer")
 ####################
 ### Installation ###
 ####################
-
 IF(APPLE)
-	SET(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} ${OGS_VERSION}")
-	SET(MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_NAME} ${OGS_VERSION}")
-	SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} ${OGS_VERSION}")
-	SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${OGS_VERSION}")
-	SET(MACOSX_BUNDLE_COPYRIGHT "2013 OpenGeoSys Community")
-	#SET(MACOSX_BUNDLE_ICON_FILE "audio-input-microphone.icns")
-	SET(MACOSX_BUNDLE_GUI_IDENTIFIER "org.opengeosys")
-	SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}")
-
-	SET(MACOSX_BUNDLE_RESOURCES "${EXECUTABLE_OUTPUT_PATH}/DataExplorer.app/Contents/Resources")
-	SET(MACOSX_BUNDLE_ICON "${ICONS_DIR}/${MACOSX_BUNDLE_ICON_FILE}")
-	#EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${MACOSX_BUNDLE_RESOURCES})
-	#EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MACOSX_BUNDLE_ICON} ${MACOSX_BUNDLE_RESOURCES})
+	INCLUDE(packaging/PackagingMacros)
+	ConfigureMacOSXBundle(DataExplorer ${APP_ICON})
 
 	INSTALL (TARGETS DataExplorer DESTINATION .)
 	SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
 	INCLUDE(InstallRequiredSystemLibraries)
 	INCLUDE(DeployQt4)
-	INSTALL_QT4_EXECUTABLE(DataExplorer.app)
+	INSTALL_QT4_EXECUTABLE(DataExplorer.app "" "" "" "" "" ogs_gui)
+ELSE()
+	INSTALL (TARGETS DataExplorer RUNTIME DESTINATION bin COMPONENT ogs_gui)
+ENDIF()
 
+cpack_add_component(ogs_gui
+	DISPLAY_NAME "OGS Data Explorer"
+	DESCRIPTION "The graphical user interface for OpenGeoSys."
+	GROUP Applications
+)
+set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "DataExplorer" "OGS Data Explorer" PARENT_SCOPE)
+set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "bin/DataExplorer.exe" "Data Explorer" PARENT_SCOPE)
+IF(APPLE)
 	RETURN()
 ENDIF()
 
-INSTALL (TARGETS DataExplorer RUNTIME DESTINATION bin COMPONENT ogs_gui)
-
 IF(MSVC)
 	SET(OGS_GUI_EXE ${EXECUTABLE_OUTPUT_PATH}/Release/DataExplorer.exe)
 ELSE(MSVC)
diff --git a/Applications/DataExplorer/exe-icon.rc b/Applications/DataExplorer/exe-icon.rc
new file mode 100644
index 0000000000000000000000000000000000000000..1e5fc317137b5a9d2b7a172decece8dbf23ebce8
--- /dev/null
+++ b/Applications/DataExplorer/exe-icon.rc
@@ -0,0 +1 @@
+ IDI_ICON1               ICON    DISCARDABLE     "..\..\..\scripts\packaging\ogs-de-icon.ico"
\ No newline at end of file
diff --git a/Applications/Utils/FileConverter/CMakeLists.txt b/Applications/Utils/FileConverter/CMakeLists.txt
index a5025cc3bd752d61772d7947eef6541fd45d6789..d930f1c0f8f75a512bebea2f3f5030e300187b40 100644
--- a/Applications/Utils/FileConverter/CMakeLists.txt
+++ b/Applications/Utils/FileConverter/CMakeLists.txt
@@ -21,8 +21,6 @@ IF (QT4_FOUND)
 		${QT_LIBRARIES}
 	)
 
-	INSTALL ( TARGETS ConvertSHPToGLI RUNTIME DESTINATION bin COMPONENT ConvertSHPToGLI )
-
 	ADD_EXECUTABLE (generateBCandGLI generateBCandGLI.cpp )
 	TARGET_LINK_LIBRARIES (generateBCandGLI
 		ApplicationsLib
@@ -125,3 +123,16 @@ TARGET_LINK_LIBRARIES (TIN2VTK
 	${CATALYST_LIBRARIES}
 )
 ADD_CATALYST_DEPENDENCY(TIN2VTK)
+
+####################
+### Installation ###
+####################
+INSTALL(TARGETS ConvertSHPToGLI generateBCandGLI generateBCFromPolyline generateBCandGLI
+	              FEFLOW2OGS generateMatPropsFromMatID GMSH2OGS OGS2VTK VTK2OGS VTK2TIN
+	RUNTIME DESTINATION bin COMPONENT ogs_converter)
+
+cpack_add_component(ogs_converter
+	DISPLAY_NAME "File converter"
+	DESCRIPTION "File converter."
+	GROUP Utilities
+)
diff --git a/Applications/Utils/OGSFileConverter/CMakeLists.txt b/Applications/Utils/OGSFileConverter/CMakeLists.txt
index 07c1925deb2e969c5aaa9ac5c34a61c7f9ed06ff..ad916f98e78ec6ad50aafb1506b413cf4db749d4 100644
--- a/Applications/Utils/OGSFileConverter/CMakeLists.txt
+++ b/Applications/Utils/OGSFileConverter/CMakeLists.txt
@@ -96,6 +96,6 @@ SET_PROPERTY(TARGET OGSFileConverter PROPERTY FOLDER "Utilities")
 ### Installation ###
 ####################
 
-IF(OGS_PACKAGING)
-	INSTALL (TARGETS OGSFileConverter RUNTIME DESTINATION bin COMPONENT ogs)
-ENDIF()
+INSTALL (TARGETS OGSFileConverter RUNTIME DESTINATION bin COMPONENT ogs_cli)
+set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "OGSFileConverter" "File Converter")
+set(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "bin/OGSFileConverter.exe" "File Converter" PARENT_SCOPE)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7de12a86fa3a86e6f83d8680f64ee46d899e5b3..06049bc26f81090eeb32a7804c21fe6cf9cb6ee6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,12 @@
 # Specify minimum CMake version
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
 
+# Set CMake policies
+CMAKE_POLICY(SET CMP0011 OLD)
+IF(CMAKE_VERSION VERSION_GREATER 3.0.2)
+	CMAKE_POLICY(SET CMP0054 NEW)
+ENDIF()
+
 # Project name
 PROJECT( OGS-6 )
 
@@ -13,10 +19,11 @@ PROJECT( OGS-6 )
 ###########################################################################
 SET (OGS_VERSION_MAJOR 6)
 SET (OGS_VERSION_MINOR 0)
-SET (OGS_VERSION_PATCH "0 Beta")
+SET (OGS_VERSION_PATCH 0)
+SET (OSG_VERSION_STATUS "Beta") # Can be words like Alpha, Beta, Prerelease or ""
 SET (OGS_RELEASE_PERSONS "Core developers")
 SET (OGS_VERSION "${OGS_VERSION_MAJOR}.${OGS_VERSION_MINOR}.${OGS_VERSION_PATCH}")
-SET (OGS_VERSION_AND_PERSONS "${OGS_VERSION} (${OGS_RELEASE_PERSONS})")
+SET (OGS_VERSION_AND_PERSONS "${OGS_VERSION} ${OSG_VERSION_STATUS} (${OGS_RELEASE_PERSONS})")
 SET (OGS_DATE "2012-08-20")
 
 
@@ -91,10 +98,8 @@ ENDIF (OGS_CMAKE_DEBUG)
 OPTION(OGS_COVERAGE "Enables code coverage measurements with gcov/lcov." OFF)
 
 # Packaging
-IF(WIN32)
-	OPTION(OGS_PACKAGING_NSIS "Do you want to package with NSIS?")
-ENDIF()
-INCLUDE(scripts/cmake/Pack.cmake)
+OPTION(OGS_DOWNLOAD_ADDITIONAL_CONTENT "Should addional content such as manuals be downloaded and packaged?" OFF)
+INCLUDE(scripts/cmake/packaging/Pack.cmake)
 
 ######################
 ### Subdirectories ###
diff --git a/Documentation/OpenGeoSys-Logo.bmp b/Documentation/OpenGeoSys-Logo.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..699e64afccc073cc007ab2c48604003e595687f5
Binary files /dev/null and b/Documentation/OpenGeoSys-Logo.bmp differ
diff --git a/FileIO/CMakeLists.txt b/FileIO/CMakeLists.txt
index 0f4f665edb519c41b16942e77fad22227eddead3..bee77ff383b63ed6470b25556ca91a6c7a206b7b 100644
--- a/FileIO/CMakeLists.txt
+++ b/FileIO/CMakeLists.txt
@@ -61,8 +61,8 @@ TARGET_LINK_LIBRARIES (FileIO
 ADD_CATALYST_DEPENDENCY(FileIO)
 
 FILE(GLOB XSD_FILES . *.xsd)
-IF(APPLE)
-	INSTALL(FILES ${XSD_FILES} DESTINATION ${CMAKE_BINARY_DIR}/_CPack_Packages/OSX/DragNDrop/${CPACK_PACKAGE_FILE_NAME}/DataExplorer.app/Contents/MacOS)
+IF(APPLE AND OGS_BUILD_GUI)
+	INSTALL(FILES ${XSD_FILES} DESTINATION ${CMAKE_BINARY_DIR}/_CPack_Packages/Darwin/DragNDrop/${CPACK_PACKAGE_FILE_NAME}/ALL_IN_ONE/DataExplorer.app/Contents/MacOS COMPONENT ogs_gui)
 ELSE()
-	INSTALL(FILES ${XSD_FILES} DESTINATION bin)
+	INSTALL(FILES ${XSD_FILES} DESTINATION bin COMPONENT ogs_cli)
 ENDIF()
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
index 7eb1c72b91664ca10945549d4e5e80702dd5bdd5..023161c8c294ddb5d0017e40262e8def6857ac2a 100644
--- a/ThirdParty/CMakeLists.txt
+++ b/ThirdParty/CMakeLists.txt
@@ -38,7 +38,7 @@ ENDIF()
 # tetgen
 IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/tetgen/CMakeLists.txt)
 	ADD_SUBDIRECTORY(tetgen)
-	IF(APPLE)
+	IF(APPLE AND OGS_BUILD_GUI)
 		INSTALL (PROGRAMS $<TARGET_FILE:tetgen> DESTINATION DataExplorer.app/Contents/MacOS COMPONENT ogs_extras)
 	ELSE()
 		INSTALL (PROGRAMS $<TARGET_FILE:tetgen> DESTINATION bin COMPONENT ogs_extras)
diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake
index 5768a4ee2baf407d5097460a62313d2d241ce716..3704b5143ca4900f59d2527dfda6fb3115f0a7a7 100644
--- a/scripts/cmake/CMakeSetup.cmake
+++ b/scripts/cmake/CMakeSetup.cmake
@@ -18,8 +18,22 @@ INCLUDE(GetGitRevisionDescription)
 GET_GIT_HEAD_REVISION(GIT_REFSPEC GIT_SHA1)
 STRING(SUBSTRING ${GIT_SHA1} 0 8 GIT_SHA1_SHORT)
 
-# Suppress warning on setting policies
-CMAKE_POLICY(SET CMP0011 OLD)
-
 # Get the hostname
 SITE_NAME(HOSTNAME)
+
+# Compute OS X version number
+IF(APPLE)
+	IF(CMAKE_SYSTEM_VERSION VERSION_EQUAL 12.0)
+		SET(OSX_VERSION 10.8 CACHE STRING "OS X version number")
+		SET(OSX_VERSION_NAME CACHE STRING "Mountain Lion")
+	ENDIF()
+	IF(CMAKE_SYSTEM_VERSION VERSION_EQUAL 13.0)
+		SET(OSX_VERSION 10.9 CACHE STRING "OS X version number")
+		SET(OSX_VERSION_NAME CACHE STRING "Mavericks")
+	ENDIF()
+	IF(CMAKE_SYSTEM_VERSION VERSION_EQUAL 14.0)
+		SET(OSX_VERSION 10.10 CACHE STRING "OS X version number")
+		SET(OSX_VERSION_NAME CACHE STRING "Yosemite")
+	ENDIF()
+ENDIF()
+MARK_AS_ADVANCED(OSX_VERSION OSX_VERSION_NAME)
diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake
index fcd13e635e68f42333e1261c74fb208688ccca8d..79e78f8fb3ebab1081a0c5d027c9230f915aff4a 100644
--- a/scripts/cmake/CompilerSetup.cmake
+++ b/scripts/cmake/CompilerSetup.cmake
@@ -3,16 +3,17 @@ INCLUDE(SetDefaultBuildType)
 INCLUDE(DisableCompilerFlag)
 SET_DEFAULT_BUILD_TYPE(Debug)
 INCLUDE(MSVCMultipleProcessCompile) # /MP switch (multi processor) for VS
+SET(CMAKE_OSX_ARCHITECTURES "x86_64")
 
 # Set compiler helper variables
 
-IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+IF (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
     SET(COMPILER_IS_CLANG TRUE)
-ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ELSEIF (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     SET(COMPILER_IS_GCC TRUE)
-ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
+ELSEIF (${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
     SET(COMPILER_IS_INTEL TRUE)
-ELSEIF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
+ELSEIF (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
     SET(COMPILER_IS_MSVC TRUE)
 ENDIF () # CMAKE_CXX_COMPILER_ID
 
@@ -32,21 +33,16 @@ IF(COMPILER_IS_GCC)
 		ENDIF()
 		IF( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
 				MESSAGE(STATUS "Set GCC release flags")
-				IF(APPLE AND GCC_VERSION VERSION_LESS "4.3" AND NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode" )
-					# -march=native does not work here when on normal gcc compiler
-					# see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33144
-					SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mtune=native -msse4.2 -DNDEBUG")
-				ELSE()
-					SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mtune=native -msse4.2 -DNDEBUG")
-					# Disable -march=native on mac or Ninja generator
-					IF(NOT APPLE AND NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja")
-						SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
-					ENDIF()
+				SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -mtune=native -msse4.2 -DNDEBUG")
+				# Disable -march=native on mac or Ninja generator
+				IF(NOT APPLE AND NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja")
+					SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
 				ENDIF()
 		ENDIF()
 		SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-deprecated -Wall -Wextra")
 ENDIF() # COMPILER_IS_GCC
 
+### Clang
 IF(COMPILER_IS_CLANG)
 	IF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.3")
 		MESSAGE(FATAL_ERROR "Aborting: Clang 3.3 is required! Found version ${CMAKE_CXX_COMPILER_VERSION}")
diff --git a/scripts/cmake/MSVCPaths.cmake b/scripts/cmake/MSVCPaths.cmake
index b49e618dbeef2f07a95c12b4226478af8488fb55..c5ec86f2d698c9282e28d1cee33ffcc0a602c6b9 100644
--- a/scripts/cmake/MSVCPaths.cmake
+++ b/scripts/cmake/MSVCPaths.cmake
@@ -14,9 +14,11 @@ IF(MSVC)
 	ENDIF()
 	GET_FILENAME_COMPONENT(VS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH)
 	GET_FILENAME_COMPONENT(VS_EXPRESS_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\${MSVC_NUMBER}\\Setup\\VS;ProductDir]" REALPATH)
+	
+	SET(X86_TMP "ProgramFiles(x86)")
 	SET(MSVC_INSTALL_PATHS
 		${VS_DIR} ${VS_EXPRESS_DIR}
-		"$ENV{ProgramFiles}/Microsoft Visual Studio ${MSVC_NUMBER}"
-		"$ENV{ProgramFiles(x86)}/Microsoft Visual Studio ${MSVC_NUMBER}"
+		"$ENV{ProgramFiles}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}"
+		"$ENV{${X86_TMP}}/Microsoft\ Visual\ Studio\ ${MSVC_NUMBER}"
 		CACHE STRING "" FORCE)
 ENDIF()
diff --git a/scripts/cmake/Pack.cmake b/scripts/cmake/Pack.cmake
deleted file mode 100644
index d668b6351672c812571f764d30b7ebe3d04d5a97..0000000000000000000000000000000000000000
--- a/scripts/cmake/Pack.cmake
+++ /dev/null
@@ -1,82 +0,0 @@
-#### Packaging setup ####
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OGS-6")
-SET(CPACK_PACKAGE_VENDOR "OpenGeoSys Community (http://www.opengeosys.org)")
-SET(CPACK_PACKAGE_INSTALL_DIRECTORY "OGS-${OGS_VERSION_MAJOR}.${OGS_VERSION_MINOR}.${OGS_VERSION_PATCH}")
-SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
-SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
-SET(CPACK_PACKAGE_VERSION_MAJOR "${OGS_VERSION_MAJOR}")
-SET(CPACK_PACKAGE_VERSION_MINOR "${OGS_VERSION_MINOR}")
-SET(CPACK_PACKAGE_VERSION_PATCH "${OGS_VERSION_PATCH}")
-SET(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-x${BITS}")
-
-IF(APPLE)
-	IF(CMAKE_INSTALL_PREFIX MATCHES "/usr/local")
-		SET(CMAKE_INSTALL_PREFIX "/Applications")
-	ENDIF()
-	SET(CMAKE_OSX_ARCHITECTURES "x86_64")
-	SET(CPACK_GENERATOR "DragNDrop")
-	SET(CPACK_DMG_FORMAT "UDBZ")
-	SET(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
-	# See http://stackoverflow.com/a/16662169/80480 how to create the DS_Store file.
-	SET(CPACK_DMG_BACKGROUND_IMAGE ${CMAKE_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png)
-	SET(CPACK_DMG_DS_STORE ${CMAKE_SOURCE_DIR}/scripts/packaging/.DS_Store)
-	SET(CPACK_SYSTEM_NAME "OSX")
-ELSE() # APPLE
-	IF (WIN32)
-		IF(OGS_PACKAGING_NSIS)
-			SET(CPACK_GENERATOR NSIS)
-			# There is a bug in NSI that does not handle full unix paths properly. Make
-			# sure there is at least one set of four (4) backlasshes.
-			#SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/CMakeConfiguration\\\\OGS_Logo_Installer.bmp")
-			#SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
-			SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
-			SET(CPACK_NSIS_HELP_LINK "https:\\\\\\\\www.opengeosys.org")
-			SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.opengeosys.org")
-			SET(CPACK_NSIS_CONTACT "info@opengeosys.org")
-			SET(CPACK_NSIS_MODIFY_PATH ON)
-			# SET(CPACK_NSIS_MENU_LINKS "http://www.opengeosys.org" "OGS Project Page")
-			# SET(CPACK_NSIS_MENU_LINKS "http://www.opengeosys.org/forum/" "OGS forum")
-			# SET(CPACK_NSIS_MENU_LINKS "https://github.com/ufz/ogs" "OGS source code")
-			# SET(CPACK_NSIS_MENU_LINKS "http://devguide.opengeosys.org" "OGS developer guide")
-		ELSE()
-			SET(CPACK_GENERATOR ZIP)
-			SET(CPACK_PACKAGE_FILE_NAME "ogs-6")
-		ENDIF()
-	ENDIF() # WIN32
-
-	IF(UNIX)
-		SET(CPACK_GENERATOR TGZ)
-	ENDIF()
-
-	SET(CPACK_COMPONENT_OGS_DISPLAY_NAME "Executable")
-	SET(CPACK_COMPONENT_OGS_DESCRIPTION "The command line executable")
-
-	SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
-	IF(OGS_BUILD_GUI)
-		SET(CPACK_PACKAGE_EXECUTABLES "DataExplorer" "OGS User Interface")
-		SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ogs_gui Unspecified)
-		SET(CPACK_COMPONENT_OGS_GUI_DISPLAY_NAME "Data Explorer")
-		SET(CPACK_COMPONENT_OGS_GUI_DESCRIPTION "The graphical user interface for OpenGeoSys")
-		#SET(CPACK_COMPONENT_OGS_GUI_DEPENDS ogs)
-	ELSE()
-		# SET(CPACK_PACKAGE_EXECUTABLES "ogs" "OGS Command Line")
-		# SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} ogs Unspecified)
-	ENDIF()
-ENDIF() # APPLE
-
-# Additional binaries, i.e. OGS-5 file converter
-# Can be given as a list, paths must be relative to CMAKE_BINARY_DIR!
-IF(OGS_PACKAGE_ADDITIONAL_BINARIES)
-	FOREACH(ADDITIONAL_BINARY ${OGS_PACKAGE_ADDITIONAL_BINARIES})
-		GET_FILENAME_COMPONENT(ADDITIONAL_BINARY_NAME ${ADDITIONAL_BINARY} NAME)
-		MESSAGE(STATUS "Packaging additional binary: ${ADDITIONAL_BINARY_NAME}")
-		IF(APPLE)
-			SET(INSTALL_LOCATION DataExplorer.app/Contents/MacOS)
-		ELSE()
-			SET(INSTALL_LOCATION bin)
-		ENDIF()
-		INSTALL (PROGRAMS ${CMAKE_BINARY_DIR}/${ADDITIONAL_BINARY} DESTINATION ${INSTALL_LOCATION} COMPONENT ogs_extras)
-	ENDFOREACH()
-ENDIF()
-
-INCLUDE (CPack)
diff --git a/scripts/cmake/packaging/Pack.cmake b/scripts/cmake/packaging/Pack.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..96256c584a0dc72f68ef06d3f877fbd218a7da69
--- /dev/null
+++ b/scripts/cmake/packaging/Pack.cmake
@@ -0,0 +1,86 @@
+INCLUDE(packaging/PackagingMacros)
+
+#### Packaging setup ####
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OGS-6 THM/C Simulator")
+SET(CPACK_PACKAGE_VENDOR "OpenGeoSys Community (http://www.opengeosys.org)")
+SET(CPACK_PACKAGE_INSTALL_DIRECTORY "OGS-${OGS_VERSION_MAJOR}.${OGS_VERSION_MINOR}.${OGS_VERSION_PATCH}")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
+SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
+SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
+# SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md")
+SET(CPACK_PACKAGE_VERSION_MAJOR "${OGS_VERSION_MAJOR}")
+SET(CPACK_PACKAGE_VERSION_MINOR "${OGS_VERSION_MINOR}")
+SET(CPACK_PACKAGE_VERSION_PATCH "${OGS_VERSION_PATCH}")
+IF(APPLE)
+	SET(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-OSX-${OSX_VERSION}-x${BITS}")
+	SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
+ELSE()
+	SET(CPACK_PACKAGE_FILE_NAME "ogs-${OGS_VERSION}-${CMAKE_SYSTEM}-x${BITS}")
+ENDIF()
+
+#SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
+
+IF (WIN32)
+	INCLUDE (packaging/PackagingWin)
+ENDIF()
+IF(UNIX)
+	INCLUDE (packaging/PackagingLinux)
+ENDIF()
+IF(APPLE)
+	INCLUDE (packaging/PackagingMac)
+ENDIF()
+
+# Download additional content
+IF(OGS_DOWNLOAD_ADDITIONAL_CONTENT)
+	DownloadAdditionalFilesForPackaging(
+		URLS http://docs.opengeosys.org/assets/releases/head/docs/DataExplorer-Manual.pdf
+		     http://docs.opengeosys.org/assets/releases/head/docs/User_Manual.pdf
+		     http://docs.opengeosys.org/assets/releases/head/docs/Theory_Manual.pdf
+		DESTINATION docs
+		PACKAGE_GROUP ogs_docs
+	)
+
+	IF(WIN32)
+		DownloadAdditionalFilesForPackaging(
+			URLS http://docs.opengeosys.org/assets/releases/head/win/OGSFileConverter.exe
+			DESTINATION bin
+			EXECUTABLE TRUE
+			PACKAGE_GROUP ogs_converter
+		)
+	ENDIF()
+	IF(APPLE)
+		DownloadAdditionalFilesForPackaging(
+			URLS http://docs.opengeosys.org/assets/releases/head/mac/OGSFileConverter
+			DESTINATION bin
+			EXECUTABLE TRUE
+			PACKAGE_GROUP ogs_converter
+		)
+	ENDIF()
+ENDIF()
+
+INCLUDE (CPack)
+
+cpack_add_component_group(Applications
+	DISPLAY_NAME Applications
+	DESCRIPTION "OpenGeoSys applications"
+	EXPANDED
+	BOLD_TITLE
+)
+
+cpack_add_component_group(Utilities
+	DISPLAY_NAME Utilities
+	DESCRIPTION "OpenGeoSys utilities"
+	EXPANDED
+)
+
+cpack_add_component(ogs_extras
+	DISPLAY_NAME "Extra tools"
+	DESCRIPTION "Miscellaneous tools."
+	GROUP Utilities
+)
+
+cpack_add_component(ogs_docs
+	DISPLAY_NAME "Documentation"
+	DESCRIPTION "PDF documentation."
+	GROUP Utilities
+)
diff --git a/scripts/cmake/packaging/PackagingLinux.cmake b/scripts/cmake/packaging/PackagingLinux.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e9be72d60b7dea233782905365eb960551eb9480
--- /dev/null
+++ b/scripts/cmake/packaging/PackagingLinux.cmake
@@ -0,0 +1 @@
+SET(CPACK_GENERATOR TGZ)
diff --git a/scripts/cmake/packaging/PackagingMac.cmake b/scripts/cmake/packaging/PackagingMac.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..550da01b9e1e0f0834751de638e2b29ff9cc9f1e
--- /dev/null
+++ b/scripts/cmake/packaging/PackagingMac.cmake
@@ -0,0 +1,6 @@
+SET(CPACK_GENERATOR DragNDrop ZIP)
+SET(CPACK_DMG_FORMAT "UDBZ")
+
+# See http://stackoverflow.com/a/16662169/80480 how to create the DS_Store file.
+SET(CPACK_DMG_BACKGROUND_IMAGE ${CMAKE_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.png)
+SET(CPACK_DMG_DS_STORE ${CMAKE_SOURCE_DIR}/scripts/packaging/.DS_Store)
diff --git a/scripts/cmake/packaging/PackagingMacros.cmake b/scripts/cmake/packaging/PackagingMacros.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..be5c08183066a87a1202febd88b6d2eaddb89857
--- /dev/null
+++ b/scripts/cmake/packaging/PackagingMacros.cmake
@@ -0,0 +1,64 @@
+# From http://www.cmake.org/pipermail/cmake/2012-September/052098.html
+macro(ConfigureMacOSXBundle TARGET_NAME ICON_FILE_PATH)
+
+	get_filename_component(ICON_FILE_NAME "${ICON_FILE_PATH}" NAME)
+
+	set_target_properties(${TARGET_NAME} PROPERTIES
+		MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} ${OGS_VERSION} - ${TARGET_NAME}"
+		MACOSX_BUNDLE_ICON_FILE ${ICON_FILE_NAME}
+		MACOSX_BUNDLE_GUI_IDENTIFIER "org.opengeosys"
+		MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}-${TARGET_NAME}
+		MACOSX_BUNDLE_SHORT_VERSION_STRING ${OGS_VERSION}
+		MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} ${OGS_VERSION}"
+		MACOSX_BUNDLE_BUNDLE_VERSION ${OGS_VERSION}
+		MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2012-2015, OpenGeoSys Community. All Rights Reserved."
+	)
+
+	SET_SOURCE_FILES_PROPERTIES(${ICON_FILE_PATH} PROPERTIES
+		MACOSX_PACKAGE_LOCATION Resources)
+endmacro()
+
+#
+# DownloadAdditionalFilesForPackaging
+# -------
+#
+# Downloads files (into build/AdditionalContent) and packages them. Order of arguments can be arbitrary.
+#
+# AddTest(
+#   URLS <multiple URLs>
+#   DESTINATION <install directory>
+#   PACKAGE_GROUP <name of the package to add these files to> # optional, defaults to ogs_extras
+#   EXECUTABLE <TRUE or FALSE, are these files executables?>  # optional, defaults to FALSE
+# )
+function(DownloadAdditionalFilesForPackaging)
+
+	# parse args
+	set(options NONE)
+	set(oneValueArgs DESTINATION EXECUTABLE PACKAGE_GROUP)
+	set(multiValueArgs URLS)
+	cmake_parse_arguments(DownloadAdditionalFilesForPackaging
+		"${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+	# set defaults
+	if(NOT DownloadAdditionalFilesForPackaging_EXECUTABLE)
+		set(DownloadAdditionalFilesForPackaging_EXECUTABLE FALSE)
+	endif()
+	if(NOT DownloadAdditionalFilesForPackaging_PACKAGE_GROUP)
+		set(DownloadAdditionalFilesForPackaging_PACKAGE_GROUP ogs_extras)
+	endif()
+
+	foreach(URL ${DownloadAdditionalFilesForPackaging_URLS})
+		get_filename_component(FILE_NAME ${URL} NAME)
+		get_filename_component(FILE_EXTENSION ${URL} EXT)
+		set(FILE_PATH ${CMAKE_BINARY_DIR}/AdditionalContent/${FILE_NAME})
+		if(NOT EXISTS ${FILE_PATH})
+			file(DOWNLOAD ${URL} ${FILE_PATH} SHOW_PROGRESS)
+		endif()
+		if(EXE)
+			install(PROGRAMS ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP})
+		else()
+			install(FILES ${FILE_PATH} DESTINATION ${DownloadAdditionalFilesForPackaging_DESTINATION} COMPONENT ${DownloadAdditionalFilesForPackaging_PACKAGE_GROUP})
+		endif()
+	endforeach()
+
+endfunction()
diff --git a/scripts/cmake/packaging/PackagingWin.cmake b/scripts/cmake/packaging/PackagingWin.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..87a16027fc0e066bb6d8b0eeac5715d10fc3ebbc
--- /dev/null
+++ b/scripts/cmake/packaging/PackagingWin.cmake
@@ -0,0 +1,21 @@
+SET(CMAKE_INSTALL_OPENMP_LIBRARIES ON)
+INCLUDE(InstallRequiredSystemLibraries)
+SET(CPACK_GENERATOR NSIS ZIP)
+SET(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/scripts/packaging/ogs-de-icon.ico)
+FILE(TO_NATIVE_PATH "${CMAKE_SOURCE_DIR}/Documentation/OpenGeoSys-Logo.bmp" BACKGROUND_IMAGE)
+SET(CPACK_PACKAGE_ICON ${BACKGROUND_IMAGE})
+SET(CPACK_NSIS_INSTALLED_ICON_NAME ${CPACK_NSIS_MUI_ICON})
+SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
+SET(CPACK_NSIS_CONTACT "info@opengeosys.org")
+SET(CPACK_NSIS_MODIFY_PATH OFF)
+SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+SET(CPACK_NSIS_HELP_LINK "http://docs.opengeosys.org/assets/files/Documentation/User_Manual.pdf")
+SET(CPACK_NSIS_MENU_LINKS
+	"bin" "Executables folder"
+	"http://www.opengeosys.org" "Website"
+	"https://github.com/ufz/ogs" "Source code on GitFHub"
+	PARENT_SCOPE
+)
+IF(OGS_DOWNLOAD_ADDITIONAL_CONTENT)
+	SET(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "docs" "Documentation folder" PARENT_SCOPE)
+ENDIF()
diff --git a/scripts/packaging/ogs-de-icon.icns b/scripts/packaging/ogs-de-icon.icns
new file mode 100644
index 0000000000000000000000000000000000000000..9f77f78ae7493dfcd67716b40dd1075b05634dd8
Binary files /dev/null and b/scripts/packaging/ogs-de-icon.icns differ
diff --git a/scripts/packaging/ogs-de-icon.ico b/scripts/packaging/ogs-de-icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..4892cb8450d4428710a646e3c40a597bf7800868
Binary files /dev/null and b/scripts/packaging/ogs-de-icon.ico differ