Вопрос

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

Я включаю список MSI, в комплекте с полным путем, с

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

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

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

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

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

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

Любые идеи?

Это было полезно?

Решение

string MSILocation = @"C:\test\"; 
string[] MSIFiles = Directory.GetFiles(MSILocation, "*.*", SearchOption.TopDirectoryOnly).Select(f => Path.GetFileName(f)).ToArray();  

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

Использовать 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(); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top