在 Mac 上从 Silverlight 打开本地文件
我们的 Silverlight 客户端有两个要求: - 打开本地网络上的文件(在 Windows 上使用 UNC,在 Mac 上使用 SMB) - 将文件从 Explorer/Finder 拖放到 SL 客户端上。
打开文件(使用 UNC)在 Windows 上工作正常,可以使用 IE、FireFox(经过一些调整)或使用 COM 自动化“Out Of Browser”。
在 Mac 上,这变得很困难; Mac 上的 Out Of Browser 没有“提升的信任功能”(相当于 Windows 上的 COM 自动化),因此在 Mac 上的 OOB 中,HyperlinkButton 控件是打开文件(uri 的)的唯一方法,但这会在打开“时引发安全异常” SMB 文件”(我猜是由于 SL OOB 中的跨方案/跨域限制)。 所以我们必须选择浏览器内:现在 Safari 不能很好地处理这个问题。如果您调整浏览器以允许,FireFox 可以打开本地文件。所以我们做到了。
问题是文件拖放(在 Safari 中有效,但由于浏览器的限制而在 Firefox 中无效)。我们通过创建一个 SL 控件来解决这个问题,该控件使用 HTML Bridge 将 HTML div 注入到用作可放置区域的 SL 客户端顶部。
由于能够打开本地文件需要调整浏览器,因此最好的解决方案是具有打开本地文件 OOB 的功能(相当于 Windows 上的 COM 自动化,例如能够运行 AppleScript)。
这样的事情可能吗?是否有可能以某种方式在 OOB 中通过 Mac 上的 SMB 打开文件?
谢谢。
PS:所以我们在 Mac 上有一个可行的解决方案,通过使用 FireFox 5 在浏览器中运行(经过调整以允许打开本地文件)——直到我们遇到了一个更严重的问题,看起来像 Mac 上 FireFox 的 SL 插件存在严重渲染问题;这个问题发布在这里: MacBook 上的 Firefox 4 和 5 中的 Silverlight 渲染问题
We have a Silverlight Client that has among others two requirements:
- Open files on the local network (by using UNC on windows and SMB on mac)
- Drag and drop files from Explorer/Finder onto the SL client.
Opening files (using UNC) works fine on windows, either by using IE, FireFox (with some adjustment) or by using COM automation Out Of Browser.
On Mac, this has turned out to be difficult; Out Of Browser on Mac has no “elevated trust features“ (equivalent to COM automation on windows), so in OOB on Mac the HyperlinkButton control is the only way to open a files (uri’s), but this throws a security exception when opening "SMB files" (due to cross scheme/cross domain restrictions in SL OOB I guess).
So we had to go for in-browser: Now Safari doesn’t handle this well. FireFox though can open local files if you tweak the browser to allow this. So we did.
The problem then was file drag and drop (which worked in Safari, but not in Firefox due to restrictions in the browser). We worked around this by creating a SL control that used the HTML Bridge to inject HTML div’s on top of the SL client that worked as droppable areas.
Since being able to open local files requires tweaking the browser, the best solution would be to have functionality to open local files OOB (equivalent to COM automation on windows, e.g. being able to run AppleScript).
Is something like this possible? Is it possible somehow to open a file by SMB on a Mac in OOB?
Thanks.
PS: So we kind of had a working solution on Mac by running in browser using FireFox 5 (tweaked to allow opening local files) – until we ran into a much more serious problem that looked like a
serious rendering issue in the SL plugin for FireFox on Mac; this problem is posted here:
Silverlight rendering issue in Firefox 4 and 5 on MacBooks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您正在寻找的是如何使受信任的 Silverlight 应用程序能够在浏览器内运行。 Windows 上有一个解决方案。我不知道我们如何在 MAC 中做到这一点。
阅读:
http://msdn.microsoft.com/ en-us/library/gg192793(v=vs.95).aspx
http://www.simple-talk.com /dotnet/.net-framework/elevated-trust-in-silverlight-4/
I think what you are looking for is haw to enable trusted Silverlight application to run inside the browser . There is a solution for windows. And I don't know how can we do it in MAC .
READ :
http://msdn.microsoft.com/en-us/library/gg192793(v=vs.95).aspx
http://www.simple-talk.com/dotnet/.net-framework/elevated-trust-in-silverlight-4/