summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2022-01-28 20:04:59 +0200
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2022-01-31 16:59:35 +0200
commit94daedaaedd3eceb8cf41a2238ee10fe6280f37c (patch)
treeb7c3abc3ce3f5a5a9eecc9ce955c3c404da79723
parentfff0dd3f1db4112ee79f5bd25711198d8db7eb72 (diff)
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
-rw-r--r--indra/newview/installers/windows/installer_template.nsi32
-rw-r--r--indra/newview/installers/windows/lang_da.nsibin12128 -> 11992 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_de.nsi2
-rw-r--r--indra/newview/installers/windows/lang_en-us.nsibin11802 -> 11666 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_es.nsibin13112 -> 12976 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_fr.nsibin13628 -> 13492 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_it.nsibin12850 -> 12714 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_ja.nsibin10016 -> 9880 bytes
-rw-r--r--indra/newview/installers/windows/lang_pl.nsibin12448 -> 12312 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_pt-br.nsibin13272 -> 13136 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_ru.nsibin12586 -> 12450 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_tr.nsibin12496 -> 12360 bytes
-rwxr-xr-xindra/newview/installers/windows/lang_zh.nsibin9460 -> 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 0b5ae2b714..648ddbfb85 100644
--- a/indra/newview/installers/windows/lang_da.nsi
+++ b/indra/newview/installers/windows/lang_da.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi
index e67bc9e22c..188c30197a 100755
--- a/indra/newview/installers/windows/lang_de.nsi
+++ b/indra/newview/installers/windows/lang_de.nsi
@@ -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 ..."
diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi
index f75ecfaf08..0639d51e10 100644
--- a/indra/newview/installers/windows/lang_en-us.nsi
+++ b/indra/newview/installers/windows/lang_en-us.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi
index 2b9fa61199..ee30651a38 100755
--- a/indra/newview/installers/windows/lang_es.nsi
+++ b/indra/newview/installers/windows/lang_es.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi
index 4e256a3af9..7cd90ec314 100755
--- a/indra/newview/installers/windows/lang_fr.nsi
+++ b/indra/newview/installers/windows/lang_fr.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi
index bf4f51e326..194062da9a 100755
--- a/indra/newview/installers/windows/lang_it.nsi
+++ b/indra/newview/installers/windows/lang_it.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi
index 02d9ae2b40..a54005ba14 100755
--- a/indra/newview/installers/windows/lang_ja.nsi
+++ b/indra/newview/installers/windows/lang_ja.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_pl.nsi b/indra/newview/installers/windows/lang_pl.nsi
index 4c254b4b2c..355d806866 100644
--- a/indra/newview/installers/windows/lang_pl.nsi
+++ b/indra/newview/installers/windows/lang_pl.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi
index 1e9e0b07d2..97f5d2b44a 100755
--- a/indra/newview/installers/windows/lang_pt-br.nsi
+++ b/indra/newview/installers/windows/lang_pt-br.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
index 8ca1fc3d14..65a9f4846d 100755
--- a/indra/newview/installers/windows/lang_ru.nsi
+++ b/indra/newview/installers/windows/lang_ru.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
index db6f417fc2..e71886cc66 100755
--- a/indra/newview/installers/windows/lang_tr.nsi
+++ b/indra/newview/installers/windows/lang_tr.nsi
Binary files differ
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
index fad714e83b..f5f0c6cbdf 100755
--- a/indra/newview/installers/windows/lang_zh.nsi
+++ b/indra/newview/installers/windows/lang_zh.nsi
Binary files differ