c#verbatimは.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();
所属していません StackOverflow