使用Desktop Bridge安装Shell扩展

Mar*_*ryl 3 shell-extensions appx uwp desktop-app-converter desktop-bridge

我的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。

有更好的解决方案吗?

Ste*_*SFT 6

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

参见此处获取文档:https : //docs.microsoft.com/zh-cn/windows/uwp/porting/desktop-to-uwp-extensions

编辑 注意,今天不支持所有现有的Shell扩展。为了帮助我们确定仍然缺少的任何东西的优先级,请在UserVoice上记录它们:https : //wpdev.uservoice.com/forums/110705-universal-windows-platform