Compartir a través de


Compatibilidad con menús contextuales heredados para aplicaciones empaquetadas

El menú contextual es una de las extensiones de shell más populares y útiles. Si ya está en el Explorador de archivos o en el escritorio, reduce significativamente el número de pasos para completar una operación de archivo en comparación con la apertura de una aplicación independiente.

Si la aplicación de escritorio implementa la interfaz IContextMenu heredada para extensiones de shell, como el controlador de menú contextual o el controlador de arrastrar y colocar, es posible que la extensión del shell no funcione después de empaquetar la aplicación. Para que el shell reconozca y registre la extensión, deberá modificar el archivo de manifiesto del paquete. (Esta característica está disponible en la compilación 22000 y posteriores de Windows 11, que está disponible actualmente a través de compilaciones de Windows Insider ).

  • Agregar espacio de nombres com y la extensión windows.comServer para el archivo dll shellex

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

    A continuación se muestra un fragmento de código de ejemplo:

    <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>
    
  • Agregue el espacio de nombres desktop9 y la extensión windows.fileExplorerClassicContextMenuHandler o windows.fileExplorerClassicDragDropContextMenuHandler

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

    A continuación se muestra un fragmento de código de ejemplo:

    <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>
    
  • Cambie MaxVersionTested para que sea mayor que 10.0.21300.0

    A continuación se muestra un fragmento de código de ejemplo:

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

Nota:

Si va a implementar extensiones de shell en lugar de empaquetar una aplicación de escritorio existente con la implementación heredada de IContextMenu , se recomienda implementar la interfaz IExplorerCommand y usar desktop4:FileExplorerContextMenus en su lugar. Consulte aquí para obtener más información.