Запустить независимый процесс (сохранить после выхода из программы) - PullRequest
0 голосов
/ 06 мая 2019

Я разрабатываю программу для обновления всех других программ, разработанных моим отделом.

Я хочу, чтобы эта программа могла обновляться сама, поэтому мне нужно заменить запущенный .exe наодин, который я получаю с моего FTP-сервера.

Я пытался создать пакетный файл, который убивает процесс моего приложения, копирует «новый» исполняемый файл в путь моего приложения и затем запускает его.

Проблема в том, что когда пакетный файл убивает процесс, он не запускает другие команды, он уничтожается «вместе» с приложением.

Возможно ли запустить этот процесс втак, что это не зависит от моего приложения?

Это код командного файла:

@ECHO OFF
@BREAK OFF
taskkill /f /t /im "MyApplication.exe"
rmdir /S /Q "%APPDATA%\DepartmentTools\WorkplaceUpdate\"
mkdir "%APPDATA%\DepartmentTools\WorkplaceUpdate\"
copy "%APPDATA%\DepartmentTools\MyApplication.exe" "%APPDATA%\DepartmentTools\WorkplaceUpdate\MyApplication.exe"
"%APPDATA%\DepartmentTools\WorkplaceUpdate\MyApplication.exe"

1 Ответ

1 голос
/ 06 мая 2019

Вы передаете флаг / t, , который

/ t Завершает указанный процесс и любые дочерние процессы , запущенные им.

Итак, у нас есть

  1. Приложение запускается.
  2. Приложение запускает скрипт обновления cmd.exe.
  3. cmd.exe завершает работу приложения и его дочерних процессов.таким образом завершая себя.

Предполагая, что приложение само знает, когда оно обновляет себя, оно может (и должно) чисто завершить свои дочерние процессы перед тем, как уничтожить себя.Когда приложения обновления и обновления являются разными приложениями, это, очевидно, не будет проблемой.

Поэтому просто не устанавливайте этот флаг или используйте его только при обновлении других приложений, и все должно работать.

PS: Хотя самообновление приложения таким образом во время его выполнения не является совершенно необоснованным и, по крайней мере, очень простым, использование такого подхода для обновления другого приложения может быть опасным, поскольку вы принудительно завершаете работу.они могут привести к противоречивым / частично выполненным результатам и другим проблемам в зависимости от того, насколько надежны эти другие приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...