Unterstützung von Legacykontextmenüs für gepackte Apps

Das Kontextmenü ist eine der beliebtesten und nützlichsten Shellerweiterungen. Wenn Sie sich bereits im Datei-Explorer oder auf dem Desktop befinden, verringert sich die Anzahl der Schritte zum Abschließen eines Dateivorgangs im Vergleich zum Öffnen einer separaten App erheblich.

Wenn Ihre Desktop-App die legacy-IContextMenu-Schnittstelle für Shellerweiterungen wie den Kontextmenühandler oder drag & drop-Handler implementiert, funktioniert die Shellerweiterung möglicherweise nicht mehr, nachdem Sie Ihre App verpackt haben. Damit die Shell die Erweiterung erkennen und registrieren kann, müssen Sie die Paketmanifestdatei ändern. (Dieses Feature ist ab Windows 11. Build 22000 verfügbar, das derzeit über Windows Insider-Builds verfügbar ist.)

  • Hinzufügen des com-Namespace und der Windows.comServer-Erweiterung für Ihre Shellex-DLL

    xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"

    Im Folgenden finden Sie einen Beispielcodeausschnitt:

    <com:Extension Category="windows.comServer">
        <com:ComServer>
            <com:SurrogateServer DisplayName="<display-name-for-the-com-server>">
                <com:Class Id="<GUID-for-the-com-server>" Path="<path-to-the-com-server-or-dll>" ThreadingModel="STA" />
            </com:SurrogateServer>
        </com:ComServer>
    </com:Extension>
    
  • Fügen Sie den Desktop9-Namespace und die Erweiterung windows.fileExplorerClassicContextMenuHandler oder windows.fileExplorerClassicDragDropContextMenuHandler hinzu.

    xmlns:desktop9="http://schemas.microsoft.com/appx/manifest/desktop/windows10/9"

    Im Folgenden finden Sie einen Beispielcodeausschnitt:

    <desktop9:Extension Category="windows.fileExplorerClassicContextMenuHandler">
        <desktop9:FileExplorerClassicContextMenuHandler>
            <desktop9:ExtensionHandler Type="*" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type=".txt" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type="Directory" Clsid="<GUID-for-the-com-server>" />
        </desktop9:FileExplorerClassicContextMenuHandler>
    </desktop9:Extension>
    
    <desktop9:Extension Category="windows.fileExplorerClassicDragDropContextMenuHandler">
        <desktop9:FileExplorerClassicDragDropContextMenuHandler>
            <desktop9:ExtensionHandler Type="Directory" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type="Drive" Clsid="<GUID-for-the-com-server>" />
        </desktop9:FileExplorerClassicDragDropContextMenuHandler>
    </desktop9:Extension>
    
  • Ändern Sie MaxVersionTested in größer als 10.0.21300.0.

    Im Folgenden finden Sie einen Beispielcodeausschnitt:

    <Dependencies>
        <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.21301.0" />
    </Dependencies>
    

Hinweis

Wenn Sie Shellerweiterungen implementieren, anstatt eine vorhandene Desktop-App mit einer älteren IContextMenu-Implementierung zu verpacken, wird empfohlen, die IExplorerCommand-Schnittstelle zu implementieren und stattdessen desktop4:FileExplorerContextMenus zu verwenden. Weitere Informationen finden Sie hier.