diff options
author | Daniel Molkentin <danimo@owncloud.com> | 2015-06-05 10:15:14 +0300 |
---|---|---|
committer | Daniel Molkentin <danimo@owncloud.com> | 2015-06-05 10:15:14 +0300 |
commit | eb6d29a2231f5b86684d1a9988f656bcb0758c34 (patch) | |
tree | 064eb00e0285f5540af5fb4ef30875eb9d84d1f2 /cmake/modules/NSIS.template.in | |
parent | 3df26ef189e97201bd0ccf955cce7b5bfb97f592 (diff) |
Revert "NSIS: Fix NSIS error handling"
This reverts commit 3df26ef189e97201bd0ccf955cce7b5bfb97f592.
Diffstat (limited to 'cmake/modules/NSIS.template.in')
-rw-r--r-- | cmake/modules/NSIS.template.in | 78 |
1 files changed, 38 insertions, 40 deletions
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in index ae86cdb92..ec8fa1d2a 100644 --- a/cmake/modules/NSIS.template.in +++ b/cmake/modules/NSIS.template.in @@ -756,26 +756,25 @@ Function .onInit ${MementoSectionRestore} - UAC_TryAgain: - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on - ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user - MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0 - ${EndIf} - ;fall-through and die - ${Case} 1223 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_INSTALLER_REQUIRE_ADMIN - Quit - ${Case} 1062 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE - Quit - ${Default} - MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" - Abort - Quit - ${EndSwitch} + UAC_Elevate: + !insertmacro UAC_RunElevated + StrCmp 1223 $0 UAC_ElevationAborted ; UAC dialog aborted by user? + StrCmp 0 $0 0 UAC_Err ; Error? + StrCmp 1 $1 0 UAC_Success ;Are we the real deal or just the wrapper? + Quit + + UAC_Err: + MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" + Abort + + UAC_ElevationAborted: + Abort + + UAC_Success: + StrCmp 1 $3 +4 ;Admin? + StrCmp 3 $1 0 UAC_ElevationAborted ;Try again? + MessageBox MB_ICONSTOP $UAC_INSTALLER_REQUIRE_ADMIN + goto UAC_Elevate ;Prevent multiple instances. System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Installer") i .r1 ?e' @@ -820,26 +819,25 @@ FunctionEnd Function un.onInit Call un.SetLang - UAC_TryAgain: - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on - ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user - MessageBox mb_YesNo|mb_ICONEXCLAMATION|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN /SD IDNO IDYES UAC_TryAgain IDNO 0 - ${EndIf} - ;fall-through and die - ${Case} 1223 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_UNINSTALLER_REQUIRE_ADMIN - Quit - ${Case} 1062 - MessageBox MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND $UAC_ERROR_LOGON_SERVICE - Quit - ${Default} - MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" - Abort - Quit - ${EndSwitch} + UAC_Elevate: + !insertmacro UAC_RunElevated + StrCmp 1223 $0 UAC_ElevationAborted ; UAC dialog aborted by user? + StrCmp 0 $0 0 UAC_Err ; Error? + StrCmp 1 $1 0 UAC_Success ;Are we the real deal or just the wrapper? + Quit + + UAC_Err: + MessageBox MB_ICONSTOP "$UAC_ERROR_ELEVATE $0" + Abort + + UAC_ElevationAborted: + Abort + + UAC_Success: + StrCmp 1 $3 +4 ;Admin? + StrCmp 3 $1 0 UAC_ElevationAborted ;Try again? + MessageBox MB_ICONSTOP $UAC_UNINSTALLER_REQUIRE_ADMIN + goto UAC_Elevate ;Prevent multiple instances. System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Uninstaller") i .r1 ?e' |