mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 08:37:19 +02:00
Consolidating installer checkpoint
This commit is contained in:
parent
3e6316f089
commit
711d02ba2f
4 changed files with 207 additions and 49 deletions
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 2.8.12.2)
|
cmake_minimum_required(VERSION 3.3.2)
|
||||||
|
|
||||||
if (USE_ANDROID_TOOLCHAIN)
|
if (USE_ANDROID_TOOLCHAIN)
|
||||||
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/android/android.toolchain.cmake")
|
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/android/android.toolchain.cmake")
|
||||||
|
@ -230,32 +230,14 @@ endif ()
|
||||||
include_application_version()
|
include_application_version()
|
||||||
|
|
||||||
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE)
|
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE)
|
||||||
message(STATUS "+++++ Package for deployment will be generated on this build +++++")
|
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/full-stack-deployment")
|
||||||
|
find_program(MAKENSIS_COMMAND makensis PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\NSIS])
|
||||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/full-stack-deployment)
|
if (NOT MAKENSIS_COMMAND)
|
||||||
|
message(FATAL_ERROR "The Nullsoft Scriptable Install Systems is required for generating packaged installers on Windows (http://nsis.sourceforge.net/)")
|
||||||
set(ICONPATH_INTERFACE "$INSTDIR/${PATH_INSTALL_DATA}/interface.ico")
|
endif ()
|
||||||
set(ICONPATH_STACK_MANAGER "$INSTDIR/${PATH_INSTALL_DATA}/stack-manager.ico")
|
add_custom_target(
|
||||||
string(REPLACE "/" "\\\\" ICONPATH_INTERFACE ${ICONPATH_INTERFACE})
|
build-package ALL
|
||||||
string(REPLACE "/" "\\\\" ICONPATH_STACK_MANAGER ${ICONPATH_STACK_MANAGER})
|
DEPENDS interface assignment-client domain-server stack-manager
|
||||||
|
COMMAND CMD /C "\"${MAKENSIS_COMMAND}\" ${CMAKE_SOURCE_DIR}/tools/nsis/release.nsi"
|
||||||
set(CPACK_PACKAGE_NAME "High Fidelity")
|
)
|
||||||
set(CPACK_PACKAGE_VENDOR "High Fidelity, Inc")
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "High Fidelity Interface and Stack")
|
|
||||||
set(CPACK_PACKAGE_VERSION "${BUILD_SEQ}")
|
|
||||||
set(CPACK_PACKAGE_VERSION_MAJOR "${BUILD_SEQ}")
|
|
||||||
set(CPACK_PACKAGE_VERSION_MINOR "0")
|
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH "0")
|
|
||||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "High Fidelity-${BUILD_SEQ}")
|
|
||||||
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
|
|
||||||
set(CPACK_PACKAGE_EXECUTABLES
|
|
||||||
stack-manager "Stack Manager"
|
|
||||||
interface "Interface"
|
|
||||||
)
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
install(DIRECTORY ${CMAKE_BINARY_DIR}/full-stack-deployment/ DESTINATION "./")
|
|
||||||
endif (WIN32)
|
|
||||||
|
|
||||||
include(CPack)
|
|
||||||
endif ()
|
endif ()
|
|
@ -1,7 +1,7 @@
|
||||||
macro(CONSOLIDATE_STACK_COMPONENTS)
|
macro(CONSOLIDATE_STACK_COMPONENTS)
|
||||||
|
|
||||||
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE AND WIN32)
|
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE)
|
||||||
|
if (WIN32)
|
||||||
# Copy all the output for this target into the common deployment location
|
# Copy all the output for this target into the common deployment location
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${TARGET_NAME} POST_BUILD
|
TARGET ${TARGET_NAME} POST_BUILD
|
||||||
|
@ -23,5 +23,6 @@ macro(CONSOLIDATE_STACK_COMPONENTS)
|
||||||
)
|
)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
|
@ -256,7 +256,6 @@ if (WIN32)
|
||||||
# For some reason fixup misses the following DLL and only copies libeay32. There's gotta be a better way to handle this
|
# For some reason fixup misses the following DLL and only copies libeay32. There's gotta be a better way to handle this
|
||||||
# but for now resorting to the following interm solution
|
# but for now resorting to the following interm solution
|
||||||
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE)
|
if (DEFINED DEPLOY_PACKAGE AND DEPLOY_PACKAGE)
|
||||||
message(STATUS "*********** Copying SSL DLL from ${OPENSSL_DLL_PATH}/ssleay32.dll")
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${TARGET_NAME} POST_BUILD
|
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}/full-stack-deployment/
|
||||||
|
|
176
tools/nsis/release.nsi
Normal file
176
tools/nsis/release.nsi
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
!include LogicLib.nsh
|
||||||
|
!include x64.nsh
|
||||||
|
|
||||||
|
!define srcdir "E:\development\md-hifi\build\full-stack-deployment" ;$%INSTALLER_SOURCE_DIR%
|
||||||
|
!define setup "E:\development\md-hifi\build\installer-test.exe" ;$%INSTALLER_NAME%
|
||||||
|
!define scriptsdir "E:\development\md-hifi\examples" ;$%INSTALLER_SCRIPTS_DIR%
|
||||||
|
!define company "High Fidelity"
|
||||||
|
!define prodname "Interface"
|
||||||
|
!define exec "interface.exe"
|
||||||
|
!define icon "${srcdir}\interface.ico"
|
||||||
|
!define regkey "Software\${company}\${prodname}"
|
||||||
|
!define uninstkey "Software\Microsoft\Windows\CurrentVersion\Uninstall\${prodname}"
|
||||||
|
!define install_dir_company "$PROGRAMFILES64\${company}"
|
||||||
|
!define install_dir_product "${install_dir_company}\${prodname}"
|
||||||
|
!define startmenu_company "$SMPROGRAMS\${company}"
|
||||||
|
!define startmenu_product "${startmenu_company}\${prodname}"
|
||||||
|
!define uninstaller "uninstall.exe"
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
|
||||||
|
XPStyle on
|
||||||
|
ShowInstDetails hide
|
||||||
|
ShowUninstDetails hide
|
||||||
|
|
||||||
|
Name "${prodname}"
|
||||||
|
Caption "${prodname}"
|
||||||
|
|
||||||
|
!ifdef icon
|
||||||
|
Icon "${icon}"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
OutFile "${setup}"
|
||||||
|
|
||||||
|
SetDateSave on
|
||||||
|
SetDatablockOptimize on
|
||||||
|
CRCCheck on
|
||||||
|
SilentInstall normal
|
||||||
|
|
||||||
|
InstallDir "${install_dir_product}"
|
||||||
|
InstallDirRegKey HKLM "${regkey}" ""
|
||||||
|
|
||||||
|
; 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"'
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; beginning (invisible) section
|
||||||
|
Section "Registry Entries and Procotol Handler" SEC02
|
||||||
|
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
WriteRegStr HKLM "${regkey}" "Install_Dir" "$INSTDIR"
|
||||||
|
WriteRegStr HKLM "${uninstkey}" "DisplayName" "${prodname} (remove only)"
|
||||||
|
WriteRegStr HKLM "${uninstkey}" "UninstallString" '"$INSTDIR\${uninstaller}"'
|
||||||
|
WriteRegStr HKCR "${prodname}\Shell\open\command\" "" '"$INSTDIR\${exec} "%1"'
|
||||||
|
|
||||||
|
!ifdef icon
|
||||||
|
WriteRegStr HKCR "${prodname}\DefaultIcon" "" "$INSTDIR\${icon}"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
; hifi:// protocol handler registry entries
|
||||||
|
WriteRegStr HKCR 'hifi' '' 'URL:Alert Protocol'
|
||||||
|
WriteRegStr HKCR 'hifi' 'URL Protocol' ''
|
||||||
|
WriteRegStr HKCR 'hifi\DefaultIcon' '' '$INSTDIR\${icon},1'
|
||||||
|
WriteRegStr HKCR 'hifi\shell\open\command' '' '$INSTDIR\${exec} --url "%1"'
|
||||||
|
|
||||||
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
|
; package all files, recursively, preserving attributes
|
||||||
|
; assume files are in the correct places
|
||||||
|
File /r "${srcdir}\"
|
||||||
|
!ifdef icon
|
||||||
|
File /a "${icon}"
|
||||||
|
!endif
|
||||||
|
; any application-specific files
|
||||||
|
!ifdef files
|
||||||
|
!include "${files}"
|
||||||
|
!endif
|
||||||
|
SetOutPath "$DOCUMENTS\${company}\Scripts"
|
||||||
|
File /r "${scriptsdir}\"
|
||||||
|
SetOutPath $INSTDIR
|
||||||
|
WriteUninstaller "${uninstaller}"
|
||||||
|
Exec '"$INSTDIR\2013_vcredist_x64.exe" /q /norestart'
|
||||||
|
Exec '"$INSTDIR\2010_vcredist_x86.exe" /q /norestart'
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; create shortcuts
|
||||||
|
Section "Start Menu Shortcuts" SEC03
|
||||||
|
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; This should install the shortcuts for "All Users"
|
||||||
|
SetShellVarContext all
|
||||||
|
CreateDirectory "${startmenu_product}"
|
||||||
|
SetOutPath $INSTDIR ; for working directory
|
||||||
|
!ifdef icon
|
||||||
|
CreateShortCut "${startmenu_product}\${prodname}.lnk" "$INSTDIR\${exec}" "" "$INSTDIR\${icon}"
|
||||||
|
!else
|
||||||
|
CreateShortCut "${startmenu_product}\${prodname}.lnk" "$INSTDIR\${exec}"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
CreateShortCut "${startmenu_product}\Uninstall ${prodname}.lnk" "$INSTDIR\${uninstaller}"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; Uninstaller
|
||||||
|
; All section names prefixed by "Un" will be in the uninstaller
|
||||||
|
|
||||||
|
UninstallText "This will uninstall ${prodname}."
|
||||||
|
|
||||||
|
!ifdef icon
|
||||||
|
UninstallIcon "${icon}"
|
||||||
|
!endif
|
||||||
|
|
||||||
|
Section "Uninstall" SEC04
|
||||||
|
|
||||||
|
SectionIn RO
|
||||||
|
|
||||||
|
; Explicitly remove all added shortcuts
|
||||||
|
SetShellVarContext all
|
||||||
|
DELETE "${startmenu_product}\${prodname}.lnk"
|
||||||
|
DELETE "${startmenu_product}\Uninstall ${prodname}.lnk"
|
||||||
|
|
||||||
|
RMDIR "${startmenu_product}"
|
||||||
|
; This should remove the High Fidelity folder in Start Menu if it's empty
|
||||||
|
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
|
||||||
|
DeleteRegKey HKLM "${uninstkey}"
|
||||||
|
DeleteRegKey HKLM "${regkey}"
|
||||||
|
DeleteRegKey HKCR 'hifi'
|
||||||
|
SectionEnd
|
Loading…
Reference in a new issue