Запуск «Справочника по приложениям» - PullRequest
0 голосов
/ 23 августа 2010

Мне нужно, чтобы мое приложение (Master) запускало другое приложение (Worker) для определенного события.

Если я распространяю свое приложение Worker как стандартный исполняемый файл, то все в порядке, и я могу использовать Process.Начните без проблем и с радостью передайте аргументы и вызовите WaitForExit.

Если я распространяю свое приложение Worker как приложение ClickOnce, оно создает ссылку на приложение, которую я могу запустить с Process.Start(как только я помещаю его копию в ту же директорию, что и мой Master.exe), но я не могу передать ей аргументы или использовать WaitForExit.

Я хочу быть в состоянии сделать оба.Я подозреваю, что вызов ссылки запускает другой процесс, в котором фактически выполняется исполняемый файл Worker.

Мой код:

// This works as I expect, and returns a valid Process.
Process p0 = Process.Start("Worker.exe", "DoSomeMagic");
// This seems to work, but returns null.
Process p1 = Process.Start("Worker.appref-ms");
// This also returns null, but does not pass the argument to Worker.
Process p2 = Process.Start("Worker.appref-ms", "DoSomeMagic"); 

Мой вопрос:

Как мне это сделать"правильно"?

1 Ответ

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

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

Подробнее о том, как передавать аргументы в приложения ClickOnce: http://msdn.microsoft.com/en-us/library/ms172242.aspx

...