[Pkg-owncloud-commits] [owncloud-client] 361/498: NSIS: Fix NSIS error handling
Sandro Knauß
hefee-guest at moszumanska.debian.org
Tue Aug 11 14:49:06 UTC 2015
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit b9edc6498279a4d4773fd2e84e604cdac8dd5854
Author: Daniel Molkentin <danimo at owncloud.com>
Date: Fri Jun 5 08:43:16 2015 +0200
NSIS: Fix NSIS error handling
---
admin/win/nsi/l10n/English.nsh | 1 +
admin/win/nsi/l10n/declarations.nsh | 1 +
admin/win/nsi/l10n/pofiles/messages.pot | 4 ++
cmake/modules/NSIS.template.in | 78 +++++++++++++++++----------------
4 files changed, 46 insertions(+), 38 deletions(-)
diff --git a/admin/win/nsi/l10n/English.nsh b/admin/win/nsi/l10n/English.nsh
index 5f7b613..e0140e6 100644
--- a/admin/win/nsi/l10n/English.nsh
+++ b/admin/win/nsi/l10n/English.nsh
@@ -37,5 +37,6 @@ StrCpy $UAC_ERROR_ELEVATE "Unable to elevate, error:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "This installer requires admin access, try again"
StrCpy $INIT_INSTALLER_RUNNING "The installer is already running."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "This uninstaller requires admin access, try again"
+StrCpy $UAC_ERROR_LOGON_SERVICE "Logon service is not running, aborting!"
StrCpy $INIT_UNINSTALLER_RUNNING "The uninstaller is already running."
StrCpy $SectionGroup_Shortcuts "Shortcuts"
diff --git a/admin/win/nsi/l10n/declarations.nsh b/admin/win/nsi/l10n/declarations.nsh
index 8709a6c..042f3c8 100644
--- a/admin/win/nsi/l10n/declarations.nsh
+++ b/admin/win/nsi/l10n/declarations.nsh
@@ -37,5 +37,6 @@ Var UAC_ERROR_ELEVATE
Var UAC_INSTALLER_REQUIRE_ADMIN
Var INIT_INSTALLER_RUNNING
Var UAC_UNINSTALLER_REQUIRE_ADMIN
+Var UAC_ERROR_LOGON_SERVICE
Var INIT_UNINSTALLER_RUNNING
Var SectionGroup_Shortcuts
diff --git a/admin/win/nsi/l10n/pofiles/messages.pot b/admin/win/nsi/l10n/pofiles/messages.pot
index 1e6d24d..0d9a722 100644
--- a/admin/win/nsi/l10n/pofiles/messages.pot
+++ b/admin/win/nsi/l10n/pofiles/messages.pot
@@ -180,6 +180,10 @@ msgstr "The installer is already running."
msgid "This uninstaller requires admin access, try again"
msgstr "This uninstaller requires admin access, try again"
+#. UAC_ERROR_LOGON_SERVICE
+msgid "Logon service is not running, aborting!"
+msgstr "Logon service is not running, aborting!"
+
#. INIT_UNINSTALLER_RUNNING
msgid "The uninstaller is already running."
msgstr "The uninstaller is already running."
diff --git a/cmake/modules/NSIS.template.in b/cmake/modules/NSIS.template.in
index 260f6d6..9da9662 100644
--- a/cmake/modules/NSIS.template.in
+++ b/cmake/modules/NSIS.template.in
@@ -719,25 +719,26 @@ Function .onInit
${MementoSectionRestore}
- 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
+ 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}
;Prevent multiple instances.
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Installer") i .r1 ?e'
@@ -782,25 +783,26 @@ FunctionEnd
Function un.onInit
Call un.SetLang
- 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
+ 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}
;Prevent multiple instances.
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${APPLICATION_SHORTNAME}Uninstaller") i .r1 ?e'
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list