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

时间:2010-04-29 08:00:19

标签: .net silverlight deployment uninstall out-of-browser

如何以编程方式卸载浏览器外的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);

有没有更好的解决方案?

5 个答案:

答案 0 :(得分:2)

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

一个选项是让用户使用“添加/删除程序”将其删除。

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

麦克

答案 1 :(得分:1)

你提到的解决方案仍然是我所知道的唯一方法。虽然因为卸载后应用程序仍然在运行,但是在Application.Current.MainWindow.Close();之后会有一个很好的触摸。

马克

答案 2 :(得分:1)

如果没有像迈克所说的那样诉诸COM互操作,这是不可能的,我也会质疑这是不是一个好主意:

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

在这里查看我的解决方案: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");
}