SL-16681 Better handling of locked files by NSIS Installer
1. When SL window closes it doesn't mean that process died so gave it a bit more time to terminate 2. Added a retry logic in case first run happened too early for some reason 3. Replaced ok/cancel on locked file with abort/retry/ignoreimaster
parent
fff0dd3f1d
commit
94daedaaed
|
|
@ -561,10 +561,17 @@ Function CloseSecondLife
|
|||
|
||||
LOOP:
|
||||
FindWindow $0 "Second Life" ""
|
||||
IntCmp $0 0 DONE
|
||||
IntCmp $0 0 SLEEP
|
||||
Sleep 500
|
||||
Goto LOOP
|
||||
|
||||
|
||||
SLEEP:
|
||||
# Second life window just closed, but program might not be fully done yet
|
||||
# and OS might have not released some locks, wait a bit more to make sure
|
||||
# all file handles were released.
|
||||
# If something still isn't unlocked, it will trigger a notification from
|
||||
# RemoveProgFilesOnInst
|
||||
Sleep 1000
|
||||
DONE:
|
||||
Pop $0
|
||||
Return
|
||||
|
|
@ -611,6 +618,12 @@ Function RemoveProgFilesOnInst
|
|||
# RMDir /r $INSTDIR is especially unsafe if user installed somewhere
|
||||
# like Program Files
|
||||
|
||||
# Set retry counter. All integers are strings.
|
||||
Push $0
|
||||
StrCpy $0 0
|
||||
|
||||
PREINSTALLREMOVE:
|
||||
|
||||
# Remove old SecondLife.exe to invalidate any old shortcuts to it that may be in non-standard locations. See MAINT-3575
|
||||
Delete "$INSTDIR\$INSTEXE"
|
||||
Delete "$INSTDIR\$VIEWER_EXE"
|
||||
|
|
@ -627,19 +640,26 @@ RMDir /r "$INSTDIR\vmp_icons"
|
|||
# find modules from different versions
|
||||
RMDir /r "$INSTDIR\llplugin"
|
||||
|
||||
IfErrors 0 PREINSTALLCLEAN
|
||||
StrCmp $SKIP_DIALOGS "true" PREINSTALLCLEAN
|
||||
MessageBox MB_OKCANCEL $(CloseSecondLifeInstRM) IDOK PREINSTALLCLEAN IDCANCEL PREINSTALLFAIL
|
||||
IntOp $0 $0 + 1
|
||||
|
||||
IfErrors 0 PREINSTALLDONE
|
||||
IntCmp $0 1 PREINSTALLREMOVE #try again once
|
||||
StrCmp $SKIP_DIALOGS "true" PREINSTALLDONE
|
||||
MessageBox MB_ABORTRETRYIGNORE $(CloseSecondLifeInstRM) IDABORT PREINSTALLFAIL IDRETRY PREINSTALLREMOVE
|
||||
# MB_ABORTRETRYIGNORE does not accept IDIGNORE
|
||||
Goto PREINSTALLDONE
|
||||
|
||||
PREINSTALLFAIL:
|
||||
Quit
|
||||
|
||||
PREINSTALLCLEAN:
|
||||
PREINSTALLDONE:
|
||||
|
||||
# We are no longer including release notes with the viewer, so remove them.
|
||||
Delete "$SMPROGRAMS\$INSTSHORTCUT\SL Release Notes.lnk"
|
||||
Delete "$INSTDIR\releasenotes.txt"
|
||||
|
||||
Pop $0
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -64,7 +64,7 @@ LangString MissingSSE2 ${LANG_GERMAN} "Dieses Gerät verfügt möglicherweise ni
|
|||
; closesecondlife function (install)
|
||||
LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
|
||||
LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
|
||||
LangString CloseSecondLifeInstRM ${LANG_GERMAN} "Second Life failed to remove some files from a previous install.$\n$\nSelect OK to continue.$\nSelect CANCEL to cancel installation."
|
||||
LangString CloseSecondLifeInstRM ${LANG_GERMAN} "Second Life failed to remove some files from a previous install."
|
||||
|
||||
; closesecondlife function (uninstall)
|
||||
LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..."
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue