Почему возникает ошибка в закодированном UI-приложении Метод запуска с помощью startinfor для bat-файла

Я безуспешно пытаюсь использовать метод запуска приложения с ProcessStartInfo. Я пытаюсь запустить bat-файл, который является ярлыком. Вот что я пробовал:

string myfile = @"\\jcbestbadev01\FSBATest\FSBATest.bat";

var startInfo = new ProcessStartInfo(myfile);
startInfo.UseShellExecute = true;

ApplicationUnderTest cmdApplication = ApplicationUnderTest.Launch(startInfo );

Это не сработало.

Я пробовал это также:

StreamReader SR = new StreamReader(myfile);
string strFileText= SR.ReadToEnd();
SR.Close();
SR.Dispose();

ProcessStartInfo processInfo;
Process process;

processInfo = new ProcessStartInfo("C:\\Windows\\System32\\cmd.exe ", "/c " + strFileText);
processInfo.UseShellExecute = true;

Это тоже не сработало. Я продолжаю получать сообщение об ошибке:

Приложение не может быть запущено. Это может быть вызвано одной из следующих причин:
1) Другой экземпляр приложения уже запущен, и одновременно может работать только один экземпляр.
2) Приложение запустило другой процесс и теперь остановился. Возможно, вам потребуется запустить процесс напрямую.
3) У вас недостаточно прав для работы с этим приложением.

Что касается моего первого решения, оно запускает его и по-прежнему выдает ошибки, хотя оно уже выполнилось и открыло приложение. Последнее решение выдает ошибки.

Может кто-нибудь сказать мне, почему он выдает ошибку даже после выполнения и запуска файла?


person skinnyWill    schedule 11.05.2015    source источник
comment
По какой причине вы не используете ApplicationUnderTest.Launch(executableLocation); запустить ваше приложение?   -  person Thomas Bouman    schedule 11.05.2015
comment
зачем использовать bat-файл при запуске codedui? (предполагается, что файл bat открывает приложение, которое вы хотите протестировать?), для запуска файла bat вы можете использовать обычный класс Process и после его запуска выполнить тест.   -  person barakcaf    schedule 11.05.2015
comment
Ну, приложение, которое я автоматизирую, является приложением стороннего поставщика. Это приложение использует bat-файл, в котором настроены некоторые переменные среды, и вы не можете запустить его как обычный exe-файл, поэтому вам придется запускать его из bat-файла. Если бы это был исполняемый файл, у меня не было бы проблем с использованием метода запуска с exe, но, поскольку это файл bat, у меня нет способа обойти его.   -  person skinnyWill    schedule 11.05.2015


Ответы (1)


Кажется, что вы не можете использовать запуск приложения для быстрого запуска приложения с использованием пакетного файла.

В итоге я использовал приведенный ниже код, просто запустив процесс для этого файла bat. Надеюсь, это поможет кому-то.

        string myfile = @"\\jhqfsbadev01\FSBATest\FSBATest.bat";
        System.Diagnostics.Process.Start(myfile);
person skinnyWill    schedule 11.05.2015
comment
Великолепно, это работает и для запуска, и для приложения. Я запускал приложение в дополнение к моему тестируемому приложению, и ваше решение - это то, что мне нужно было сделать. Я до сих пор не понимаю, почему ApplicationUnderTest.Launch запускает приложение, но затем вызывает ошибку ссылки на объект, но благодаря вам я знаю, что вместо этого нужно использовать System.Diagnostics.Process.Start! - person Ewan; 16.03.2017