Sfoglia il codice sorgente

Merge pull request #29 from Mixaill/nsis

CMake: add NSIS generator settings
Ivan Savenko 11 anni fa
parent
commit
4fca583062

+ 14 - 1
CMakeLists.txt

@@ -285,7 +285,20 @@ set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSIO
 set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
 
 if(WIN32)
-	set(CPACK_GENERATOR ZIP) # just use zip? CPack has some GUI install as well
+	set(CPACK_MONOLITHIC_INSTALL 1)
+	set(CPACK_PACKAGE_NAME "VCMI")
+	set(CPACK_PACKAGE_VENDOR "VCMI team")
+	set(CPACK_PACKAGE_FILE_NAME "vcmi-${CPACK_PACKAGE_VERSION}-win32")
+	set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
+	set(CPACK_PACKAGE_EXECUTABLES "VCMI_launcher;VCMI")
+	set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
+	set(CPACK_NSIS_PACKAGE_NAME "VCMI ${CPACK_PACKAGE_VERSION}")
+	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
+	set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " CreateShortCut \\\"$DESKTOP\\\\VCMI.lnk\\\" \\\"$INSTDIR\\\\VCMI_launcher.exe\\\"")
+    set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " Delete \\\"$DESKTOP\\\\VCMI.lnk\\\" ")
+	
+	configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/CMakeCPackOptions.cmake.in" "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
+	set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CMakeCPackOptions.cmake")
 elseif(APPLE)
 	set(CPACK_GENERATOR DragNDrop)
 	set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/osx/dmg_background.png")

+ 2 - 0
client/CMakeLists.txt

@@ -97,6 +97,8 @@ if(APPLE)
 		cp -r ${CMAKE_HOME_DIRECTORY}/launcher/icons/ ${BUNDLE_PATH}/Data/launcher/icons/)
 		
 	add_custom_command(TARGET vcmiclient POST_BUILD COMMAND ${MakeVCMIBundle})
+elseif(WIN32)
+	add_executable(vcmiclient ${client_SRCS} VCMI_client.mingw.rc)
 else()
 	add_executable(vcmiclient ${client_SRCS})
 endif()

+ 1 - 0
client/VCMI_client.mingw.rc

@@ -0,0 +1 @@
+IDI_ICON1   ICON  "vcmi.ico"

+ 26 - 0
cmake_modules/CMakeCPackOptions.cmake.in

@@ -0,0 +1,26 @@
+# This file is configured at cmake time, and loaded at cpack time.
+# To pass variables to cpack from cmake, they must be configured
+# in this file.
+
+if(CPACK_GENERATOR MATCHES "NSIS")
+	set(CPACK_NSIS_INSTALL_ROOT "@CPACK_NSIS_INSTALL_ROOT@")
+
+	# set the install/unistall icon used for the installer itself
+	# There is a bug in NSI that does not handle full unix paths properly.
+	set(CPACK_NSIS_MUI_ICON "@CMAKE_SOURCE_DIR@/client\\vcmi.ico")
+	set(CPACK_NSIS_MUI_UNIICON "@CMAKE_SOURCE_DIR@/client\\vcmi.ico")
+	# set the package header icon for MUI
+	set(CPACK_PACKAGE_ICON "@CMAKE_SOURCE_DIR@/client\\vcmi.ico")
+
+	set(CPACK_NSIS_MENU_LINKS 
+		"http://vcmi.eu/" "VCMI Web Site")
+
+	set(CPACK_NSIS_INSTALLED_ICON_NAME "VCMI_client.exe")
+	set(CPACK_NSIS_COMPRESSOR "/SOLID lzma")
+	set(CPACK_NSIS_PACKAGE_NAME "@CPACK_NSIS_PACKAGE_NAME@")
+	set(CPACK_NSIS_DISPLAY_NAME "@CPACK_NSIS_PACKAGE_NAME@, open-source engine for Heroes of Might and Magic III ")
+	set(CPACK_NSIS_HELP_LINK "http://vcmi.eu/")
+	set(CPACK_NSIS_URL_INFO_ABOUT "http://vcmi.eu/")
+	set(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@)
+	set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
+endif()

+ 1 - 1
launcher/CMakeLists.txt

@@ -52,7 +52,7 @@ set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} ${CMAKE_CXX_FLAGS}")
 qt5_wrap_ui(launcher_UI_HEADERS ${launcher_FORMS})
 
 if(WIN32)
-	add_executable(vcmilauncher WIN32 ${launcher_SRCS} ${launcher_UI_HEADERS})
+	add_executable(vcmilauncher WIN32 ${launcher_SRCS} ${launcher_UI_HEADERS} VCMI_launcher.mingw.rc)
 	set_target_properties(vcmilauncher PROPERTIES OUTPUT_NAME VCMI_launcher)
 else()
 	add_executable(vcmilauncher ${launcher_SRCS} ${launcher_UI_HEADERS})

+ 1 - 0
launcher/VCMI_launcher.mingw.rc

@@ -0,0 +1 @@
+IDI_ICON1   ICON  "../client/vcmi.ico"