From 3c3ef094bb9df21d20988d3f2c90972f110fd4e3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 13 Jan 2016 17:21:17 -0800 Subject: [PATCH] use macro to write post install options --- cmake/templates/CPackProperties.cmake.in | 2 +- cmake/templates/NSIS.template.in | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/cmake/templates/CPackProperties.cmake.in b/cmake/templates/CPackProperties.cmake.in index c4d06c64a4..6614ba72f1 100644 --- a/cmake/templates/CPackProperties.cmake.in +++ b/cmake/templates/CPackProperties.cmake.in @@ -24,5 +24,5 @@ set(REGISTRY_HKLM_INSTALL_ROOT "@REGISTRY_HKLM_INSTALL_ROOT@") set(POST_INSTALL_OPTIONS_REG_GROUP "@POST_INSTALL_OPTIONS_REG_GROUP@") set(CLIENT_DESKTOP_SHORTCUT_REG_KEY "@CLIENT_DESKTOP_SHORTCUT_REG_KEY@") set(CONSOLE_DESKTOP_SHORTCUT_REG_KEY "@CONSOLE_DESKTOP_SHORTCUT_REG_KEY@") -set(CONSOLE_STARTUP_REG_KEY "@CONSOLE_STARTUP_SHORTCUT_REG_KEY@") +set(CONSOLE_STARTUP_REG_KEY "@CONSOLE_STARTUP_REG_KEY@") set(LAUNCH_NOW_REG_KEY "@LAUNCH_NOW_REG_KEY@") diff --git a/cmake/templates/NSIS.template.in b/cmake/templates/NSIS.template.in index 4c2acaf14c..0bd2bfe717 100644 --- a/cmake/templates/NSIS.template.in +++ b/cmake/templates/NSIS.template.in @@ -850,6 +850,9 @@ Function PostInstallOptionsPage ${NSD_CreateCheckbox} 0 15u 100% 10u "&Create a desktop shortcut for @INTERFACE_SHORTCUT_NAME@" Pop $DESKTOP_CLIENT_CHECKBOX StrCpy $CURRENT_OFFSET "30u" + + ; check if we have a chosen option for this in the registry already + ${NSD_SetState} $DESKTOP_CLIENT_CHECKBOX ${BST_CHECKED} ${EndIf} @@ -881,6 +884,11 @@ Function PostInstallOptionsPage nsDialogs::Show FunctionEnd +!macro WritePostInstallOption OptionName Option + ; writes the value for the given post install option to the registry + WriteRegDWORD HKLM "@REGISTRY_HKLM_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\@POST_INSTALL_OPTIONS_REG_GROUP@" "${OptionName}" ${Option} +!macroend + Var DESKTOP_CLIENT_STATE Var DESKTOP_SERVER_STATE Var SERVER_STARTUP_STATE @@ -893,7 +901,9 @@ Function HandlePostInstallOptions ${If} $DESKTOP_CLIENT_STATE == ${BST_CHECKED} CreateShortCut "$DESKTOP\@INTERFACE_SHORTCUT_NAME@.lnk" "$INSTDIR\@INTERFACE_WIN_EXEC_NAME@" - WriteRegDWORD HKLM "@REGISTRY_HKLM_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\@POST_INSTALL_OPTIONS_REG_GROUP@" "@CLIENT_DESKTOP_SHORTCUT_REG_KEY@" 1 + !insertmacro WritePostInstallOption "@CLIENT_DESKTOP_SHORTCUT_REG_KEY@" 1 + ${Else} + !insertmacro WritePostInstallOption @CLIENT_DESKTOP_SHORTCUT_REG_KEY@ 0 ${EndIf} ${EndIf} @@ -904,7 +914,9 @@ Function HandlePostInstallOptions ${If} $DESKTOP_SERVER_STATE == ${BST_CHECKED} CreateShortCut "$DESKTOP\@CONSOLE_SHORTCUT_NAME@.lnk" "$INSTDIR\@CONSOLE_WIN_EXEC_NAME@" - WriteRegDWORD HKLM "@REGISTRY_HKLM_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\@POST_INSTALL_OPTIONS_REG_GROUP@" "@CONSOLE_DESKTOP_SHORTCUT_REG_KEY@" 1 + !insertmacro WritePostInstallOption @CONSOLE_DESKTOP_SHORTCUT_REG_KEY@ 1 + ${Else} + !insertmacro WritePostInstallOption @CONSOLE_DESKTOP_SHORTCUT_REG_KEY@ 0 ${EndIf} ; check if the user asked to have Server Console launched every startup @@ -913,7 +925,9 @@ Function HandlePostInstallOptions ${If} $SERVER_STARTUP_STATE == ${BST_CHECKED} CreateShortCut "$SMSTARTUP\@CONSOLE_SHORTCUT_NAME@.lnk" "$INSTDIR\@CONSOLE_WIN_EXEC_NAME@" - WriteRegDWORD HKLM "@REGISTRY_HKLM_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\@POST_INSTALL_OPTIONS_REG_GROUP@" "@CONSOLE_STARTUP_REG_KEY@" 1 + !insertmacro WritePostInstallOption @CONSOLE_STARTUP_REG_KEY@ 1 + ${Else} + !insertmacro WritePostInstallOption @CONSOLE_STARTUP_REG_KEY@ 0 ${EndIf} ${EndIf} @@ -921,7 +935,7 @@ Function HandlePostInstallOptions ${NSD_GetState} $LAUNCH_NOW_CHECKBOX $LAUNCH_NOW_STATE ${If} $LAUNCH_NOW_STATE == ${BST_CHECKED} - WriteRegDWORD HKLM "@REGISTRY_HKLM_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\@POST_INSTALL_OPTIONS_REG_GROUP@" "@LAUNCH_NOW_REG_KEY@" 1 + !insertmacro WritePostInstallOption @LAUNCH_NOW_REG_KEY@ 1 ; both launches use the explorer trick in case the user has elevated permissions for the installer ; it won't be possible to use this approach if either application should be launched with a command line param @@ -930,6 +944,8 @@ Function HandlePostInstallOptions ${Else} Exec '"$WINDIR\explorer.exe" "$INSTDIR\@INTERFACE_WIN_EXEC_NAME@"' ${EndIf} + ${Else} + !insertmacro WritePostInstallOption @LAUNCH_NOW_REG_KEY@ 0 ${EndIf} FunctionEnd