Unterstützen von Legacykontextmenüs für verpackte Apps

Das Kontextmenü ist eine der beliebtesten und nützlichsten Shellerweiterungen. Wenn Sie sich bereits in Explorer oder auf dem Desktop befinden, wird die Anzahl der Schritte zum Ausführen eines Dateivorgangs im Vergleich zum Öffnen einer separaten App erheblich reduziert.

Wenn Ihre Desktop-App die ältere IContextMenu-Schnittstelle für Shellerweiterungen wie den Kontextmenühandler oder den Drag and Drop-Handler implementiert, funktioniert die Shellerweiterung möglicherweise nach dem Verpacken der App nicht. Damit shell die Erweiterung erkennt und registriert, müssen Sie die Paketmanifestdatei ändern. (Dieses Feature ist unter Windows 11 Build 22000+ verfügbar, das derzeit über Windows-Insider-Builds )

  • Hinzufügen von com-Namespace und windows.comServer-Erweiterung für Ihre shellex dll

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

    Nachfolgend sehen 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>
    
  • Hinzufügen des Desktop9-Namespace und der Erweiterung "windows.fileExplorerClassicContextMenuHandler" oder "windows.fileExplorerClassicDragDropContextMenuHandler"

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

    Nachfolgend sehen 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 von MaxVersionTested auf größer als 10.0.21300.0

    Nachfolgend sehen 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 älteren IContextMenu-Implementierungen zu verpacken, empfehlen wir stattdessen die Implementierung der IExplorerCommand-Schnittstelle und die Verwendung von desktop4:FileExplorerContextMenus . Weitere Informationen finden Sie hier.