pidgin: 7acf31bf: Remove the stored installer language sel...
datallah at pidgin.im
datallah at pidgin.im
Thu May 1 00:01:28 EDT 2008
-----------------------------------------------------------------
Revision: 7acf31bf8bcc9389e873adfa275a590b2fa7f328
Ancestor: 8146bbab1f4f597157b36f42e0d4cc16e93a8057
Author: datallah at pidgin.im
Date: 2008-05-01T03:55:48
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/7acf31bf8bcc9389e873adfa275a590b2fa7f328
Modified files:
pidgin/win32/nsis/pidgin-installer.nsi
ChangeLog:
Remove the stored installer language selection when uninstalling.
Also, remove any URI handlers that are currently registered.
Fixes #5671.
-------------- next part --------------
============================================================
--- pidgin/win32/nsis/pidgin-installer.nsi 6a989067186c0c177ca8aa5440e90e9484ea4ffc
+++ pidgin/win32/nsis/pidgin-installer.nsi 3d6dc031c00135a623692dd93d0b28c189d22cdb
@@ -49,6 +49,7 @@ SetDateSave on
!include "WordFunc.nsh"
!insertmacro VersionCompare
!insertmacro WordFind
+!insertmacro un.WordFind
;--------------------------------
;Defines
@@ -549,23 +550,18 @@ SectionGroupEnd
;--------------------------------
;URI Handling
-SectionGroup /e $(URI_HANDLERS_SECTION_TITLE) SecURIHandlers
- Section /o "aim:" SecURI_AIM
- Push "aim"
+
+!macro URI_SECTION proto
+ Section /o "${proto}:" SecURI_${proto}
+ Push "${proto}"
Call RegisterURIHandler
SectionEnd
- Section /o "msnim:" SecURI_MSNIM
- Push "msnim"
- Call RegisterURIHandler
- SectionEnd
- Section /o "myim:" SecURI_MYIM
- Push "myim"
- Call RegisterURIHandler
- SectionEnd
- Section /o "ymsgr:" SecURI_YMSGR
- Push "ymsgr"
- Call RegisterURIHandler
- SectionEnd
+!macroend
+SectionGroup /e $(URI_HANDLERS_SECTION_TITLE) SecURIHandlers
+ !insertmacro URI_SECTION "aim"
+ !insertmacro URI_SECTION "msnim"
+ !insertmacro URI_SECTION "myim"
+ !insertmacro URI_SECTION "ymsgr"
SectionGroupEnd
;--------------------------------
@@ -694,8 +690,20 @@ Section Uninstall
; The WinPrefs plugin may have left this behind..
DeleteRegValue HKCU "${STARTUP_RUN_KEY}" "Pidgin"
DeleteRegValue HKLM "${STARTUP_RUN_KEY}" "Pidgin"
- ; Remove Language preference info (TODO: check if NSIS removes this)
+ ; Remove Language preference info
+ DeleteRegValue HKCU "${PIDGIN_REG_KEY}" "Installer Language"
+ ; Remove any URI handlers
+ ; I can't think of an easy way to maintain a list in a single place
+ Push "aim"
+ Call un.UnregisterURIHandler
+ Push "msnim"
+ Call un.UnregisterURIHandler
+ Push "myim"
+ Call un.UnregisterURIHandler
+ Push "ymsgr"
+ Call un.UnregisterURIHandler
+
Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem"
Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem"
Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem"
@@ -903,13 +911,13 @@ Function SelectURIHandlerSelections
ReadRegStr $R3 HKCR "$R2" ""
IfErrors default_on ;there is no current handler
- ; Check if Pidgin is the current handler
- ClearErrors
- ReadRegStr $R3 HKCR "$R2\shell\Open\command" ""
- IfErrors end_loop
- ${WordFind} "$R3" "pidgin.exe" "E+1{" $R3
- IfErrors end_loop default_on
+ Push $R2
+ Call CheckIfPidginIsCurrentURIHandler
+ Pop $R3
+ ; If Pidgin isn't the current handler, we don't steal it automatically
+ IntCmp $R3 0 end_loop
+
;We default the URI handler checkbox on
default_on:
IntOp $R1 $R1 | ${SF_SELECTED} ; Select
@@ -926,9 +934,58 @@ FunctionEnd ;SelectURIHandlerSections
Pop $R0
FunctionEnd ;SelectURIHandlerSections
+; Check if Pidgin is the current handler
+; Returns a boolean on the stack
+!macro CheckIfPidginIsCurrentURIHandlerMacro UN
+Function ${UN}CheckIfPidginIsCurrentURIHandler
+ Exch $R0
+ ClearErrors
+ ReadRegStr $R0 HKCR "$R0\shell\Open\command" ""
+ IfErrors 0 +3
+ IntOp $R0 0 + 0
+ Goto done
+
+ !ifdef __UNINSTALL__
+ ${un.WordFind} "$R0" "pidgin.exe" "E+1{" $R0
+ !else
+ ${WordFind} "$R0" "pidgin.exe" "E+1{" $R0
+ !endif
+ IntOp $R0 0 + 1
+ IfErrors 0 +2
+ IntOp $R0 0 + 0
+
+ done:
+ Exch $R0
+FunctionEnd
+!macroend
+!insertmacro CheckIfPidginIsCurrentURIHandlerMacro ""
+!insertmacro CheckIfPidginIsCurrentURIHandlerMacro "un."
+
+; If Pidgin is the current URI handler for the specified protocol, remove it.
+Function un.UnregisterURIHandler
+ Exch $R0
+ Push $R1
+
+ Push $R0
+ Call un.CheckIfPidginIsCurrentURIHandler
+ Pop $R1
+
+ ; If Pidgin isn't the current handler, leave it as-is
+ IntCmp $R1 0 done
+
+ ;Unregister the URI handler
+ DetailPrint "Unregistering $R0 URI Handler"
+ DeleteRegKey HKCR "$R0"
+
+ done:
+ Pop $R1
+ Pop $R0
+FunctionEnd
+
Function RegisterURIHandler
Exch $R0
+ DetailPrint "Registering $R0 URI Handler"
DeleteRegKey HKCR "$R0"
WriteRegStr HKCR "$R0" "" "URL:$R0"
WriteRegStr HKCR "$R0" "URL Protocol" ""
@@ -1198,12 +1255,14 @@ Function .onInit
StrCpy $SPELLCHECK_SEL ""
;Try to copy the old Gaim installer Lang Reg. key
+ ;(remove it after we're done to prevent this being done more than once)
ClearErrors
ReadRegStr $R0 HKCU "${PIDGIN_REG_KEY}" "Installer Language"
IfErrors 0 +5
ClearErrors
- ReadRegStr $R0 HKCU "SOFTWARE\gaim" "Installer Language"
- IfErrors +2
+ ReadRegStr $R0 HKCU "${OLD_GAIM_REG_KEY}" "Installer Language"
+ IfErrors +3
+ DeleteRegValue HKCU "${OLD_GAIM_REG_KEY}" "Installer Language"
WriteRegStr HKCU "${PIDGIN_REG_KEY}" "Installer Language" "$R0"
!insertmacro SetSectionFlag ${SecSpellCheck} ${SF_RO}
@@ -1321,6 +1380,7 @@ Function un.onInit
Function un.onInit
Call un.RunCheck
StrCpy $name "Pidgin ${PIDGIN_VERSION}"
+;LogSet on
; Get stored language preference
!insertmacro MUI_UNGETLANGUAGE
More information about the Commits
mailing list