Привет мастерам стека переполнения.То, что я хочу попытаться решить, это обновить мое приложение WPF, у меня есть 3 приложения WPF, консольное приложение и служба Windows.Это было то, что мое приложение WPF вызывает мое консольное приложение, и мое консольное приложение отправляет команду службе Windows, моя служба Windows завершает процесс моего приложения WPF и выполняет обновление, а мое консольное приложение снова запускает мое приложение WPF.Теперь часть обновления в службе Windows работает, но у меня есть проблема с моим консольным приложением, так как приложение WPF вызывает мое консольное приложение каждый раз, когда пользователь открывает его, и оно зацикливается навсегда.Я знаю, что есть проблемы с моим консольным приложением.
Спасибо заранее мастерам.:)
так вот мой код.
try
{
_log.Info("Checking for new update.");
int wpfAppExecuteCommand;
string defaultpath = @"C:\Program Files (x86)\WPF Application";
string wpfAppInfoPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WPF\\WPFAppInfo.txt");
string[] txtFile = File.ReadAllLines(wpfAppInfoPath);
if (txtFile.Count() > 0)
{
_wpfAppInfo = txtFile[0];
switch (_wpfAppInfo)
{
case "WPF Application":
wpfAppExecuteCommand = 150;
_wpfSoftwareLocation = Path.Combine(defaultpath, "WPF Application.exe");
break;
default:
wpfAppExecuteCommand = 0;
break;
}
using (var service = new ServiceController("Update Checker API Service"))
{
if (service.Status == ServiceControllerStatus.Running)
{
_log.Debug("Service is running.");
service.ExecuteCommand(wpfAppExecuteCommand);
}
else
{
_log.Error("Service is not running.");
}
}
}
_log.Debug("Please wait..");
_stopwatch = new Stopwatch();
_stopwatch.Start();
bool checking = true;
while (checking)
{
if (_stopwatch.Elapsed > TimeSpan.FromMinutes(1))
{
if (!_oneMin)
{
_oneMin = true;
_log.Warn("Installing udpate is taking too long, please wait..");
}
}
else if (_stopwatch.Elapsed > TimeSpan.FromMinutes(5))
{
if (!_fiveMin)
{
_fiveMin = true;
_log.Warn("Installing udpate is taking too long, please wait..");
}
}
else if (_stopwatch.Elapsed > TimeSpan.FromMinutes(10))
{
if (!_tenMin)
{
_tenMin = true;
_isTimerOn = true;
_log.Warn(".");
}
}
if (File.Exists(_resultTxt))
{
_log.Trace("File exist. Read if is Success");
string[] lines = File.ReadAllLines(_resultTxt);
if (lines[0].Equals("Success"))
{
_log.Trace("Checks if the Software.exe exist");
if (File.Exists(_wpfSoftwareLocation))
{
string runMsiExecBatchFile = Path.Combine(_batchFileDefaultFolder, "RunMsiExec.bat");
//Deleting the batch file used by windows service.
if (File.Exists(runMsiExecBatchFile))
{
File.Delete(Path.Combine(_batchFileDefaultFolder, "RunMsiExec.bat"));
_log.Info("RunMsiExec.bat file deleted.");
}
else
{
_log.Warn("RunMsiExec.bat not found");
}
_openWpfApp = true;
checking = false;
_stopwatch.Stop();
}
else
{
_log.Error("Software.exe not exist");
_stopwatch.Stop();
checking = false;
}
}
else if (lines[0].Equals("The current version is up to date"))
{
_log.Info("The current version is up to date");
_openWpfApp = true;
checking = false;
_stopwatch.Stop();
}
else
{
_log.Error(lines[0]);
checking = false;
_stopwatch.Stop();
}
}
else
{
_log.Debug("Result text not found.");
}
}
if (_openWpfApp)
{
_log.Info("Open WPF application software.");
Process.Start(_wpfSoftwareLocation);
}
else
{
_log.Info("Unable to open the Wpf application software.");
}
catch (Exception ex)
{
_log.Error(ex);
}