C # Verbatim, похоже, не работает с .startinfo.arguments? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть приложение, с помощью которого я могу выбрать один из нескольких MSI (одинаковые MSI, разные версии) в каталоге, и я смогу установить или удалить из этого приложения.

Я вытягиваю в спискеMSI, полный путь, с

string MSILocation = @"C:\test\";
string[] MSIFiles = Directory.GetFiles(MSILocation, "*.MSI", SearchOption.TopDirectoryOnly);

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

string MSIname = lboMSIList.SelectedItem.ToString();
Process p = new Process();
p.StartInfo.FileName = "MSIEXEC.EXE";
p.StartInfo.Arguments = @"/i " + MSIname;
p.Start();

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

Где-то там теряется буквальная строка.

Если я изменяю код и запускаю .FileName = @ "msiexec.exe / i C: \ test \ test1.msi" , это работаетпросто отлично, но мне нужно иметь возможность выбирать из списка имен файлов.

Есть идеи?

1 Ответ

0 голосов
/ 05 сентября 2011
string MSILocation = @"C:\test\"; 
string[] MSIFiles = Directory.GetFiles(MSILocation, "*.*", SearchOption.TopDirectoryOnly).Select(f => Path.GetFileName(f)).ToArray();  

использовать выше MSIFiles массив имен файлов для заполнения списка

Использовать Path.combine , как показано ниже

string MSILocation = @"C:\test\";
string MSIname = lboMSIList.SelectedItem.ToString();
Process p = new Process();  
p.StartInfo.FileName = "MSIEXEC.EXE"; 
p.StartInfo.Arguments = string.Format(
"{0} {1}", @"/i",Path.Combine(MSILocation , MSIname );  
p.Start(); 
...