代码之家  ›  专栏  ›  技术社区  ›  Alexander Zwitbaum

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

  •  6
  • Alexander Zwitbaum  · 技术社区  · 14 年前

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

    编辑

    我发现了 "Installing Silverlight applications without the browser involved" 如何通过调用命令行进行卸载:

    %ProgramFiles%\Microsoft Silverlight\slLauncher.exe“/卸载/源:silverlight.net/content/samples/apps/

    可用于:

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

    有更好的解决办法吗?

    5 回复  |  直到 11 年前
        1
  •  1
  •   Sidebp    14 年前

    很肯定,如果没有像mike所说的那样使用com互操作,这是不可能的,而且我会质疑这是否是一个好主意,因为:

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

        2
  •  2
  •   Mike    14 年前

    我不确定你能不能用编程的方式。

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

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

    迈克。

        3
  •  1
  •   marcnicol    14 年前

    你提到的解决办法仍然是我知道的唯一办法。很不错,放一个 Application.Current.MainWindow.Close(); 但在卸载之后,应用程序仍将运行。

    马克

        4
  •  1
  •   MutantNinjaCodeMonkey    14 年前

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

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

        5
  •  0
  •   Community CDub    7 年前

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