支持打包应用的旧上下文菜单

上下文菜单是最常用的有用 shell 扩展之一。 如果已在“文件资源管理器”中或桌面上,与打开单独的应用相比,它大大减少了完成文件操作的步骤数。

如果桌面应用为 shell 扩展(如上下文菜单处理程序或拖放处理程序)实现旧的 IContextMenu 接口,则打包应用后 shell 扩展可能无法正常工作。 为了使 shell 能够识别和注册扩展,需要修改包清单文件。 (此功能在 Windows 11 版本 22000+ 上提供,目前可通过 Windows 预览体验成员版本使用)

  • 为 shellex dll 添加 com 命名空间和 windows.comServer 扩展

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

    下面是一个示例代码片段:

    <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>
    
  • 添加 desktop9 命名空间和 windows.fileExplorerClassicContextMenuHandler 或 windows.fileExplorerClassicDragDropContextMenuHandler 扩展

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

    下面是一个示例代码片段:

    <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>
    
  • 将 MaxVersionTested 更改为大于 10.0.21300.0

    下面是一个示例代码片段:

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

注意

如果要实现 shell 扩展,而不是打包具有旧版 IContextMenu 实现的现有桌面应用,建议改为实现 IExplorerCommand 接口并使用 desktop4:FileExplorerContextMenus。 有关详细信息,请参阅此文