Удалить приложение Silverlight вне браузера программным способом - PullRequest
6 голосов
/ 29 апреля 2010

Как удалить приложение Silverlight 4 из браузера программно вместо использования контекстного меню (например, если я хочу заменить контекстное меню)?

Редактировать

Я нашел в «Установка приложений Silverlight без участия браузера» как удалить, вызвав командную строку:

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

Это можно использовать в: -

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

Есть ли лучшее решение?

Ответы [ 5 ]

2 голосов
/ 29 апреля 2010

Я не уверен, что вы можете сделать это программно.

Один из вариантов - заставить пользователя использовать «Установка и удаление программ» для его удаления.

Другой вариант - использовать опцию установки без вывода сообщений, чтобы удалить ее (ссылка - http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/03/24/silverlight-4-rc-and-the-silent-installation.aspx), но это включает вызовы взаимодействия COM.

Mike.

1 голос
/ 18 октября 2010

Это не ответ, но он связан с вашей проблемой. В официальном списке пожеланий Silverlight я добавил возможность сделать это довольно давно. К счастью, довольно немногие пользователи согласны. Надеюсь, что при наличии достаточного количества голосов оно появится в следующей версии Silverlight.

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

1 голос
/ 23 августа 2010

Я уверен, что это невозможно без обращения к COM-взаимодействию, как говорит Майк, и я бы спросил, хорошая ли это идея, поскольку:

1) Удаление опции удаления, несомненно, раздражает многих пользователей и является плохой практикой. 2) Вы говорите, что ищете новое контекстное меню? Если бы это не было LOB-приложением, я бы с осторожностью отнесся к этому, так как многие пользователи не будут использовать доступ к контекстным меню в веб-приложении, которое для меня является плохим HCI. Если это LOB-приложение, то установка и удаление программ будет хорошим решением?

1 голос
/ 12 июля 2010

Решение, которое вы упомянули, до сих пор остается единственным способом, который я знаю. Приятно отметить, что после него стоит Application.Current.MainWindow.Close();, так как приложение все еще будет работать после удаления.

Марк

0 голосов
/ 08 августа 2013

Ознакомьтесь с моим решением здесь: Невозможно программно удалить SIlverlight Out Of Browser Application Я использовал код в нем в консольном приложении, которое запускалось приложением silverlight, которое оно удаляло. Silverlight извлек EXE-файл как ресурс в один из каталогов, а затем запустил его, используя что-то вроде следующего:

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell"))
{
     shell.Run(@"C:\Users\yourusername\AppData\update.exe xapNameToUninstall");
}
...