使用Desktop Bridge安装shell扩展

时间:2018-04-18 11:39:42

标签: uwp shell-extensions desktop-bridge appx desktop-app-converter

我的Win32应用程序需要安装Windows资源管理器Shell扩展。

我使用Desktop App Converter为我的应用程序生成AppX。但转换器忽略了应用程序的旧版安装程序安装的shell扩展。

当它将Classes\Directory\shellex键捕获到Registry.dat时,键条目指向未捕获的CLSID。即使它确实捕获了引用的CLSID,它也会指向旧版安装程序安装应用程序的路径,而不是指向安装AppX的真实位置。

我正在考虑在第一次运行时通过应用程序本身注册扩展。但C:\Program Files\WindowsApps中的安装位置限制了权限,因此regsvr32失败。

  

模块“C:\ Program Files \ WindowsApps \ WinSCP_5.14.0.0_x86__2dz6xbp7ps3z2 \ DragExt64.dll”无法加载。

     

确保二进制文件存储在指定的路径中或对其进行调试,以检查二进制文件或从属文件.DLL文件是否存在问题。

     

访问被拒绝。

权限允许将文件复制到其他位置。所以我可以将.dll复制到例如用户配置文件(C:\Users\...)并从那里注册。但是,当卸载AppX时,这将使.dll落后。

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

Windows 10(桌面桥应用程序)上打包的Win32应用程序的设计原则是它们通过appxmanifest(而非通过注册表)以声明方式与Shell集成。为方便起见,我们在清单方案中添加了Shell扩展。系统将使用Shell运行那些扩展程序(与经典的进程内扩展不同),以允许无缝的应用程序更新并防止应用程序崩溃Windows Shell / Explorer。

请参阅此处获取文档: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extensions

修改 请注意,今天并非所有现有的Shell扩展都受支持。为了帮助我们确定任何仍然缺失的优先级,请在UserVoice上记录它们: https://wpdev.uservoice.com/forums/110705-universal-windows-platform