部署到客户端时,Brokered Component无法正常工作

时间:2015-03-30 18:42:13

标签: windows-runtime windows-store-apps winrt-component

我创建了一个带有代理组合的测试应用程序,它在我的机器上运行顺畅,但是当它移动到平板电脑并完成所有必需的设置(regsvr32,icacls)时,它会引发异常。然后我去下载了Microsoft Northwind示例并且它的行为相同。在我的机器上工作正常但在另一台平板电脑上没有。我在这里错过任何东西吗?这是例外,它的转换异常和访问被拒绝异常:  无法转换类型为' NorthwindRT.DAL.FileWatcher'的COM对象接口类型' NorthwindRT.DAL.IFileWatcherClass'。此操作失败,因为QueryInterface调用COM组件上的接口与IID' {23F40340-AEB1-5774-5705-64488C9BDD3A}'由于以下错误而失败:访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。 但是我在平板电脑上做了与开发机器上相同的事情! 我将所需的文件移动到正确的目录并启用了对所有应用程序的读/执行,并使用regsvr32注册了代理。用户也可以访问实现dll所在的目录,因此Access被拒绝异常很奇怪。 我做了关于代理公司的研究,我的工作就像现有的文件一样! 有任何想法吗?我在这里错过了什么吗?我需要做额外的设置吗?我的系统是否缺少任何必需的dll?

2 个答案:

答案 0 :(得分:0)

该应用无法访问msvcr120d.dll 添加"所有应用程序包"到这个dll,它将解决问题。

答案 1 :(得分:0)

我也在开发代理组件,到目前为止,我在开发和部署方面都取得了一些成功。

访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))

您需要在拥有proxystub.dll和winmd实现的文件夹中运行icacls。

  

icacls。 / T /授予“所有申请包”:RX

现在,如果您要部署到没有开发环境的设备(即Visual Studio),则需要安装 Visual C ++ Redistributable for Visual Studio 2015 (您可以使用任何VS版本你有,只是发生我正在使用VS2015)。您可以下载here。还有一件事,因为您在设备中没有开发环境,您希望部署发布程序集而不是调试,以便程序集不会引用用于调试的库或DLL(即msvcr120.dll而不是msvcr120 d .dll)因为它不会在干净的设备中找到。

最后,我有关于代理组件的blog。你可能想看一下。