我们有一个 Silverlight 客户端,其中有两个要求: - 在本地网络上打开文件(在 Windows 上使用 UNC,在 Mac 上使用 SMB) - 将文件从 Explorer/Finder 拖放到 SL 客户端上。
通过使用 IE、FireFox(经过一些调整)或使用 COM 自动化 Out Of Browser 在 Windows 上打开文件(使用 UNC)可以正常工作。
在 Mac 上,这被证明是困难的。Mac 上的 Out Of Browser 没有“提升的信任功能”(相当于 Windows 上的 COM 自动化),因此在 Mac 上的 OOB 中,HyperlinkButton 控件是打开文件(uri)的唯一方法,但这会在打开“ SMB 文件”(我猜是由于 SL OOB 中的跨方案/跨域限制)。所以我们不得不去浏览器内:现在 Safari 不能很好地处理这个问题。如果您调整浏览器以允许这样做,FireFox 可以打开本地文件。所以我们做到了。
然后问题是文件拖放(由于浏览器的限制,它在 Safari 中有效,但在 Firefox 中无效)。我们通过创建一个 SL 控件来解决此问题,该控件使用 HTML 桥将 HTML div 注入到用作可放置区域的 SL 客户端之上。
由于能够打开本地文件需要调整浏览器,因此最好的解决方案是具有打开本地文件 OOB 的功能(相当于 Windows 上的 COM 自动化,例如能够运行 AppleScript)。
这样的事情可能吗?是否可以通过 SMB 在 OOB 中的 Mac 上以某种方式打开文件?
谢谢。
PS:所以我们在 Mac 上通过使用 FireFox 5(经过调整以允许打开本地文件)在浏览器中运行有了一个可行的解决方案——直到我们遇到了一个更严重的问题,看起来像是 FireFox 的 SL 插件中的严重渲染问题在 Mac 上;这个问题在这里发布: MacBooks 上的 Firefox 4 和 5 中的 Silverlight 渲染问题