【问题标题】:Open any kind of file with an uwp app (without file association)使用 uwp 应用程序打开任何类型的文件(无文件关联)
【发布时间】:2020-07-18 10:45:58
【问题描述】:

我正在制作一个简单的 uwp 文本编辑器应用程序。我希望应用程序打开任何类型的文件,即使没有声明文件关联,因为有许多文本文件在操作系统中没有已知的扩展名。有什么方法可以修改注册表以使我的应用程序在记事本等打开方式列表中可用,以便用户可以从文件资源管理器本身使用我的应用程序打开该文件??

【问题讨论】:

    标签: uwp desktop-bridge


    【解决方案1】:

    在 Windows 10 2004(内部版本 19041)中,微软在包清单中引入了 uap10:FileType 属性,并通过提供 * 作为值,应用程序可在所有类型文件的菜单中打开。要使用它,只需将以下代码添加到您的清单中:

    xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
    ...
    <uap:Extension Category="windows.fileTypeAssociation">
      <uap:FileTypeAssociation Name="anyfile">
        <uap:Logo>Assets\mylogo.png</uap:Logo>
        <uap:SupportedFileTypes>
          <uap:FileType>.txt</uap:FileType>
          <uap10:FileType>*</uap10:FileType>
        </uap:SupportedFileTypes>
      </uap:FileTypeAssociation>
    </uap:Extension>
    

    这仅适用于 Windows 10 build 19041 及更高版本。如果应用的目标最低版本低于 19041 以通过清单验证,则额外的 uap:FileType 是必需的,否则可以省略。

    【讨论】:

    • 我收到了一个错误Reason: Element '{http://schemas.microsoft.com/appx/manifest/uap/windows10/10}FileType' is unexpected according to content model of parent element '{http://schemas.microsoft.com/appx/manifest/uap/windows10}SupportedFileTypes',即使我设置了&lt;TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.19041.0" /&gt;。似乎是什么问题?你能展示一个完整的例子吗?
    • 当然。我怎样才能把它寄给你?
    • 这是一个 zip 文件的链接,其中包含原始工作清单和新的不工作清单:emeditor.blob.core.windows.net/beta/appxmanifest.zip 谢谢。
    • 在我的示例中,uap10:FileType 实际上在 uap:SupportedFileTypes 内部。但是,我已经删除了uap2:SupportedVerbs,并且我已经完全按照您的 sn-p 进行了操作,但它仍然无法编译。请看:emeditor.blob.core.windows.net/beta/manifest2.zip
    • 嗯,实际上,我已经找到了问题所在。 PATH 环境应包含C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64。 Windows Kits 的任何旧版本路径都无法编译。在我正确设置 PATH 后,错误消失了。感谢您的提示。
    【解决方案2】:

    很好的问题,但恐怕您无法修改注册表以使应用程序在打开方式列表中可用,即使没有在 UWP 应用程序中声明文件关联。文件关联是使应用程序可以handle the file activation 的唯一方法。 Windows 桌面应用程序和通用 Windows 平台 (UWP) 应用程序都可以注册为默认文件处理程序。如果您确实想要此功能,请随时使用 Windows 反馈中心应用程序发布您的要求。

    【讨论】:

    • 我正在开发一个桌面扩展,用户可以通过它打开不受支持的文件扩展名。我可以看到重定向激活的两种方法是通过协议或从命令行启动。当我通过命令行传递文件路径时,它适用于除 bat 文件之外的所有类型的文件,并且由于某种原因协议激活不起作用。有什么解决办法吗??
    • 协议激活由于某种原因不起作用?您能分享一下协议的详细信息或提供给我们minimal reproducible example。
    • Here 就是一个例子。
    • 您的意思是您无法从 wpf 客户端启动 uwp 应用程序?
    • 现在可以使用 Windows 10 2004 (build 19041) 及更高版本,查看我的答案了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 2019-04-05
    • 1970-01-01
    • 2020-08-02
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多