質問

ディレクトリに複数の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