changeset 1248:9f5893faa60b

(issue143) Only show warning when multiple users exist. This enumerates the ProfileList registry key and looks for SID's starting with S-1-5-21- (like the certificate installer does) and count the users. Only when more then one users are found the warning is shown. Otherwise the nss-installer will be removed.
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 25 Sep 2014 12:04:54 +0200
parents d4b24df4eed1
children 014586ef8a84
files packaging/trustbridge.nsi
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/packaging/trustbridge.nsi	Thu Sep 25 12:03:18 2014 +0200
+++ b/packaging/trustbridge.nsi	Thu Sep 25 12:04:54 2014 +0200
@@ -270,6 +270,9 @@
 SectionEnd
 
 !ifdef WRITE_UNINSTALLER
+
+!include "StrFunc.nsh"
+
 Section "Uninstall"
   StrCmp "$douninstcertificates" "TRUE" 0 skip_certs
   ExpandEnvStrings $0 %LOCALAPPDATA%
@@ -281,10 +284,25 @@
   ExpandEnvStrings $0 %APPDATA%
   Delete "$0\BSI\TrustBridge.ini"
   RmDir "$0\BSI"
+  var /GLOBAL user_count
+  StrCpy $user_count 0
 
   UserInfo::GetAccountType
   pop $0
   ${If} $0 == "admin"
+    ${Do}
+      ; Loop over profile keys
+      EnumRegKey $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $R0
+      ${If} $R1 != ""
+        ${UnStrStr} $R2 $R1 "S-1-5-21-" ;Search for S-1-5-21-
+        ${If} $R2 != ""
+          IntOp $user_count $user_count + 1
+        ${EndIf}
+        IntOp $R0 $R0 + 1
+      ${EndIf}
+    ${LoopUntil} $R1 == ""
+
+    ${if} $user_count > 1
       MessageBox MB_ICONINFORMATION|MB_YESNO "\
       Zertifikate, die für andere Nutzer im Zertifikatsspeicher von Firefox und Thunderbird installiert wurden, können erst beim der nächsten \
       Anmeldung dieser Nutzer deinstalliert werden. \
@@ -294,6 +312,9 @@
       Sie bitte 'Nein' und löschen Sie 'trustbridge-nss-installer.exe' manuell nachdem die anderen Nutzer sich einmal angemeldet hatten.$\r$\n \
       $\r$\n\
       Soll '$INSTDIR\trustbridge-nss-installer.exe' jetzt entfernt werden?" /SD IDYES IDYES deleteNSSInstaller IDNO dontDeleteNSS
+    ${Else}
+      goto deleteNSSInstaller
+    ${Endif}
   ${Else}
     Delete "$INSTDIR\trustbridge-nss-installer.exe"
   ${EndIf}

http://wald.intevation.org/projects/trustbridge/