Может ли Silverlight (SLOOB) запустить процесс даже при полном доверии?

Мне было поручено написать установщик с серебряным светом вне браузера. Мне необходимо.

  1. получить версию из локального EXE
  2. проверьте веб-службу, чтобы убедиться, что это самая последняя версия
  3. скачай zip, если нет
  4. распаковать молнию
  5. перезаписать старый EXE
  6. запустить EXE

Это приложение-установщик сейчас написано на .NET WinForms, но .NET framework является препятствием для загрузки людьми.

Рекомендуемое решение - использовать SLOOB, однако я не уверен, как установить полное доверие. Если я назначу полное доверие, могу ли я начать процесс.

Спасибо


person Jamey McElveen    schedule 20.03.2010    source источник
comment
Устанавливаемое приложение является .NET-приложением? Если да, то каким образом .NET framework является препятствием для установщика?   -  person AnthonyWJones    schedule 21.03.2010


Ответы (2)


Глядя на это, я подозреваю, что вам придется создавать процесс с использованием WMI через интерфейс COM. В конце концов, это делает этот вариант очень сложным и очень подверженным сбоям по целому ряду причин (WMI отключен или защищен, пользователь не будет полностью доверять и т. Д.). Я подозреваю, что вам было бы намного лучше. от создания пакета развертывания .msi или чего-то подобного, чтобы можно было выйти и загрузить фреймворк, если это необходимо. Доступно множество моделей развертывания, почти все из которых превосходят эту.

Тем не менее, если вы собираетесь это сделать:

Чтобы получить COM-объект, вам нужно использовать AutomationFactory.CreateObject(...) API. Тим Хойер предоставляет здесь образец.

Чтобы выполнить сценарий WMI, вам нужно создать объект WbemScripting.SWbemLocator в качестве корневого. Оттуда используйте метод ConnectServer, чтобы получить службу wmi на указанном компьютере. Затем вы можете опросить модуль Win32_Process, чтобы создать новые процессы.

Изменить: я потратил немного времени на работу над этим, и даже на моем локальном компьютере в качестве администратора я столкнулся с проблемами безопасности. Правильный код будет примерно таким:

        dynamic locatorService = AutomationFactory.CreateObject("WbemScripting.SWbemLocator");
        dynamic wmiService = locatorService.ConnectServer("winmgmts:{impersonationLevel=impersonate,authentationLevel=Pkt}//./root/cimv2");

        dynamic process = wmiService.Get("Win32_Process");

        dynamic createParameters = process.Methods_["Create"].InParameters.SpawnInstance_;

        createParameters.CommandLine = "cmd.exe";

        wmiService.ExecMethod("Win32_Process", "Create", createParameters);
person Ben Von Handorf    schedule 21.03.2010

Silverlight 4 будет поддерживать что-то вроде этого: http://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx#sllauncher

person Cine    schedule 21.03.2010
comment
Из того, что я видел, это установка OOB-приложения Silverlight с компакт-диска или чего-то подобного, это правильно? Есть ли способ адаптировать это, чтобы использовать его в качестве начальной загрузки для полной установки приложения? - person Ben Von Handorf; 23.03.2010