Немного неясный тильда тильды "оператор", который вызывает скалярный контекст.
print ~~ localtime;
совпадает с
print scalar localtime;
и отличающийся от
print localtime;
Я без проблем использую второй метод. Просто убедитесь, что скачанная сборка правильно загрузилась. ;)
Запустите Update.exe и дайте ему сделать следующее:
Я делаю это без каких-либо проблем, поэтому он протестирован и работает в реальной среде примерно у 400 клиентов, как мы говорим.
То, как мы это делаем с помощью нашего внутреннего приложения:
Ярлык приложения указывает на средство обновления.
Редактировать: Упс - пропущен шаг 5.
Другой вариант: когда главное приложение хочет обновить себя, оно запускает новый процесс обновления и затем закрывается. Тем временем порожденный процесс ожидает закрытия основного приложения (исчезновение процесса), а затем обновляет все необходимые файлы (включая .exe). После этого просто перезапускается основное приложение и завершается процесс обновления.
В проекте, над которым я работал, было 2 исполняемых файла. Назовем их A и B.
Единственная причина, по которой существует A, - это начало B. Итак, когда B («настоящее» приложение) загрузило обновление, оно могло заменить A, если это было необходимо.
Если приложение было перезапущено (через A), A проверил, загрузил ли B какие-то файлы, и заменил их перед запуском B.