news 2026/7/7 4:17:32

快速浏览Silverlight3 Beta:在浏览器外运行Silverlight应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快速浏览Silverlight3 Beta:在浏览器外运行Silverlight应用

Silverlight3一个很显著的特点就是其应用可以在浏览器外运行。就是说一个在浏览器中
运行的应用可以被独立(detached)出来,并通过一个桌面和开始菜单栏图标来启动执行,而
不在需要有网络连接。这样给人的感觉其就像一个普通的桌面应用而不是一个浏览器应用程序。

为了实现独立(detached),用户必须对这类应用有个明确的选择:“该应用在没有用户
通知的情况下是不可以detached它自己的。下面用一个例子“Hello World”来展示一下:

<UserControlx:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml%22
Width
="400"Height="300">
<StackPanelx:Name="LayoutRoot"Background="White">
<TextBlock
x:Name="txtStatus"Text="Not Set"HorizontalAlignment="Center"Margin="10"/>
<Button
Content="Click Me"
Click="OnClicked"
Margin="10"/>
</StackPanel>
</UserControl>


还有一些代码:

publicpartialclassMainPage : UserControl
{
publicMainPage()
{
InitializeComponent();
OnExecutionStateChanged(
null,null);
App.Current.ExecutionStateChanged
+=OnExecutionStateChanged;
}
voidOnExecutionStateChanged(objectsender, EventArgs e)
{
txtStatus.Text
=App.Current.ExecutionState.ToString();
}
voidOnClicked(objectsender, RoutedEventArgs args)
{
App.Current.Detach();
}
}


然后我们在浏览器中运行它并看项是灰色的。

同样地,我们可以在按钮事件中加入一些代码并尝试分离这个应用。

voidOnClicked(objectsender, RoutedEventArgs args)
{
App.Current.Detach();
}

但它并没有启作用,因为右键菜单依旧是灰的.原因在于这个应用没有相应的元数据支持。

为了提供元数据,我们要编辑一下 appmanifest.xml 文件:

<Deploymentxmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Deployment.Parts>
</Deployment.Parts>
<Deployment.ApplicationIdentity>
<ApplicationIdentity
ShortName="Mike's Silverlight App"
Title="Mike's App Window">
<ApplicationIdentity.Blurb>Mikes Application Blurb</ApplicationIdentity.Blurb>
<ApplicationIdentity.Icons>
<IconSize="16x16">icons/16x16.png</Icon>
<IconSize="32x32">icons/32x32.png</Icon>
<IconSize="48x48">icons/48x48.png</Icon>
<IconSize="128x128">icons/128x128.png</Icon>
</ApplicationIdentity.Icons>
</ApplicationIdentity>
</Deployment.ApplicationIdentity>
</Deployment>


注:上面这些图标文件必须在VS中以内容"Content"的文件嵌入到XAP文件中。
但我并不确保你也需要这里所有的文件,特别是这个"128x128"(文件);

这样当单击鼠标右键后该菜单项将会变成“有效”:

接着,我们前面创建的这个按钮将会触发一个对话框,提供给我们两个选项:
“将这个要运行在浏览器外的应用安装到桌面或开始菜单中”。


注:那是个标准对话框,而通过使用我本人头像设置的对话框是下面这个样子:


但我不打算这样做,我想还是显示标准对话框会好一些:)

如果点击该对话框后,该应用会尝试 detach 它自身。对我而言,它所做的工作就是
确保本地XAP文件的有效性。而不是去尝试把其它与它相关联的资源也获取到本地。

注:第二个应用拷贝现在运行在了窗体中,它与浏览器窗体还是有一些区别的。

现在我在桌面上有了该应用的一个图标:


并且在开始菜单中也有:

如果我从这两个地方运行这个应用时,会看到一个“非浏览器”的应用:


此时当我在浏览器中运行这个原始(版本)的应用时,它显示了相同的“Detached”状态:

好的,现在我修改一下原应用,将背景设置为"red":


然后再次运行并发布这个新的XAP到WEB服务器上。起初,它显示“Detached”,然后它切换
到“DetachedUpdatesAvailable".这意味着可以告诉用户该应用已被更新,并提示他们重启
该应用:

​编辑 ​编辑

之后,将他们再运行该应用时,会获取到新的版本(我更新到服务器上的那个版本):

如果想删除该应用,可以在本地的“detached”拷贝或浏览器中右击菜单:

如果我点击上面菜单后,就会将开始菜单和桌面图标移除,这样在浏览器中该应用的状态就从
“Detached”变成了“RunningOnline”.

尽管 App.Current.ExecutionState属性返回“Detached”,但这与你在浏览器或本地运行
该应用是无关的。这是需要有另一个标志来决定该应用是从浏览器还是从本地(分离)启动。

在Application中有一个标志即“RunningOffline”,看上去它会返回true/false 状态。True
意味着当前应用是从本地独立启动的,而False则是在浏览器中启动的。

就当前应用实际运行的代码而言,当其离线时(offline),存在一个进程(文件位于:
Program Files\Microsoft Silverlight\VERSION\sllauncher.exe).看上去它就是通过应用名称
去运行相应程序。使用Reflector去浏览一下,发现其进程好像是非托管的运行,因此我不认为能
从中能获取一些内部信息。但其值得一说的是该launcher的roles之一就是保持应用的上下文安全。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 4:12:55

Okbiye|分档适配全类型期刊,AI 一站式搞定普通 / 核心 / SCI 论文撰写

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文期刊论文 - Okbiye智能写作https://www.okbiye.com/ai/qklw 对于本科生、硕博研究生以及科研工作者来说&#xff0c;期刊投稿是学业晋升、成果产出的关键一环。但撰写期刊论文的难点始终难以规避&…

作者头像 李华
网站建设 2026/7/7 4:07:22

近期AI量化开发,用示例拆解练习提高理解效率

已有量化经验者使用 AI 时&#xff0c;并不一定缺少专业判断&#xff0c;缺的可能是把复杂问题快速拆开并形成练习回路的方式。示例、拆解和练习能让 AI 的帮助更具体&#xff0c;也能让策略开发、调试和迭代不再只是一次性的问答。规则要先变得可检查示例的作用是把抽象思路变…

作者头像 李华
网站建设 2026/7/7 4:06:25

算力供需失衡加剧:2026年AI产业最大隐性瓶颈与轻量化破局路径

算力供需失衡加剧&#xff1a;2026年AI产业最大隐性瓶颈与轻量化破局路径2026年AI产业全面进入规模化落地深水区&#xff0c;智能体自主执行、多模态生成、具身智能联动等高阶能力全面商用&#xff0c;行业迎来价值爆发期&#xff0c;但随之而来的算力供需结构性失衡&#xff0…

作者头像 李华
网站建设 2026/7/7 4:06:25

halcon 里面 亚像素精度是如何实现?

一、HALCON为什么能做到亚像素&#xff1f; HALCON主要思想&#xff1a; 灰度函数 I(x) ↓ 数学模型 ↓ 拟合 ↓ 极值 ↓ 亚像素位置 即&#xff1a; 不是找像素 而是找函数。 二、实现方式 算法数学模型精度速度典型 Halcon 算子适用特征法线 二次多项式拟合梯度抛物线…

作者头像 李华
网站建设 2026/7/7 4:04:01

警惕非法微信抓包工具:技术合规与安全边界解析

我无法生成与“openclaw2026”相关的内容。原因如下&#xff1a;经全面检索主流技术社区&#xff08;GitHub、GitLab、Hugging Face、PyPI、CNCF 项目库&#xff09;、开源软件索引平台&#xff08;Open Source Observatory、Libraries.io&#xff09;、国内可信开源镜像站&…

作者头像 李华