Доброго времени суток.
Есть работающее приложение myapp.exe которое качает с сервера новую версию и кладет рядом с myapp.exe под именем. myapp.update .
Каким способом можно подменить myapp.exe на новый myapp.exe?
Попытался сделать дополнительный проект.
В конце главный проект выполняет
Updater.MainWindow update = new Updater.MainWindow();
update.Show();
System.Diagnostics.Process.GetCurrentProcess().Kill();
Но окно главного проекта остается открытым но во фризе.
Проект в котором прописан Update не появляться вплоть до последнего действия и тут же закрывается
public MainWindow()
{
InitializeComponent();
Thread.Sleep(5000);
UpdateNow();
}
public void UpdateNow()
{
bool oldapp = false;
bool newapp = false;
Changes.Content = "Идет проверка целостности файлов...";
string path = System.IO.Directory.GetCurrentDirectory();
string[] allFoundFiles = Directory.GetFiles(path, "myapp.exe");
foreach (string file in allFoundFiles)
{
oldapp = true;
}
string[] allFoundFiles1 = Directory.GetFiles(path, "myapp.update");
foreach (string file in allFoundFiles)
{
newapp = true;
}
if (oldapp == true && newapp == true)
{
Changes.Content = "Все файлы на месте. Идет применение настроек...";
Thread.Sleep(5000);
try
{
FileInfo fi1 = new FileInfo(path + @"\myapp.exe");
fi1.Delete();
}
catch (Exception ex)
{
Changes.Content = ex.ToString();
}
try
{
System.IO.File.Move(path + @"\myapp.update", path + @"\myapp.exe");
Changes.Content = "Все готово к работе :)";
System.Diagnostics.Process.Start(path + @"/myapp.exe");
}
catch (Exception ex)
{
Changes.Content = ex.ToString();
}
}
else
{
Changes.Content = "Что - то не так";
}
}
}
Мало того что Update не дает признаков жизни. Появляется ошибка "Отказано в доступе " при удалении старого myapp.exe . И почему то закрывается само по себе.
Ответ
Например, вы можете написать маленькое приложение, которое скопирует myapp.update в myapp, и запустить его перед выходом из основного приложения. Вспомогательное приложение пускай дождётся, пока основное завершит работу, и потом уже переносит.
Комментариев нет:
Отправить комментарий