summaryrefslogtreecommitdiff
path: root/indra/newview/installers/windows/installer_template.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/installers/windows/installer_template.nsi')
-rw-r--r--indra/newview/installers/windows/installer_template.nsi32
1 files changed, 26 insertions, 6 deletions
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index 668a8025bd..7513908cb4 100644
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;