4

我的 Win32 应用程序需要安装 Windows Explorer 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。

有没有更好的解决方案?

4

1 回答 1

7

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

于 2018-04-18T16:44:02.610 回答