ディレクトリ内の複数の 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();
リストビューにはシングル/のファイルが表示されますが、最終結果は常にダブル/で表示されます
どこかでリテラル文字列が失われています。
コードを変更して.FileName = @"msiexec.exe /i C:\test\test1.msi"を実行すると問題なく動作しますが、ファイル名のリストから選択できるようにする必要があります。
何か案は?