C # Verbatim ne semble pas fonctionner avec .startinfo.arguments?
Question
J'ai une application avec laquelle je peux choisir parmi plusieurs (même msi, versions différentes) de MSI dans un répertoire, et je vais pouvoir installer ou désinstaller de cette application.
Je tire dans la liste des MSI, avec le chemin complet, avec
string MSILocation = @"C:\test\";
string[] MSIFiles = Directory.GetFiles(MSILocation, "*.MSI", SearchOption.TopDirectoryOnly);
A partir de là je remplir un ListView, et une fois que l'on est sélectionné i cliquez sur le bouton Installer. Mais quand je vais dans mon code d'installation, le verbatim semble bousiller.
string MSIname = lboMSIList.SelectedItem.ToString();
Process p = new Process();
p.StartInfo.FileName = "MSIEXEC.EXE";
p.StartInfo.Arguments = @"/i " + MSIname;
p.Start();
Même si ListView montre le fichier avec un seul / le résultat final est toujours avec double /
Quelque part là-dedans la perte de la chaîne littérale.
Si je change le code et exécuter .FileName = @ "msiexec.exe / i C: \ test \ test1.msi" il fonctionne très bien, mais je dois pouvoir choisir à partir d'une liste de noms de fichiers.
Toutes les idées?
La solution
string MSILocation = @"C:\test\";
string[] MSIFiles = Directory.GetFiles(MSILocation, "*.*", SearchOption.TopDirectoryOnly).Select(f => Path.GetFileName(f)).ToArray();
utilisation ci-dessus tableau MSIFiles
des noms de fichiers pour remplir le ListView
Path.Combine comme ci-dessous
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();