У нас есть приложение .NET, которое мы распространяем среди наших пользователей через установочный пакет MSI. У нас есть приложения на C ++, которые запускаются каждое утро, чтобы определить, устарела ли пользовательская копия приложения, и если да, то мы вытащим новый MSI и установим его. Если приложение запущено, нам нужно закрыть его, чтобы мы могли выполнить обновление.
Наша проблема в том, что время от времени кажется, что windows «теряет» наше приложение. Он не сообщит о том, что процесс запущен - хотя это так. Это позволит нам перезаписать или даже удалить используемый исполняемый файл, не удаляя приложение.
Может быть, это что-то общее, но мы не можем понять, что происходит! У кого-нибудь есть понимание этой ситуации?
Похоже, создается временная копия нашего приложения, и программа запускается из этого. Но если это так, то почему это не происходит постоянно?
EDIT:
В нашей программе мы используем функцию «EnumProcesses» из Platform SDK, PSAPI.dll, для перечисления всех запущенных процессов.