以编程方式卸载浏览器外的 silverlight 应用程序

Posted

技术标签:

【中文标题】以编程方式卸载浏览器外的 silverlight 应用程序【英文标题】:Uninstall out-of-browser silverlight application programmatically 【发布时间】:2011-02-13 16:54:35 【问题描述】:

如何以编程方式卸载浏览器外的 silverlight 4 应用程序而不是使用上下文菜单(例如,如果我想替换上下文菜单)?

编辑

我在"Installing Silverlight applications without the browser involved"找到了如何通过调用命令行来卸载:

"%ProgramFiles%\Microsoft Silverlight\sllauncher.exe" /uninstall /origin:silverlight.net/content/samples/apps/...

这可以用于:-

 dynamic cmd = AutomationFactory.CreateObject("WScript.Shell");
 cmd.Run(run, 1, true);

有没有更好的解决方案?

【问题讨论】:

我在timheuer.com/blog/archive/2010/03/25/…找到了如何通过调用命令行来卸载:"%ProgramFiles%\Microsoft Silverlight\sllauncher.exe" /uninstall /origin:silverlight.net/content/samples/apps/facebookclient/ClientBin/… 这个可以用在动态 cmd = AutomationFactory.CreateObject("WScript.Shell"); cmd.Run(运行,1,真);有没有更好的解决方案? 请使用问题编辑功能添加附加信息而不是评论。 我也很想知道,如何在 Mac 上做到这一点?天哪……即使在第五版 SL 中,一些浏览器之外的东西看起来也很丑陋。如果已经安装,为什么不能直接从浏览器调用该应用程序?为什么我不能卸载它(我的意思是在代码中)?为什么 CheckAndDownloadUpdateAsync() 并不总是有效... 【参考方案1】:

在此处查看我的解决方案:Unable to Uninstall SIlverlight Out Of Browser Application Programatically 我在控制台应用程序中使用了其中的代码,该应用程序由正在卸载的 silverlight 应用程序运行。 Silverlight 将 EXE 作为资源提取到其中一个目录中,然后使用以下内容运行它:

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))

     shell.Run(@"C:\Users\yourusername\AppData\update.exe xapNameToUninstall");

【讨论】:

【参考方案2】:

这不是答案,但与您的问题有关。在官方 Silverlight 愿望清单上,我在很久以前就添加了执行此操作的功能。幸运的是,很少有用户同意。有了足够的票数,希望它会出现在 Silverlight 的未来版本中。

http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/410706-greater-control-over-installation-in-oob

【讨论】:

【参考方案3】:

正如 Mike 所说,如果不求助于 COM 互操作,这肯定是不可能的,我也质疑这是否是个好主意,因为:

1) 删除卸载选项无疑会惹恼许多用户并且是不好的做法。 2) 你说你正在寻找一个新的上下文菜单?除非这是一个 LOB 应用程序,否则我会对此保持警惕,因为许多用户不会习惯访问 Web 应用程序中的上下文菜单,这对我来说是糟糕的 HCI。如果它是一个 LOB 应用程序,那么添加/删除程序将是一个好的解决方案?

【讨论】:

您可能还希望有一个按钮来安装,另一个按钮来卸载(是我的情况)。替换右键菜单对我也很有用,可以放置非常高级的东西,但是丢失卸载命令迫使我忘记了那个解决方案。【参考方案4】:

您提到的解决方案仍然是我知道的唯一方法。在它后面加上Application.Current.MainWindow.Close(); 是个不错的选择,因为在您卸载后应用程序仍会运行。

马克

【讨论】:

【参考方案5】:

我不确定您是否可以通过编程方式执行此操作。

一种选择是让用户使用添加/删除程序来删除它。

另一种方法是使用静默安装选项将其删除(链接 - http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/03/24/silverlight-4-rc-and-the-silent-installation.aspx),但这涉及 COM 互操作调用。

迈克。

【讨论】:

以上是关于以编程方式卸载浏览器外的 silverlight 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 2010/Silverlight:以编程方式传递自定义参数

如何在 XAML (Silverlight) 中以编程方式设置 TextBox 文本

如何以编程方式在 Silverlight 中创建一个没有框(只是复选)的复选框?

如何以编程方式将 Silverlight Grid 布局 ColumnDefinition 宽度设置为“*”?

以编程方式为 Silverlight 显示选择图像转换格式为 JPEG 或 PNG

如何以编程方式将垂直滚动条添加到组合框