[vlc-commits] nsis: kill VLC before copying/updating any file
Ludovic Fauvet
git at videolan.org
Fri Nov 29 13:28:44 CET 2013
vlc | branch: master | Ludovic Fauvet <etix at videolan.org> | Thu Nov 28 13:45:31 2013 +0100| [749052257462aa239a75c0965c0fb2ed5ac994c0] | committer: Ludovic Fauvet
nsis: kill VLC before copying/updating any file
During silent installations (/S) the installer will automatically kill
(without warning) any running instance of VLC before copying files.
Silent updates should now work using the flags /S /update.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=749052257462aa239a75c0965c0fb2ed5ac994c0
---
extras/package/win32/NSIS/helpers/utils.nsh | 29 +++++++++++++++++++-
.../package/win32/NSIS/languages/declaration.nsh | 5 ++++
extras/package/win32/NSIS/languages/english.nsh | 5 ++++
extras/package/win32/NSIS/vlc.win32.nsi.in | 4 +++
4 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/extras/package/win32/NSIS/helpers/utils.nsh b/extras/package/win32/NSIS/helpers/utils.nsh
index b19b03e..4a6c773 100644
--- a/extras/package/win32/NSIS/helpers/utils.nsh
+++ b/extras/package/win32/NSIS/helpers/utils.nsh
@@ -239,4 +239,31 @@ Function un.RemoveEmptyDirs
"${Index}-End:"
FindClose $0
!undef Index
-FunctionEnd
\ No newline at end of file
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Check if VLC is running and kill it if necessary ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+Function CheckRunningProcesses
+ ${nsProcess::FindProcess} "vlc.exe" $R0
+ StrCmp $R0 0 0 end
+ IfSilent +3
+ BringToFront
+ MessageBox MB_OKCANCEL|MB_ICONQUESTION $MessageBox_VLCRunning IDCANCEL stop
+
+ ${nsProcess::CloseProcess} "vlc.exe" $R0
+ IfSilent end
+ StrCmp $R0 0 end 0 ; Success
+ StrCmp $R0 603 end 0 ; Not running
+ MessageBox MB_OK|MB_ICONEXCLAMATION $MessageBox_VLCUnableToClose
+ goto end
+
+ stop:
+ ${nsProcess::Unload}
+ MessageBox MB_OK|MB_ICONEXCLAMATION $MessageBox_InstallAborted
+ Quit
+
+ end:
+ ${nsProcess::Unload}
+FunctionEnd
diff --git a/extras/package/win32/NSIS/languages/declaration.nsh b/extras/package/win32/NSIS/languages/declaration.nsh
index 9471027..ef5fbc2 100644
--- a/extras/package/win32/NSIS/languages/declaration.nsh
+++ b/extras/package/win32/NSIS/languages/declaration.nsh
@@ -47,6 +47,11 @@ Var Action_OnArrivalDVDAudio
Var License_NextText
+Var Detail_CheckProcesses
+Var MessageBox_VLCRunning
+Var MessageBox_VLCUnableToClose
+Var MessageBox_InstallAborted
+
Var Reinstall_Headline
Var Reinstall_HeadlineInstall
Var Reinstall_HeadlineMaintenance
diff --git a/extras/package/win32/NSIS/languages/english.nsh b/extras/package/win32/NSIS/languages/english.nsh
index 6b399ad..f42b1dd 100644
--- a/extras/package/win32/NSIS/languages/english.nsh
+++ b/extras/package/win32/NSIS/languages/english.nsh
@@ -59,6 +59,11 @@ StrCpy $Action_OnArrivalDVDAudio "Play audio DVD"
StrCpy $License_NextText "You are now aware of your rights. Click Next to continue."
+StrCpy $Detail_CheckProcesses "Checking processes..."
+StrCpy $MessageBox_VLCRunning "VLC appears to be running and will now be closed."
+StrCpy $MessageBox_VLCUnableToClose "This installer was unable to close VLC, please do it manually."
+StrCpy $MessageBox_InstallAborted "Installation aborted!"
+
StrCpy $Reinstall_Headline "Already Installed"
StrCpy $Reinstall_HeadlineInstall "Choose how you want to install VLC."
StrCpy $Reinstall_HeadlineMaintenance "Choose the maintenance option to perform."
diff --git a/extras/package/win32/NSIS/vlc.win32.nsi.in b/extras/package/win32/NSIS/vlc.win32.nsi.in
index a5f232b..33f162e 100644
--- a/extras/package/win32/NSIS/vlc.win32.nsi.in
+++ b/extras/package/win32/NSIS/vlc.win32.nsi.in
@@ -60,6 +60,7 @@ RequestExecutionLevel user
!addincludedir NSIS
!addplugindir NSIS
!include UAC.nsh
+!include nsProcess.nsh
!include WinVer.nsh
!include FileFunc.nsh
!include MUI2.nsh
@@ -167,6 +168,9 @@ ${MementoSection} $Name_Section01 SEC01
SetShellVarContext all
SetOutPath "$INSTDIR"
+ DetailPrint $Detail_CheckProcesses
+ Call CheckRunningProcesses
+
!insertmacro OpenUninstallLog
; VLC.exe, libvlc.dll
More information about the vlc-commits
mailing list