From 94daedaaedd3eceb8cf41a2238ee10fe6280f37c Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 28 Jan 2022 20:04:59 +0200 Subject: [PATCH] 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/ignorei --- .../installers/windows/installer_template.nsi | 32 ++++++++++++++---- indra/newview/installers/windows/lang_da.nsi | Bin 12128 -> 11992 bytes indra/newview/installers/windows/lang_de.nsi | 2 +- .../newview/installers/windows/lang_en-us.nsi | Bin 11802 -> 11666 bytes indra/newview/installers/windows/lang_es.nsi | Bin 13112 -> 12976 bytes indra/newview/installers/windows/lang_fr.nsi | Bin 13628 -> 13492 bytes indra/newview/installers/windows/lang_it.nsi | Bin 12850 -> 12714 bytes indra/newview/installers/windows/lang_ja.nsi | Bin 10016 -> 9880 bytes indra/newview/installers/windows/lang_pl.nsi | Bin 12448 -> 12312 bytes .../newview/installers/windows/lang_pt-br.nsi | Bin 13272 -> 13136 bytes indra/newview/installers/windows/lang_ru.nsi | Bin 12586 -> 12450 bytes indra/newview/installers/windows/lang_tr.nsi | Bin 12496 -> 12360 bytes indra/newview/installers/windows/lang_zh.nsi | Bin 9460 -> 9324 bytes 13 files changed, 27 insertions(+), 7 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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/indra/newview/installers/windows/lang_da.nsi b/indra/newview/installers/windows/lang_da.nsi index 0b5ae2b714d97104c4bffaadbe63425d947b32c7..648ddbfb8502e1bee254d26c8c01ce8e40d1026c 100644 GIT binary patch delta 16 YcmaD5cO!Pg0_Dj%3Qn7|RK9Tm07V%GNdN!< delta 106 zcmcZ+`yg(^0%chhh8TuC1_&9M}e4J6Z*y delta 110 zcmdmxx+85vkeaCqLkvS61B47_NM*<{9 delta 136 zcmdmzxhHD_hla8WLkvS61B47_NM*s!Ixx delta 124 zcmcbRb|Za*oO-qjLkvS61B47_NM*2>>Lxq@U;-Hx diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi index 8ca1fc3d14b0a00198dc3ce8fc473e2a3b28d56b..65a9f4846d42a2331b25181fe99750e6e7e7682c 100755 GIT binary patch delta 16 XcmZ3Lv?y_df$C%}MW@ZbR1LTRJ17Q1 delta 124 zcmZ3KxGHIbfoir2LkvS61B47_NM*$1F$Wk% diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi index db6f417fc2dc5c3dfa5f7a14827aabcaa905dc8a..e71886cc6609f89a090c31a2c5d9c6cb714dc907 100755 GIT binary patch delta 16 YcmcbRcp_m#iOS>&3Qn8tR3~u*07G8}+5i9m delta 124 zcmX?+a3OI+iAuH#LkvS61B47_NM*Dh36O delta 154 zcmaFk@x^mPmsq_DLkvS61B47_NM*