Logiciel : VLC Media Player
Développeur : Equipe du projet VideoLAN
Type de licence : Libre : GNU GPL
Compatible XP : Oui
Compatible Win7 : Oui
Existe aussi sous Linux : Oui
Version : 2.2.4
Méthode avancée pour VLC
Voici le problème :
* l'installeur de VLC n'est pas totalement automatique. S'il détecte une version antérieure il demande s'il faut la désinstaller (question sous forme de popup qui fera donc attendre WPKG indéfiniment)
* le désinstalleur quitte immédiatement après avoir crée un processus fils. La désinstallation peut donc encore être en cours alors que le processus uninstall.exe a déjà quitté. Si l'installeur est exécuté à ce moment là il détectera encore la version précédente et posera la question => blocage WPKG
Logiciel disponible aussi sous Gnu/Linux
Créer un fichier unattended.cmd et y coller cela :
Code : Tout sélectionner
@echo off
set BINARY=vlc-2.2.4-win32.exe
set INSTALLER_LOC=%~dp0
set EXIT_CODE=0
set PROG_FILES=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set PROG_FILES=%ProgramFiles(x86)%
call "%INSTALLER_LOC%unattended-uninstall.cmd"
start /wait "VLC" "%INSTALLER_LOC%%BINARY%" /S /NCRC /D="%PROG_FILES%"
set EXIT_CODE=%ERRORLEVEL%
exit /B %EXIT_CODE%
Créer un fichier unattended-uninstall.cmd et y coller ceci :
Code : Tout sélectionner
@echo off
set PROG_FILES=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set PROG_FILES=%ProgramFiles(x86)%
set INSTALLER_LOC=%~dp0
set VLANDIR=%PROG_FILES%\VideoLAN
set UNINSTALLER=%VLANDIR%\VLC\uninstall.exe
set OPTIONS=/S
if not exist "%UNINSTALLER%" goto good_end
start /wait "VLC uninstall" "%UNINSTALLER%" %OPTIONS%
REM Unfortunately the uninstaller seems to fork a child process and the parent
REM process exits immediately. So give it some time to uninstall
for /L %%C IN (1,1,30) DO (
if not exist "%UNINSTALLER%" goto good_end
ping -n 2 127.0.0.1 > NUL
)
:bad_end
exit /B 1
:good_end
if exist "%VLANDIR%" rmdir /s /q "%VLANDIR%"
exit /B 0
Créer enfin le package XML :
Code : Tout sélectionner
<package
id="Vlc"
name="VideoLAN Client : lecteur Multimedia"
revision="%version%"
priority="50"
reboot="false">
<!-- pour un upgrade, modifier ci-dessous et aussi dans le fichier unattended.cmd la ligne Set Binary -->
<variable name="version" value="2.2.4" />
<variable name="PROGRAMFILES" value="%PROGRAMFILES%" architecture="x86"/>
<variable name="PROGRAMFILES" value="%PROGRAMFILES(X86)%" architecture="x64"/>
<variable name="ComSpec" value="%SystemRoot%\System32\cmd.exe" architecture="x86"/>
<variable name="ComSpec" value="%SystemRoot%\SysWOW64\cmd.exe" architecture="x64"/>
<variable name="BDR" value="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" architecture="x86"/>
<variable name="BDR" value="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" architecture="x64"/>
<eoledl dl="http://get.videolan.org/vlc/%version%/win32/vlc-%version%-win32.exe" destname="vlc\vlc-%version%-win32.exe" />
<check type="registry" condition="equals" path="%BDR%\VLC media player\DisplayVersion" value="%version%" />
<install cmd='%SOFTWARE%\vlc\unattended.cmd'/>
<upgrade cmd='%SOFTWARE%\vlc\unattended.cmd'/>
<downgrade cmd='%SOFTWARE%\vlc\unattended.cmd'/>
<remove cmd='%SOFTWARE%\vlc\unattended-uninstall.cmd'/>
</package>
Les 2 fichiers .cmd doivent être avec le binaire VLC (.exe) dans le dossier software et le package (vlc.xml) dans le dossier packages.
Si vous avez téléchargé manuellement VLC, il faut vérifier les droits de lecture-exécution pour les utilisateurs sur l'exécutable VLC.
[/center]