深入了解Silverlight离线应用
立即解锁
发布时间: 2025-08-26 01:18:38 阅读量: 6 订阅数: 16 

# 深入了解Silverlight离线应用
## 1. 离线应用概述
Silverlight应用的代码通常包含在XAP文件中,浏览器插件从Web服务器下载该文件并在客户端执行。此后,Web服务器无需再次介入,所有代码都在本地计算机上运行。这就带来了一个有趣的可能性:虽然Silverlight应用依赖于浏览器插件,但技术上并不要求它们必须嵌入到实时网页中。只要有可靠的方法在浏览器外运行Silverlight插件,就可以独立运行Silverlight应用。
Silverlight离线应用并非真的无需浏览器运行,而是隐藏了浏览器的存在。当运行离线应用时,名为`sllauncher.exe`的特殊工具会创建一个独立窗口,其中包含一个浏览器控件。这个浏览器窗口被简化为基本框架,不包含标准浏览器的用户界面。需要注意的是,Silverlight无法控制`sllauncher.exe`窗口的初始大小、位置和设计。
离线应用可在所有支持Silverlight的平台上运行,包括Windows和Mac计算机。
### 1.1 使用离线应用的原因
使用离线应用有以下几个重要原因:
- **获得桌面存在**:离线应用需要通过轻量级过程“安装”,该过程会下载XAP文件并添加桌面和开始菜单快捷方式。这使得用户可以直接启动应用,而无需打开浏览器并导航到相应的URL。
- **支持离线运行**:通常,Silverlight应用通过网页访问,因此客户端需要网络连接才能运行。但离线应用安装后,会在本地永久缓存副本(除非用户明确移除应用),从而支持离线使用。
- **支持间歇性连接**:许多客户端(特别是使用笔记本电脑和无线连接的用户)会遇到间歇性网络中断。离线应用结合网络检测功能,可以在连接时调用Web服务获取更新数据和执行服务器操作,断开连接时仍能独立工作。
### 1.2 离线应用的局限性
离线应用并非桌面应用的竞争对手,也不会为应用添加新功能。它们受到与普通基于浏览器的应用相同的安全沙箱限制,无法执行桌面交互(如拖放)、访问隔离存储之外的文件、支持本地数据库或与其他应用进行交互。因此,Silverlight离线应用不能与Adobe AIR等技术竞争。如果需要更强大的桌面平台,建议使用WPF。
## 2. 启用离线支持
要使Silverlight应用能够在浏览器外运行,需要先启用该功能,具体步骤如下:
1. 双击解决方案资源管理器中的“Properties”项,显示应用程序配置选项。
2. 点击“Silverlight”选项卡。
3. 选择“Enable running application out of the browser”设置。
4. 可选步骤:点击“Out-of-Browser Settings”按钮,显示一个窗口,可在其中设置其他选项。
### 2.1 其他选项设置
在“Out-of-Browser Settings”窗口中可以设置以下选项:
- **Window Title**:应用在浏览器外运行时窗口标题栏中使用的名称。
- **Width and Height**:离线应用窗口的初始大小。用户可以在应用启动后调整窗口大小。如果不提供宽度和高度值,Silverlight将创建一个宽800像素、高600像素的窗口。
- **Shortcut name**:安装窗口和创建的任何快捷方式中使用的名称。
- **Download description**:描述应用的文本,当鼠标悬停在应用快捷方式上时会显示为工具提示。
- **Icons**:允许自定义安装窗口和快捷方式使用的图像。
- **Enable GPU Acceleration**:确定离线应用是否支持视频卡缓存,以在某些情况下提高性能。选择此复选框仅提供使用硬件加速的选项,具体是否使用还取决于元素的设置。
输入的值将保存在名为`OutOfBrowserSettings.xml`的文件中,并与项目一起保存。完成这些步骤后,应用即可在本地安装并在浏览器外启动,但用户也可以继续在浏览器中作为标准Silverlight应用运行。
## 3. 安装离线应用
有两种方式可以安装具有离线功能的应用:
### 3.1 手动安装
用户可以通过以下步骤手动安装应用:
1. 请求应用的入口页面。
2. 右键单击Silverlight内容区域。
3. 选择“Install [ApplicationShortName] on this computer”。
### 3.2 编程安装
可以通过调用`Application.Install()`方法以编程方式启动安装过程。该方法必须在响应用户发起的操作(如点击按钮)的事件处理程序中调用。如果用户接受安装提示并继续,`Install()`方法返回`true`;如果用户拒绝安装,返回`false`。
需要注意的是,如果应用已经在本地计算机上安装,即使用户当前在浏览器中运行应用,调用`Install()`方法也会抛出异常。为避免此错误,在调用`Install()`方法之前,应检查`Application.InstallState`值。以下是一个完整的示例,用于响应按钮点击事件:
```csharp
private void cmdInstall_Click(object sender, RoutedEventArgs e)
{
// Make sure that the application is not already installed.
if (Application.Current.InstallState != InstallState.Installed)
{
// Attempt to install it.
bool installAccepte
```
0
0
复制全文
相关推荐









