From baf095f4af625e54071c4d284c10a769f3e2d66d Mon Sep 17 00:00:00 2001 From: Leonardo Murillo Date: Wed, 23 Dec 2015 14:16:49 -0600 Subject: [PATCH] Lots and lots of changes to installer --- cmake/macros/ConsolidateStackComponents.cmake | 56 ++-- cmake/macros/GenerateInstallers.cmake | 60 ++-- cmake/modules/FindOpenSSL.cmake | 3 +- tools/nsis/installer_vertical.bmp | Bin 0 -> 154544 bytes tools/nsis/release.nsi | 258 ++++++++++-------- 5 files changed, 204 insertions(+), 173 deletions(-) create mode 100644 tools/nsis/installer_vertical.bmp diff --git a/cmake/macros/ConsolidateStackComponents.cmake b/cmake/macros/ConsolidateStackComponents.cmake index 33b50472bf..2fc81d1595 100644 --- a/cmake/macros/ConsolidateStackComponents.cmake +++ b/cmake/macros/ConsolidateStackComponents.cmake @@ -1,28 +1,30 @@ -macro(CONSOLIDATE_STACK_COMPONENTS) - - if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE) - if (WIN32) - # Copy all the output for this target into the common deployment location - add_custom_command( - TARGET ${TARGET_NAME} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy_directory $ ${CMAKE_BINARY_DIR}/full-stack-deployment - ) - - # Copy icon files for interface and stack manager - if (TARGET_NAME STREQUAL "interface" OR TARGET_NAME STREQUAL "stack-manager") - if (TARGET_NAME STREQUAL "interface") - set (ICON_FILE_PATH "${PROJECT_SOURCE_DIR}/icon/${INTERFACE_ICON}") - set (ICON_DESTINATION_NAME "interface.ico") - elseif (TARGET_NAME STREQUAL "stack-manager") - set (ICON_FILE_PATH "${PROJECT_SOURCE_DIR}/assets/${STACK_MANAGER_ICON}") - set (ICON_DESTINATION_NAME "stack-manager.ico") - endif () - add_custom_command( - TARGET ${TARGET_NAME} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy ${ICON_FILE_PATH} ${CMAKE_BINARY_DIR}/full-stack-deployment/${ICON_DESTINATION_NAME} - ) - endif () - endif () - endif () - +macro(CONSOLIDATE_STACK_COMPONENTS) + + if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE) + if (WIN32) + # Copy icon files for interface and stack manager + if (TARGET_NAME STREQUAL "interface" OR TARGET_NAME STREQUAL "stack-manager") + if (TARGET_NAME STREQUAL "interface") + set (ICON_FILE_PATH "${PROJECT_SOURCE_DIR}/icon/${INTERFACE_ICON}") + set (ICON_DESTINATION_NAME "interface.ico") + set (DEPLOYMENT_PATH "front-end-deployment") + else () + set (ICON_FILE_PATH "${PROJECT_SOURCE_DIR}/assets/${STACK_MANAGER_ICON}") + set (ICON_DESTINATION_NAME "stack-manager.ico") + set (DEPLOYMENT_PATH "back-end-deployment") + endif () + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy ${ICON_FILE_PATH} ${CMAKE_BINARY_DIR}/${DEPLOYMENT_PATH}/${ICON_DESTINATION_NAME} + COMMAND "${CMAKE_COMMAND}" -E copy_directory $ ${CMAKE_BINARY_DIR}/${DEPLOYMENT_PATH} + ) + else () + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_directory $ ${CMAKE_BINARY_DIR}/back-end-deployment + ) + endif () + endif () + endif () + endmacro() \ No newline at end of file diff --git a/cmake/macros/GenerateInstallers.cmake b/cmake/macros/GenerateInstallers.cmake index 570e24332b..b8860b3ddc 100644 --- a/cmake/macros/GenerateInstallers.cmake +++ b/cmake/macros/GenerateInstallers.cmake @@ -1,30 +1,32 @@ -# -# GenerateInstallers.cmake -# cmake/macros -# -# Created by Leonardo Murillo on 12/16/2015. -# Copyright 2015 High Fidelity, Inc. -# -# Distributed under the Apache License, Version 2.0. -# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -# - -macro(GENERATE_INSTALLERS) - if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE AND WIN32) - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/full-stack-deployment") - 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}/full-stack-deployment - 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" - ) - endif () +# +# GenerateInstallers.cmake +# cmake/macros +# +# Created by Leonardo Murillo on 12/16/2015. +# Copyright 2015 High Fidelity, Inc. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +# + +macro(GENERATE_INSTALLERS) + if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE AND WIN32) + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/front-end-deployment") + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/back-end-deployment") + 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_FRONTEND_DIR=${CMAKE_BINARY_DIR}/front-end-deployment + COMMAND set INSTALLER_BACKEND_DIR=${CMAKE_BINARY_DIR}/back-end-deployment + 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" + ) + endif () endmacro() \ No newline at end of file diff --git a/cmake/modules/FindOpenSSL.cmake b/cmake/modules/FindOpenSSL.cmake index 9d9557ad9e..fbadcd24c8 100644 --- a/cmake/modules/FindOpenSSL.cmake +++ b/cmake/modules/FindOpenSSL.cmake @@ -258,7 +258,8 @@ if (WIN32) if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE) add_custom_command( TARGET ${TARGET_NAME} POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy ${OPENSSL_DLL_PATH}/ssleay32.dll ${CMAKE_BINARY_DIR}/full-stack-deployment/ + COMMAND "${CMAKE_COMMAND}" -E copy ${OPENSSL_DLL_PATH}/ssleay32.dll ${CMAKE_BINARY_DIR}/front-end-deployment/ + COMMAND "${CMAKE_COMMAND}" -E copy ${OPENSSL_DLL_PATH}/ssleay32.dll ${CMAKE_BINARY_DIR}/back-end-deployment/ ) endif () endif () diff --git a/tools/nsis/installer_vertical.bmp b/tools/nsis/installer_vertical.bmp new file mode 100644 index 0000000000000000000000000000000000000000..feefd2db8393d2a1b5eebdad741d59a525ab7335 GIT binary patch literal 154544 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 U03m=7KnNfN5CSnn;MJ@D4+83Kg8%>k literal 0 HcmV?d00001 diff --git a/tools/nsis/release.nsi b/tools/nsis/release.nsi index c5a568f165..1068ba17dc 100644 --- a/tools/nsis/release.nsi +++ b/tools/nsis/release.nsi @@ -1,164 +1,190 @@ !include LogicLib.nsh !include x64.nsh +!include MUI2.nsh + +;------------------------------------------------------------------------------------------------------ +; Source Directory Definition +; +; frontend_srcdir = Source directory for Interface +; backend_srcdir = Source directory for Stack Manager and server stack +; scripts_srcdir = Source directory for JS scripts + +!define frontend_srcdir "$%INSTALLER_FRONTEND_DIR%" +!define backend_srcdir "$%INSTALLER_BACKEND_DIR%" +!define scripts_srcdir "$%INSTALLER_SCRIPTS_DIR%" + +; Install Directories, Icons and Registry entries +; +; setup = Name of the installer executable that will be produced +; uninstaller = Name of the uninstaller executable +; company = String to use for company name, includes build type suffix [eg. High Fidelity - PR] for non-release installers +; install_directory = Subdirectory where this specific version will be installed, in the case of dev and pr builds, its a +; unique subdirectory inside a company parent [eg. \High Fidelity - PR\1234\ ] -!define srcdir "$%INSTALLER_SOURCE_DIR%" !define setup "$%INSTALLER_NAME%" -!define scriptsdir "$%INSTALLER_SCRIPTS_DIR%" +!define uninstaller "uninstall.exe" !define company "$%INSTALLER_COMPANY%" !define install_directory "$%INSTALLER_DIRECTORY%" + +; Executables and icons for GUI applications that will be added as shortcuts. !define interface_exec "interface.exe" !define stack_manager_exec "stack-manager.exe" !define interface_icon "interface.ico" !define stack_manager_icon "stack-manager.ico" -!define regkey "Software\${company}" -!define uninstkey "Software\Microsoft\Windows\CurrentVersion\Uninstall\${company}" -!define install_dir_company "$PROGRAMFILES64\${install_directory}" + +; Registry entries +!define regkey "Software\${install_directory}" +!define uninstkey "Software\Microsoft\Windows\CurrentVersion\Uninstall\${install_directory}" +!define frontend_instdir "$PROGRAMFILES64\${install_directory}" +!define backend_instdir "$APPDATA\${install_directory}" + +; Start Menu program group !define startmenu_company "$SMPROGRAMS\${install_directory}" -!define uninstaller "uninstall.exe" -;-------------------------------- +;------------------------------------------------------------------------------------------------------ +; Local Variables and Other Options + +Var ChosenFrontEndInstallDir +Var ChosenBackEndInstallDir -XPStyle on ShowInstDetails hide ShowUninstDetails hide - -Name "${company}" -Caption "${company}" - -!ifdef icon - Icon "${icon}" -!endif - -OutFile "${setup}" - +AutoCloseWindow true +ShowInstDetails show SetDateSave on SetDatablockOptimize on CRCCheck on SilentInstall normal +Icon "${frontend_srcdir}\${interface_icon}" +UninstallIcon "${frontend_srcdir}\${interface_icon}" +UninstallText "This will uninstall ${company}." +Name "${company}" +Caption "${company}" +OutFile "${setup}" -InstallDir "${install_dir_company}" -InstallDirRegKey HKLM "${regkey}" "" +;------------------------------------------------------------------------------------------------------ +; Components -; Page components -Page directory -Page components -Page instfiles - -UninstPage uninstConfirm -UninstPage instfiles - -;-------------------------------- - -AutoCloseWindow true -ShowInstDetails show - - -!ifdef screenimage - - ; set up background image - ; uses BgImage plugin - - Function .onGUIInit - ; extract background BMP into temp plugin directory - InitPluginsDir - File /oname=$PLUGINSDIR\1.bmp "${screenimage}" - - BgImage::SetBg /NOUNLOAD /FILLSCREEN $PLUGINSDIR\1.bmp - BgImage::Redraw /NOUNLOAD - FunctionEnd - - Function .onGUIEnd - ; Destroy must not have /NOUNLOAD so NSIS will be able to unload and delete BgImage before it exits - BgImage::Destroy - FunctionEnd - -!endif - -; Optional Component Selection Section /o "DDE Face Recognition" SEC01 - SetOutPath "$INSTDIR" - CreateDirectory $INSTDIR\dde - NSISdl::download "https://s3-us-west-1.amazonaws.com/hifi-production/optionals/dde-installer.exe" "$INSTDIR\dde-installer.exe" - ExecWait '"$INSTDIR\dde-installer.exe" /q:a /t:"$INSTDIR\dde"' + SetOutPath "$ChosenFrontEndInstallDir" + CreateDirectory $ChosenFrontEndInstallDir\dde + NSISdl::download "https://s3-us-west-1.amazonaws.com/hifi-production/optionals/dde-installer.exe" "$ChosenFrontEndInstallDir\dde-installer.exe" + ExecWait '"$ChosenFrontEndInstallDir\dde-installer.exe" /q:a /t:"$ChosenFrontEndInstallDir\dde"' SectionEnd -; beginning (invisible) section Section "Registry Entries and Procotol Handler" SEC02 - SectionIn RO - - WriteRegStr HKLM "${regkey}" "Install_Dir" "$INSTDIR" + WriteRegStr HKLM "${regkey}" "Install_Dir" "$ChosenFrontEndInstallDir" WriteRegStr HKLM "${uninstkey}" "DisplayName" "${install_directory} (remove only)" - WriteRegStr HKLM "${uninstkey}" "UninstallString" '"$INSTDIR\${uninstaller}"' - WriteRegStr HKCR "${company}\Shell\open\command\" "" '"$INSTDIR\${interface_exec} "%1"' - WriteRegStr HKCR "${company}\DefaultIcon" "" "$INSTDIR\${interface_icon}" + WriteRegStr HKLM "${uninstkey}" "UninstallString" '"$ChosenFrontEndInstallDir\${uninstaller}"' + WriteRegStr HKCR "${company}\Shell\open\command\" "" '"$ChosenFrontEndInstallDir\${interface_exec} "%1"' + WriteRegStr HKCR "${company}\DefaultIcon" "" "$ChosenFrontEndInstallDir\${interface_icon}" ; hifi:// protocol handler registry entries WriteRegStr HKCR 'hifi' '' 'URL:Alert Protocol' WriteRegStr HKCR 'hifi' 'URL Protocol' '' - WriteRegStr HKCR 'hifi\DefaultIcon' '' '$INSTDIR\${interface_icon},1' - WriteRegStr HKCR 'hifi\shell\open\command' '' '$INSTDIR\${interface_exec} --url "%1"' + WriteRegStr HKCR 'hifi\DefaultIcon' '' '$ChosenFrontEndInstallDir\${interface_icon},1' + WriteRegStr HKCR 'hifi\shell\open\command' '' '$ChosenFrontEndInstallDir\${interface_exec} --url "%1"' - SetOutPath $INSTDIR - - ; package all files, recursively, preserving attributes - ; assume files are in the correct places - File /r "${srcdir}\" - File /a "${srcdir}\${interface_icon}" - File /a "${srcdir}\${stack_manager_icon}" - ; any application-specific files - !ifdef files - !include "${files}" - !endif - WriteUninstaller "${uninstaller}" - Exec '"$INSTDIR\2013_vcredist_x64.exe" /q /norestart' - Exec '"$INSTDIR\2010_vcredist_x86.exe" /q /norestart' + WriteUninstaller "$ChosenFrontEndInstallDir\${uninstaller}" + Exec '"$ChosenFrontEndInstallDir\2013_vcredist_x64.exe" /q /norestart' + Exec '"$ChosenFrontEndInstallDir\2010_vcredist_x86.exe" /q /norestart' SectionEnd -; create shortcuts -Section "Start Menu Shortcuts" SEC03 +Section "Interface Client" SEC03 + SetOutPath $ChosenFrontEndInstallDir + File /r "${frontend_srcdir}\" + File /a "${frontend_srcdir}\${interface_icon}" +SectionEnd - SectionIn RO +Section "Stack Manager Bundle" SEC04 + SetOutPath $ChosenBackEndInstallDir + File /r "${backend_srcdir}\" + File /a "${backend_srcdir}\${stack_manager_icon}" +SectionEnd - ; This should install the shortcuts for "All Users" +Section "Start Menu Shortcuts" SEC05 SetShellVarContext all CreateDirectory "${startmenu_company}" - SetOutPath $INSTDIR ; for working directory - CreateShortCut "${startmenu_company}\Interface.lnk" "$INSTDIR\${interface_exec}" "" "$INSTDIR\${interface_icon}" - CreateShortCut "${startmenu_company}\Stack Manager.lnk" "$INSTDIR\${stack_manager_exec}" "" "$INSTDIR\${stack_manager_icon}" - CreateShortCut "${startmenu_company}\Uninstall ${company}.lnk" "$INSTDIR\${uninstaller}" + SetOutPath $ChosenFrontEndInstallDir + CreateShortCut "${startmenu_company}\Interface.lnk" "$ChosenFrontEndInstallDir\${interface_exec}" "" "$ChosenFrontEndInstallDir\${interface_icon}" + CreateShortCut "${startmenu_company}\Stack Manager.lnk" "$ChosenBackEndInstallDir\${stack_manager_exec}" "" "$ChosenBackEndInstallDir\${stack_manager_icon}" + CreateShortCut "${startmenu_company}\Uninstall ${company}.lnk" "$ChosenFrontEndInstallDir\${uninstaller}" SectionEnd -; Uninstaller -; All section names prefixed by "Un" will be in the uninstaller - -UninstallText "This will uninstall ${company}." - -!ifdef icon - UninstallIcon "${interface_icon}" -!endif - -Section "Uninstall" SEC04 - - SectionIn RO - - ; Explicitly remove all added shortcuts +Section "Uninstall" SetShellVarContext all DELETE "${startmenu_company}\Interface.lnk" DELETE "${startmenu_company}\Stack Manager.lnk" DELETE "${startmenu_company}\Uninstall ${company}.lnk" - RMDIR "${startmenu_company}" - - RMDIR /r "$INSTDIR" - ; This should remove the High Fidelity folder in Program Files if it's empty - RMDIR "${install_dir_company}" - - !ifdef unfiles - !include "${unfiles}" - !endif - ; It's good practice to put the registry key removal at the very end + RMDIR /r "$ChosenBackEndInstallDir" + RMDIR /r "$ChosenFrontEndInstallDir" + RMDIR "${install_directory}" DeleteRegKey HKLM "${uninstkey}" DeleteRegKey HKLM "${regkey}" DeleteRegKey HKCR 'hifi' -SectionEnd \ No newline at end of file +SectionEnd + +;------------------------------------------------------------------------------------------------------ +; Functions + +Function .onInit + StrCpy $ChosenFrontEndInstallDir "${frontend_instdir}" + StrCpy $ChosenBackEndInstallDir "${backend_instdir}" +FunctionEnd + +Function isInterfaceSelected + ${IfNot} ${SectionIsSelected} ${SEC03} + Abort + ${EndIf} +FunctionEnd + +Function isStackManagerSelected + ${IfNot} ${SectionIsSelected} ${SEC04} + Abort + ${EndIf} +FunctionEnd + +;------------------------------------------------------------------------------------------------------ +; User interface macros and other definitions + +!define MUI_WELCOMEFINISHPAGE_BITMAP "installer_vertical.bmp" +!define MUI_WELCOMEPAGE_TITLE "High Fidelity - Integrated Installer" +!define MUI_WELCOMEPAGE_TEXT "Welcome to High Fidelity! This installer includes both the Interface client for VR access as well as the Stack Manager and required server components for you to host your own domain in the metaverse." +!insertmacro MUI_PAGE_WELCOME + +!define MUI_PAGE_HEADER_TEXT "Please select the components you want to install" +!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "Hover over a component for a brief description" +!insertmacro MUI_PAGE_COMPONENTS + +!define MUI_PAGE_CUSTOMFUNCTION_PRE isInterfaceSelected +!define MUI_DIRECTORYPAGE_VARIABLE $ChosenFrontEndInstallDir +!define MUI_PAGE_HEADER_TEXT "Interface client" +!define MUI_PAGE_HEADER_SUBTEXT "" +!define MUI_DIRECTORYPAGE_TEXT_TOP "Choose a location to install the High Fidelity Interface client. You will use the Interface client to connect to domains in the metaverse." +!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Install Directory" +!insertmacro MUI_PAGE_DIRECTORY + +!define MUI_PAGE_CUSTOMFUNCTION_PRE isStackManagerSelected +!define MUI_DIRECTORYPAGE_VARIABLE $ChosenBackEndInstallDir +!define MUI_PAGE_HEADER_TEXT "Stack Manager" +!define MUI_PAGE_HEADER_SUBTEXT "" +!define MUI_DIRECTORYPAGE_TEXT_TOP "Choose a location to install the High Fidelity Stack Manager bundle, including back end components. NOTE: If you change the default path, make sure you're selecting an unprivileged location, otherwise you will be forced to run the application as administrator for correct functioning." +!define MUI_DIRECTORYPAGE_TEXT_DESTINATION "Install Directory - must be writable" +!insertmacro MUI_PAGE_DIRECTORY + +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "DDE enables facial gesture recognition using a standard 2D webcam" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Registry entries are required by the system, we will also add a hifi:// protocol handler" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Interface is the GUI client to access domains running the High Fidelity VR stack" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "The Stack Manager allows you to run a domain of your own and connect it to the High Fidelity metaverse" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "Adds a program group and shortcuts to the Start Menu" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +!insertmacro MUI_LANGUAGE "English" \ No newline at end of file