c# veratim似乎不能与.startinfo.arguments一起工作

本文关键字:startinfo arguments 一起 工作 不能 veratim | 更新日期: 2023-09-27 18:07:30

我有一个应用程序,我可以从多个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();

尽管listview显示的文件是single/,但最终的结果总是double/

在某个地方它丢失了字面值字符串

如果我修改代码并运行。文件名= @"msiexec.exe/i C:'test'test1. exe "Msi "它工作得很好,但我需要能够从文件名列表中进行选择。

任何想法?

c# veratim似乎不能与.startinfo.arguments一起工作

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();