diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index b76da6ded6..a73daa4504 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -20,7 +20,7 @@ macro(SET_PACKAGING_PARAMETERS) set(INSTALLER_DIRECTORY "${INSTALLER_COMPANY}") set(INSTALLER_NAME "interface-win64-${BUILD_SEQ}.exe") set(INTERFACE_BUNDLE_NAME "High Fidelity") - set(INTERFACE_ICON "interface.ico") + set(INTERFACE_ICON_PREFIX "interface") set(CONSOLE_ICON "console.ico") elseif (DEFINED ENV{ghprbPullId}) set(DEPLOY_PACKAGE TRUE) @@ -30,7 +30,7 @@ macro(SET_PACKAGING_PARAMETERS) set(INSTALLER_DIRECTORY "${INSTALLER_COMPANY}\\${BUILD_SEQ}") set(INSTALLER_NAME "pr-interface-win64-${BUILD_SEQ}.exe") set(INTERFACE_BUNDLE_NAME "High Fidelity ${BUILD_SEQ}") - set(INTERFACE_ICON "interface-beta.ico") + set(INTERFACE_ICON_PREFIX "interface-beta") set(CONSOLE_ICON "console-beta.ico") else () set(BUILD_SEQ "dev") @@ -39,12 +39,13 @@ macro(SET_PACKAGING_PARAMETERS) set(INSTALLER_DIRECTORY "${INSTALLER_COMPANY}") set(INSTALLER_NAME "dev-interface-win64.exe") set(INTERFACE_BUNDLE_NAME "Interface") - set(INTERFACE_ICON "interface-beta.ico") + set(INTERFACE_ICON_PREFIX "interface-beta") set(CONSOLE_ICON "console-beta.ico") endif () if (WIN32) set(INTERFACE_EXEC_NAME "interface") + set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_NAME}.ico") endif () if (APPLE) @@ -54,6 +55,8 @@ macro(SET_PACKAGING_PARAMETERS) set(INTERFACE_INSTALL_DIR ".") set(INTERFACE_INSTALL_APP_PATH "${INTERFACE_BUNDLE_NAME}.app") + + set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_NAME}.icns") else () set(CONSOLE_INSTALL_DIR ".") set(INTERFACE_INSTALL_DIR ".") diff --git a/cmake/templates/Icon.rc.in b/cmake/templates/Icon.rc.in new file mode 100644 index 0000000000..0a487c96ae --- /dev/null +++ b/cmake/templates/Icon.rc.in @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "@ICON_FILENAME@" diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index c047b69e65..a6c4e0a95d 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -5,8 +5,10 @@ !define INTERFACE_SHORTCUT_NAME "High Fidelity" !define INTERFACE_EXEC_NAME "interface.exe" + !define INTERFACE_ICON_NAME "interface.ico" !define CONSOLE_SHORTCUT_NAME "Server Console" !define CONSOLE_EXEC_NAME "server-console.exe" + !define CONSOLE_ICON_INDEX "1" ;-------------------------------- ; You must define these values @@ -706,12 +708,16 @@ Section "-Core installation" ; Conditional handling for interface shortcut ${If} ${SectionIsSelected} ${client} - CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${INTERFACE_SHORTCUT_NAME}.lnk" "$INSTDIR\${INTERFACE_EXEC_NAME}" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${INTERFACE_SHORTCUT_NAME}.lnk" \ + "$INSTDIR\${INTERFACE_EXEC_NAME}" \ + "$INSTDIR\${INTERFACE_EXEC_NAME}" ${INTERFACE_ICON_INDEX} ${EndIf} ; Conditional handling for server console shortcut ${If} ${SectionIsSelected} ${server} - CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${CONSOLE_SHORTCUT_NAME}.lnk" "$INSTDIR\${CONSOLE_EXEC_NAME}" + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${CONSOLE_SHORTCUT_NAME}.lnk" \ + "$INSTDIR\${CONSOLE_EXEC_NAME}" \ + "$INSTDIR\${CONSOLE_EXEC_NAME}" ${CONSOLE_ICON_INDEX}\ ${EndIf} CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 8596b2ac77..aaf2891067 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -67,22 +67,19 @@ if (APPLE) if (PRODUCTION_BUILD) set(MACOSX_BUNDLE_GUI_IDENTIFIER com.highfidelity.interface) - set(ICON_FILENAME "interface.icns") else () if (DEV_BUILD) set(MACOSX_BUNDLE_GUI_IDENTIFIER com.highfidelity.interface-dev) elseif (PR_BUILD) set(MACOSX_BUNDLE_GUI_IDENTIFIER com.highfidelity.interface-pr) endif () - - set(ICON_FILENAME "interface-beta.icns") endif () # set how the icon shows up in the Info.plist file - SET(MACOSX_BUNDLE_ICON_FILE "${ICON_FILENAME}") + set(MACOSX_BUNDLE_ICON_FILE "${INTERfACE_ICON_FILENAME}") # set where in the bundle to put the resources file - SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/icon/${ICON_FILENAME} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/icon/${INTERFACE_ICON_FILENAME} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) set(DISCOVERED_RESOURCES "") @@ -92,7 +89,7 @@ if (APPLE) # append the discovered resources to our list of interface sources list(APPEND INTERFACE_SRCS ${DISCOVERED_RESOURCES}) - set(INTERFACE_SRCS ${INTERFACE_SRCS} "${CMAKE_CURRENT_SOURCE_DIR}/icon/${ICON_FILENAME}") + set(INTERFACE_SRCS ${INTERFACE_SRCS} "${CMAKE_CURRENT_SOURCE_DIR}/icon/${INTERFACE_ICON_FILENAME}") endif() # create the executable, make it a bundle on OS X @@ -102,7 +99,15 @@ if (APPLE) # make sure the output name for the .app bundle is correct set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${INTERFACE_BUNDLE_NAME}) elseif(WIN32) - add_executable(${TARGET_NAME} WIN32 ${INTERFACE_SRCS} ${QM}) + # configure an rc file for the chosen icon + set(CONFIGURE_ICON_FILENAME ${INTERFACE_ICON_FILENAME}) + set(CONFIGURE_ICON_RC_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Icon.rc") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/Icon.rc.in" ${CONFIGURE_ICON_RC_OUTPUT}) + + # add an executable that also has the icon itself and the configured rc file as resources + add_executable(${TARGET_NAME} WIN32 + ${INTERFACE_SRCS} ${QM} ${CONFIGURE_ICON_RC_OUTPUT} "${CMAKE_CURRENT_SOURCE_DIR}/icon/${INTERFACE_ICON_FILENAME}" + ) else() add_executable(${TARGET_NAME} ${INTERFACE_SRCS} ${QM}) endif()