Vorbereitung

In diesem Text wird gezeigt, wie man einfach eine deploy.xml manuell erstellen kann. Als Beispiel nehmen wir den VLC Player.

Hier wird auch dargestellt, warum man Produkte paketieren sollte, hier sind die Anpassungen zu der originalen Installation des Herstellers, welche in unserem Paket gemacht werden.

 

Die obenstehenden Anpassungen werden untenstehend erklärt.

Laden sie die neuste Version von Deliveries_Setup.exe von Github herunter: https://github.com/cluebiz/Deliveries.SetupExe.Client

 

Schritt 1: Template mit einfacher Installation

Dazu starten wir mit einem minimal ausgefüllten Template, dieses kann z.B. in Notepad++ kopiert werden:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="deploy.xsl"?>
<deploy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="deploy.xsd">  
    <metadata>    
        <productname>VLC Media Player</productname>    
        <productversion>3</productversion>    
        <productcode>VLC media player</productcode>    
        <manufacturer>Videolan</manufacturer>    
        <packager>shop</packager>    
        <creationdate>2023-11-01</creationdate>    
        <type>silent</type>    
        <releaseversion>3.0.20.0</releaseversion>    
        <languages>IT;FR;DE;EN;ES</languages>    
        <architecture>x64</architecture>    
        <maininstallfolderx86>%ProgramFiles%\VideoLAN\VLC</maininstallfolderx86>    
        <maininstallfolderx64>%ProgramFiles%\VideoLAN\VLC</maininstallfolderx64>    
        <maininstallexe>vlc.exe</maininstallexe>  
    </metadata>  
    <install>    
        <tasks>         
            <execute path="vlc-3.0.20-win64.exe" windowstyle="hidden">        
                <parameters>          
                    <parameter>/S /NCRC --no-qt-privacy-ask --no-qt-updates-notif</parameter>        
                </parameters>      
            </execute>
        </tasks>  
    </install>  
    <uninstall>    
        <tasks>      
           <continue exitcode="0" />    
        </tasks>  
    </uninstall>  
    <repair>    
        <tasks>      
            <continue exitcode="0" />    
        </tasks>  
    </repair>  
</deploy>


 

In diesem Beispielt sind folgende Abschnitte wichtig:

Metadata

Enthält Informationen über die Software, der wichtigste Parameter ist der productcode, weil dieser später für die Detection Rules benutzt wird. Die meisten dieser Werte können übrigens nicht leer sein, das sonst das XML nicht mehr valid ist.

Install

Hier wird die Installations-Routine aufgerufen. Die Parameter kann man durch eine Web-Suche finden: https://wiki.videolan.org/Documentation:Installing_VLC/#:~:text=If%20you%20want%20to%20perform,%2FL%3D1033%20%2FS.

Um diesen ersten Entwurf zu testen, kann man die Datei "deliveries_setup.exe" mit erhöhten Rechten ausführen. Eine Log-Datei wird unter c:\windows\debug\deliveries_setupexe_tasks erstellt.

 

Schritt 2: Bestehende Prozesse beenden

    <install>    
        <tasks>         
            <killprocessbypath path="%ProgramFiles%\VideoLAN\VLC" />        
            <execute path="vlc-3.0.20-win64.exe" windowstyle="hidden">        
                <parameters>          
                    <parameter>/S /NCRC --no-qt-privacy-ask --no-qt-updates-notif</parameter>        
                </parameters>      
            </execute>
        </tasks>  
    </install>  

 

Falls der alte VLC Player während der Installation bereits läuft, wird er nun mittels "killprocessbypath" beendet.

 

Schritt 3: Verknüpfungen auswechseln

    <install>    
        <tasks>         
            <killprocessbypath path="%ProgramFiles%\VideoLAN\VLC" />        
            <execute path="vlc-3.0.20-win64.exe" windowstyle="hidden">        
                <parameters>          
                    <parameter>/S /NCRC --no-qt-privacy-ask --no-qt-updates-notif</parameter>        
                </parameters>      
            </execute>
            <removefolder path="%ProgramData%\Microsoft\Windows\Start Menu\Programs\VideoLan" />   
            <removefile path="%Public%\Desktop\VLC Media Player.lnk" />      
            <addshortcut path="%ProgramData%\Microsoft\Windows\Start Menu\Programs\VLC Media Player.lnk" 
destination="%ProgramFiles%\VideoLAN\VLC\vlc.exe" arguments="--no-qt-privacy-ask --no-qt-updates-notif" />   
        </tasks>    
    </install>  

 

Für den VLC Player gibt es überflüssige Verknüpfungen, welche nicht für eine Unternehmung geeignet sind. Deshalb wird das komplette Verzeichnis im Startmenu erst gelöscht und danach als einzelne Verknüpfung neu erstellt. Die Verknüpfung auf dem Desktop wird entfernt.

 

Schritt 4: Konfigurationsdatei vorbereiten

    <install>    
        <tasks>         
            <killprocessbypath path="%ProgramFiles%\VideoLAN\VLC" />        
            <execute path="vlc-3.0.20-win64.exe" windowstyle="hidden">        
                <parameters>          
                    <parameter>/S /NCRC --no-qt-privacy-ask --no-qt-updates-notif</parameter>        
                </parameters>      
            </execute>
            <removefolder path="%ProgramData%\Microsoft\Windows\Start Menu\Programs\VideoLan" />   
            <removefile path="%Public%\Desktop\VLC Media Player.lnk" />      
            <addshortcut path="%ProgramData%\Microsoft\Windows\Start Menu\Programs\VLC Media Player.lnk" 
destination="%ProgramFiles%\VideoLAN\VLC\vlc.exe" arguments="--no-qt-privacy-ask --no-qt-updates-notif" />   
            <copyfile source="vlcrc" destination="%ProgramFiles%\VideoLAN\VLC\vlcrc" overwrite="true" />               
        </tasks>    
    </install>  

 

Der VLC Player kann mit der Datei vlcrc vorkonfiguriert werden, https://wiki.videolan.org/Preferences/. Wir kopieren die Datei für eine spätere Verwendung nach c:\Program Files\VideoLaln\VLC.

 

Schritt 5: Deinstallation

    
    <uninstall>    
        <tasks>      
            <killprocessbypath path="%ProgramFiles%\VideoLAN\VLC" />        
            <checkfile path="%ProgramFiles%\VideoLAN\VLC\uninstall.exe">        
                <exists>          
                    <execute path="%ProgramFiles%\VideoLAN\VLC\uninstall.exe">            
                        <parameters>              
                            <parameter>/S /NOCRC</parameter>            
                        </parameters>          
                    </execute>        
                </exists>      
            </checkfile>      
            <removefile path="%ProgramData%\Microsoft\Windows\Start Menu\Programs\VLC Media Player.lnk" />      
            <sleep seconds="10" />      
            <checkfolder path="%ProgramFiles%\VideoLAN\VLC" contentrequired="false">        
                <exists>          
                    <removefolder path="%ProgramFiles%\VideoLAN\VLC" />        
                </exists>      
            </checkfolder>      
            <checkfolder path="%ProgramFiles%\VideoLAN" contentrequired="true">        
                <notexists>          
                    <removefolder path="%ProgramFiles%\VideoLAN" />        
                </notexists>      
            </checkfolder>    
        </tasks>  
    </uninstall>  

 

Das Programm soll auch deinstalliert werden können. Deshalb beenden wir zuerst alle Prozesse, danach wird die Datei %ProgramFiles%\VideoLAN\VLC\uninstall.exe ausgeführt. Zusätzlich entfernen wir auch die Verzeichnisse %ProgramFiles%\VideoLAN, sofern sie leer sind.

 

Schritt 6: Benutzer-Teil

    
    <userinstall>    
        <tasks>      
            <addfolder path="%APPDATA%\vlc" />      
            <checkfile path="%ProgramFiles%\VideoLAN\VLC\uninstall.exe">        
                <exists>          
                    <copyfile source="%ProgramFiles%\VideoLAN\VLC\vlcrc" destination="%APPDATA%\vlc\vlcrc" overwrite="true" />        
                </exists>      
            </checkfile>      
            <getoslanguage>        
                <languagecodes>          
                    <languagecode value="1031">            
                        <addregkey path="HKCU\Software\VideoLAN\VLC" name="Lang" value="de" type="REG_SZ" />          
                    </languagecode>          
                    <languagecode value="1033">            
                        <addregkey path="HKCU\Software\VideoLAN\VLC" name="Lang" value="en" type="REG_SZ" />          
                    </languagecode>          
                    <languagecode value="1036">            
                        <addregkey path="HKCU\Software\VideoLAN\VLC" name="Lang" value="fr" type="REG_SZ" />          
                    </languagecode>          
                    <languagecode value="1040">            
                        <addregkey path="HKCU\Software\VideoLAN\VLC" name="Lang" value="it" type="REG_SZ" />          
                    </languagecode>        
                </languagecodes>      
            </getoslanguage>    
        </tasks>  
    </userinstall>  

 

Alle Aktionen, welche im Benutzerkontext ablaufen müssen, werden in der Sektion "UserInstall" ausgeführt. Der Inhalt dieser Sektion wird entweder in ein Activesetup.vbs oder in ein ActiveSetup.ps1 konvertiert. Diese Datei wird sowohl während der Installation einmal für jeden angemeldeten Benutzer ausgeführt, aber auch für jeden zukünftigen Benutzer, welcher sich an dem Gerät anmeldet.

 

Matrix42 EmpirumVideolan_VLC_Media_Player_3_3.0.20.0_MUI_x64_matrix.zip
Microsoft IntuneVideolan_VLC_Media_Player_3_3.0.20.0_MUI_x64_intuneoffline.zip
SCCMVideolan_VLC_Media_Player_3_3.0.20.0_MUI_x64_sccm.zip