diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 788bab9ff4..01f766c63c 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -17,9 +17,10 @@ macro(GENERATE_INSTALLERS) set(CPACK_PACKAGE_NAME "High Fidelity") set(CPACK_PACKAGE_VENDOR "High Fidelity") - if (WIN32) - set(INTERFACE_STARTMENU_NAME "High Fidelity") - endif () + # configure a cpack properties file for custom installation options + set(CPACK_CONFIGURED_PROP_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackCustomProperties.cmake") + configure_file("${HF_CMAKE_DIR}/templates/CPackProperties.cmake.in" ${CPACK_CONFIGURED_PROP_FILE}) + set(CPACK_PROPERTIES_FILE ${CPACK_CONFIGURED_PROP_FILE}) if (APPLE) set(CPACK_PACKAGE_INSTALL_DIRECTORY "/") @@ -71,24 +72,4 @@ macro(GENERATE_INSTALLERS) endif () include(CPack) - - # if (DEPLOY_PACKAGE AND WIN32) - # file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/package-bundle") - # find_program(MAKENSIS_COMMAND makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\NSIS]) - # if (NOT MAKENSIS_COMMAND) - # message(FATAL_ERROR "The Nullsoft Scriptable Install Systems is required for generating packaged installers on Windows (http://nsis.sourceforge.net/)") - # endif () - # add_custom_target( - # build-package ALL - # DEPENDS interface assignment-client domain-server stack-manager - # COMMAND set INSTALLER_SOURCE_DIR=${CMAKE_BINARY_DIR}/package-bundle - # COMMAND set INSTALLER_NAME=${CMAKE_BINARY_DIR}/${INSTALLER_NAME} - # COMMAND set INSTALLER_SCRIPTS_DIR=${CMAKE_SOURCE_DIR}/examples - # COMMAND set INSTALLER_COMPANY=${INSTALLER_COMPANY} - # COMMAND set INSTALLER_DIRECTORY=${INSTALLER_DIRECTORY} - # COMMAND CMD /C "\"${MAKENSIS_COMMAND}\" ${CMAKE_SOURCE_DIR}/tools/nsis/release.nsi" - # ) - # - # set_target_properties(build-package PROPERTIES EXCLUDE_FROM_ALL TRUE FOLDER "Installer") - # endif () endmacro() diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index 194fe6b694..ebe9da00d4 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -19,6 +19,7 @@ macro(SET_PACKAGING_PARAMETERS) set(INSTALLER_COMPANY "High Fidelity") set(INSTALLER_DIRECTORY "${INSTALLER_COMPANY}") set(INSTALLER_NAME "interface-win64-${BUILD_SEQ}.exe") + set(HIGH_FIDELITY_PROTOCOL "hifi") set(INTERFACE_BUNDLE_NAME "High Fidelity") set(INTERFACE_ICON_PREFIX "interface") set(CONSOLE_ICON "console.ico") @@ -43,23 +44,27 @@ macro(SET_PACKAGING_PARAMETERS) set(CONSOLE_ICON "console-beta.ico") endif () + set(CONSOLE_INSTALL_DIR ".") + set(INTERFACE_INSTALL_DIR ".") + if (WIN32) - set(INTERFACE_EXEC_NAME "interface") + set(INTERFACE_EXEC_PREFIX "interface") set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_PREFIX}.ico") + + set(CONSOLE_EXEC_NAME "server-console.exe") + + # start menu shortcuts + set(INTERFACE_SM_SHORTCUT_NAME "High Fidelity") + set(CONSOLE_SM_SHORTCUT_NAME "Server Console") endif () if (APPLE) - set(CONSOLE_INSTALL_DIR ".") - set(CONSOLE_APPLICATION_NAME "Server Console.app") - set(CONSOLE_INSTALL_APP_PATH "${CONSOLE_APPLICATION_NAME}") + set(CONSOLE_EXEC_NAME "Server Console.app") + set(CONSOLE_INSTALL_APP_PATH "${CONSOLE_EXEC_NAME}") - set(INTERFACE_INSTALL_DIR ".") set(INTERFACE_INSTALL_APP_PATH "${INTERFACE_BUNDLE_NAME}.app") set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_PREFIX}.icns") - else () - set(CONSOLE_INSTALL_DIR ".") - set(INTERFACE_INSTALL_DIR ".") endif() # setup component categories for installer diff --git a/cmake/templates/CPackProperties.cmake.in b/cmake/templates/CPackProperties.cmake.in new file mode 100644 index 0000000000..510c004441 --- /dev/null +++ b/cmake/templates/CPackProperties.cmake.in @@ -0,0 +1,17 @@ +# +# CPackProperties.cmake.in +# cmake/templates +# +# Copyright 2016 High Fidelity, Inc. +# Created by Stephen Birarda on January 11, 2016 +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# + +set(INTERFACE_SHORTCUT_NAME "@INTERFACE_SM_SHORTCUT_NAME@") +set(INTERFACE_WIN_EXEC_NAME "@INTERFACE_EXEC_PREFIX@.exe") +set(CONSOLE_SHORTCUT_NAME "@CONSOLE_SM_SHORTCUT_NAME@") +set(CONSOLE_WIN_EXEC_NAME "@CONSOLE_EXEC_NAME@") +set(HIGH_FIDELITY_PROTOCOL "@HIGH_FIDELITY_PROTOCOL@") +set(PRODUCTION_BUILD "@PRODUCTION_BUILD@") diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 7c0aa47272..295a929ad3 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -1,15 +1,5 @@ ; CPack install script designed for a nmake build -;-------------------------------- -; Variables that drive High Fidelity custom behaviour - - !define INTERFACE_SHORTCUT_NAME "High Fidelity" - !define INTERFACE_EXEC_NAME "interface.exe" - !define CONSOLE_SHORTCUT_NAME "Server Console" - !define CONSOLE_EXEC_NAME "server-console.exe" - !define HIGH_FIDELITY_PROTOCOL "hifi" - !define PRODUCTION_BUILD "@PRODUCTION_BUILD@" - ;-------------------------------- ; You must define these values @@ -708,23 +698,23 @@ Section "-Core installation" ; Conditional handling for Interface specific options ${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_WIN_EXEC_NAME@" - ${If} $PRODUCTION_BUILD == "1" + ${If} @PRODUCTION_BUILD@ == "1" ; hifi:// protocol handler registry entries - WriteRegStr HKCR '${HIGH_FIDELITY_PROTOCOL}' '' 'URL:High Fidelity Protocol' - WriteRegStr HKCR '${HIGH_FIDELITY_PROTOCOL}' 'URL Protocol' '' - WriteRegStr HKCR '${HIGH_FIDELITY_PROTOCOL}\DefaultIcon' '' '$INSTDIR\${INTERFACE_EXEC_NAME},1' - WriteRegStr HKCR '${HIGH_FIDELITY_PROTOCOL}\shell\open\command' '' '$INSTDIR\${INTERFACE_EXEC_NAME} --url "%1"' + WriteRegStr HKCR '@HIGH_FIDELITY_PROTOCOL@' '' 'URL:High Fidelity Protocol' + WriteRegStr HKCR '@HIGH_FIDELITY_PROTOCOL@' 'URL Protocol' '' + WriteRegStr HKCR '@HIGH_FIDELITY_PROTOCOL@\DefaultIcon' '' '$INSTDIR\@INTERFACE_WIN_EXEC_NAME@,1' + WriteRegStr HKCR '@HIGH_FIDELITY_PROTOCOL@\shell\open\command' '' '$INSTDIR\@INTERFACE_WIN_EXEC_NAME@ --url "%1"' ${EndIf} ${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@" ${EndIf} CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" @@ -881,13 +871,13 @@ Section "Uninstall" !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" - Delete "$SMPROGRAMS\$MUI_TEMP\${INTERFACE_SHORTCUT_NAME}.lnk" - Delete "$SMPROGRAMS\$MUI_TEMP\${CONSOLE_SHORTCUT_NAME}.lnk" + Delete "$SMPROGRAMS\$MUI_TEMP\@INTERFACE_SHORTCUT_NAME@.lnk" + Delete "$SMPROGRAMS\$MUI_TEMP\@CONSOLE_SHORTCUT_NAME@.lnk" @CPACK_NSIS_DELETE_ICONS@ @CPACK_NSIS_DELETE_ICONS_EXTRA@ ;Delete High Fidelity protocol handling - DeleteRegKey HKCR '${HIGH_FIDELITY_PROTOCOL}' + DeleteRegKey HKCR '@HIGH_FIDELITY_PROTOCOL@' ;Delete empty start menu parent diretories StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"