Process.Start (someUri) завершается ошибкой при вызове из установщика с InstallAllUsers == true - PullRequest
0 голосов
/ 25 ноября 2011

Когда я создаю проект установки установщика Windows, в котором используется пользовательский класс установщика, и помещаю Process.Start(someUri); в любое место этого пользовательского класса установщика, вызов Process.Start () завершается ошибкой, если для свойства проекта установки InstallAllUsers установлено значение правда. Если я установлю InstallAllUsers в false, Process.Start () будет работать так, как я ожидал. Когда происходит сбой Start (), никакие исключения не генерируются, и любой код, следующий за вызовом Start () , все еще выполняется, но указанный вами URI не открывается.

Мне не повезло найти объяснение этому. Кто-нибудь может пролить свет на то, почему это происходит? Спасибо!

Edit: Я становлюсь подозрительным, это специфичная для Chrome аномалия. Process.Start () работает как положено с IE. Поскольку InstallAllUsers подразумевает установку на уровне компьютера, мне интересно, является ли тот факт, что Chrome установлен в пользовательский каталог AppData, является частью (или всей) проблемы.

1 Ответ

1 голос
/ 03 февраля 2012

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.DIAGNOSTICS.PROCESS);k(PROCESS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&rd=true

Найдена проблема.Класс «Пример для процесса» в справке содержит следующий комментарий:

// url's are not considered documents. They can only be opened

// by passing them as arguments.

Это означает, что попытка использовать «браузер по умолчанию» вызывает проблему.Приложение (IExplorer.exe) необходимо указать для URL

...