diff --git a/src/sbbs3/chat/CMakeLists.txt b/src/sbbs3/chat/CMakeLists.txt
index 7baf93c217dca578507dbf6c49bc07989f64e435..fb8080c2e92c3ea10876a4c6cf7171109813a605 100644
--- a/src/sbbs3/chat/CMakeLists.txt
+++ b/src/sbbs3/chat/CMakeLists.txt
@@ -2,15 +2,22 @@ project (Chat C CXX)
 
 cmake_minimum_required(VERSION 2.8)
 
-add_custom_target(chat ALL
+file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} SOURCE_DIR)
+file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR} BINARY_DIR)
+add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/chat.exe
 	COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/build.bat
-	DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/chat.cpp
-		${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.cpp
+	MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/chat.cpp
+	DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.cpp
 		${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.dfm
 		${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.h
 		${CMAKE_CURRENT_SOURCE_DIR}/chat.bpr
 		${CMAKE_CURRENT_SOURCE_DIR}/chat.res
 	WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+)
+add_custom_target(chat ALL
+	COMMAND if not exist \"${BINARY_DIR}\\$<CONFIGURATION>\" mkdir \"${BINARY_DIR}\\$<CONFIGURATION>\"
+	COMMAND copy \"${SOURCE_DIR}\\chat.exe\" \"${BINARY_DIR}\\$<CONFIGURATION>\\\"
+	DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/chat.exe
 	SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/chat.cpp
 		${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.cpp
 		${CMAKE_CURRENT_SOURCE_DIR}/MainFormUnit.dfm
@@ -18,6 +25,5 @@ add_custom_target(chat ALL
 		${CMAKE_CURRENT_SOURCE_DIR}/chat.bpr
 		${CMAKE_CURRENT_SOURCE_DIR}/chat.res
 )
-file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/chat.exe 
-	DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
-)
+
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/chat.exe DESTINATION bin)
\ No newline at end of file