]> git.sesse.net Git - vlc/commitdiff
nsis: kill VLC before copying/updating any file
authorLudovic Fauvet <etix@videolan.org>
Thu, 28 Nov 2013 12:45:31 +0000 (13:45 +0100)
committerLudovic Fauvet <etix@videolan.org>
Fri, 29 Nov 2013 12:26:17 +0000 (13:26 +0100)
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.

extras/package/win32/NSIS/helpers/utils.nsh
extras/package/win32/NSIS/languages/declaration.nsh
extras/package/win32/NSIS/languages/english.nsh
extras/package/win32/NSIS/vlc.win32.nsi.in

index b19b03e0c9bcb222df10eafcfa73077573cca933..4a6c77356f6f192e3ed2e88e09d6fefcea0e2c71 100644 (file)
@@ -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
index 947102733b932af0e775049ba6f92f3dc164ccc7..ef5fbc2d65f7b391aeb0b793537a1afd29cb4459 100644 (file)
@@ -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
index 6b399add3b5500c1c719bd27f1bf21039402469b..f42b1ddfb4a2cd2018ebbf801c4d661c47c37d90 100644 (file)
@@ -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."
index a5f232b20d7ab542d02505b90283d8413f8c968b..33f162ee4e07bd15dcf3cb8752895d965d82347b 100644 (file)
@@ -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