Я пытаюсь создать cmd-файл, который установит MSI, а затем выполнит этот cmd-файл с помощью кода C #.Код работает отлично, если я запускаю его, используя f5 или control + f5 из Visual Studio.
Однако, как только я упаковываю код в MSI-файл и устанавливаю его (это приложение wpf), когда он выполняет соответствующий код, он открывает окно команд, но не выполняет команду.Вместо этого он говорит: «C: \ Program не распознается как внутренняя или внешняя команда ...» Я знаю, что эта ошибка означает, что в пути к файлу нет кавычек, но это не так, как вы можете видеть под кавычкамиздесь.Также, если я перехожу в каталог программных файлов, файл Reinstall.cmd присутствует и содержит кавычки.Я даже могу дважды щелкнуть по сгенерированному файлу Reinstall.cmd, и он будет работать нормально.Что мне здесь не хватает ??
Вот код:
private string MSIFilePath = Path.Combine(Environment.CurrentDirectory, "HoustersCrawler.msi");
private string CmdFilePath = Path.Combine(Environment.CurrentDirectory, "Reinstall.cmd");
private void CreateCmdFile()
{
//check if file exists.
if (File.Exists(CmdFilePath))
File.Delete(CmdFilePath);
//create new file.
var fi = new FileInfo(CmdFilePath);
var fileStream = fi.Create();
fileStream.Close();
//write commands to file.
using (TextWriter writer = new StreamWriter(CmdFilePath))
{
writer.WriteLine(String.Format("msiexec /i \"{0}\"", MSIFilePath));// /quiet
}
}
private void RunCmdFile()
{//run command file to reinstall app.
var p = new Process();
p.StartInfo = new ProcessStartInfo("cmd.exe", "/k " + CmdFilePath);
p.Start();
p.WaitForExit();
}