Merge topic 'cpack-nsis-multi-installs'
e6d2bcf CPack/NSIS: Fix reinstall and multiple install issues when using components.
This commit is contained in:
commit
ab24bdeecc
@ -322,7 +322,7 @@ cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
|
|||||||
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
|
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
|
||||||
"${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
|
"${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
|
||||||
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
|
cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
|
||||||
"${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
|
"${CPACK_PACKAGE_INSTALL_DIRECTORY}")
|
||||||
cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
|
cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
|
||||||
cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
|
cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ Var AR_RegFlags
|
|||||||
|
|
||||||
ClearErrors
|
ClearErrors
|
||||||
;Reading component status from registry
|
;Reading component status from registry
|
||||||
ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
|
ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
|
||||||
IfErrors "default_${SecName}"
|
IfErrors "default_${SecName}"
|
||||||
;Status will stay default if registry value not found
|
;Status will stay default if registry value not found
|
||||||
;(component was never installed)
|
;(component was never installed)
|
||||||
@ -107,13 +107,13 @@ Var AR_RegFlags
|
|||||||
;Section is not selected:
|
;Section is not selected:
|
||||||
;Calling Section uninstall macro and writing zero installed flag
|
;Calling Section uninstall macro and writing zero installed flag
|
||||||
!insertmacro "Remove_${${SecName}}"
|
!insertmacro "Remove_${${SecName}}"
|
||||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
|
||||||
"Installed" 0
|
"Installed" 0
|
||||||
Goto "exit_${SecName}"
|
Goto "exit_${SecName}"
|
||||||
|
|
||||||
"leave_${SecName}:"
|
"leave_${SecName}:"
|
||||||
;Section is selected:
|
;Section is selected:
|
||||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
|
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
|
||||||
"Installed" 1
|
"Installed" 1
|
||||||
|
|
||||||
"exit_${SecName}:"
|
"exit_${SecName}:"
|
||||||
@ -493,7 +493,7 @@ Function ConditionalAddToRegisty
|
|||||||
Pop $0
|
Pop $0
|
||||||
Pop $1
|
Pop $1
|
||||||
StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
|
StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
|
||||||
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
|
WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
|
||||||
"$1" "$0"
|
"$1" "$0"
|
||||||
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
|
;MessageBox MB_OK "Set Registry: '$1' to '$0'"
|
||||||
DetailPrint "Set install registry entry: '$1' to '$0'"
|
DetailPrint "Set install registry entry: '$1' to '$0'"
|
||||||
@ -804,17 +804,17 @@ FunctionEnd
|
|||||||
|
|
||||||
Section "Uninstall"
|
Section "Uninstall"
|
||||||
ReadRegStr $START_MENU SHCTX \
|
ReadRegStr $START_MENU SHCTX \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
|
||||||
;MessageBox MB_OK "Start menu is in: $START_MENU"
|
;MessageBox MB_OK "Start menu is in: $START_MENU"
|
||||||
ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
|
ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
|
||||||
ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
|
ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
|
||||||
ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
|
ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
|
||||||
;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
|
;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
|
||||||
ReadRegStr $INSTALL_DESKTOP SHCTX \
|
ReadRegStr $INSTALL_DESKTOP SHCTX \
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
|
||||||
;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
|
;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
|
||||||
|
|
||||||
@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
|
@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
|
||||||
@ -831,7 +831,7 @@ Section "Uninstall"
|
|||||||
|
|
||||||
;Remove the uninstaller itself.
|
;Remove the uninstaller itself.
|
||||||
Delete "$INSTDIR\Uninstall.exe"
|
Delete "$INSTDIR\Uninstall.exe"
|
||||||
DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
|
DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||||
|
|
||||||
;Remove the installation directory if it is empty.
|
;Remove the installation directory if it is empty.
|
||||||
RMDir "$INSTDIR"
|
RMDir "$INSTDIR"
|
||||||
|
@ -672,9 +672,6 @@ CreateComponentDescription(cmCPackComponent *component,
|
|||||||
}
|
}
|
||||||
componentCode += " SetOutPath \"$INSTDIR\"\n";
|
componentCode += " SetOutPath \"$INSTDIR\"\n";
|
||||||
|
|
||||||
componentCode += " IntCmp $" + component->Name
|
|
||||||
+ "_was_installed ${SF_SELECTED} noinstall_" + component->Name + "\n";
|
|
||||||
|
|
||||||
// Create the actual installation commands
|
// Create the actual installation commands
|
||||||
if (component->IsDownloaded)
|
if (component->IsDownloaded)
|
||||||
{
|
{
|
||||||
@ -825,7 +822,6 @@ CreateComponentDescription(cmCPackComponent *component,
|
|||||||
componentCode += " File /r \"${INST_DIR}\\" +
|
componentCode += " File /r \"${INST_DIR}\\" +
|
||||||
component->Name + "\\*.*\"\n";
|
component->Name + "\\*.*\"\n";
|
||||||
}
|
}
|
||||||
componentCode += " noinstall_" + component->Name + ":\n";
|
|
||||||
componentCode += "SectionEnd\n";
|
componentCode += "SectionEnd\n";
|
||||||
|
|
||||||
// Macro used to remove the component
|
// Macro used to remove the component
|
||||||
|
Loading…
x
Reference in New Issue
Block a user