Я пытаюсь создать быстрый автообновление в Perl Windows. Я заметил, что когда я вызываю cpanp
для установки обновления пакета, он не может установить новую версию скрипта, потому что скрипт в настоящий момент запущен. Сейчас я звоню cpanp
с CORE::system()
. Если я позвоню cpanp
с exec()
, это освободит исполняемый файл для замены? Или Windows держит его привязанным, хотя выполнение полностью перевернуто на cpanp
?Автоматическое обновление сценария Windows, заменяющего текущий исполняемый файл exec?
В настоящее время, мой поток процесс выглядит примерно так,
- Скачать META.yml с сервера
- PARSE из версии META.yml
- сравниваемый с текущим
$VERSION
- Если ток версия ниже, сгенерируйте строку версии, используя данные в META.yml
- Ge nerate URL-адрес для пакета с использованием хоста/пути fo META.yml и информации о версии/данных
- Сообщите об этом пользователю
- Spawn
cpanp
для запуска обновления по URL.
- Если текущая версия такая же
- не делать ничего
- Если ток версия ниже, сгенерируйте строку версии, используя данные в META.yml
бы system()
вести себя иначе, чем exec()
на Win32 в отношении замены исполняемого файла? В Linux он работает как разработанный.
Вы говорите о ** Perl ** Исполняемом? –