C# Vorbatim, кажется, не работает с .startinfo.arguments?
Вопрос
У меня есть приложение, с которым я могу выбрать из нескольких 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();