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

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

如果桌面应用为 shell 扩展(如上下文菜单处理程序或拖放处理程序)实现旧版 IContextMenu 接口,则打包应用后 shell 扩展可能不起作用。 为了使 shell 能够识别并注册扩展,需要修改包清单文件。 (11 版本 22000 Windows版本 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。 有关详细信息 请参阅此处。