169 похожих чатов

В .bat я прописал команду, которая запускает .exe файл, который

как раз таки и рааспаковывает .zip и переносит всё содержимое в папку с текующей программой
;код из uppdater.exe
ArcPath = C:\Users\%user%\Desktop\upd\update.zip
OutPath = C:\Users\%user%\Desktop
Shell := ComObjCreate("Shell.Application")
Items := Shell.NameSpace(ArcPath).Items
Items.Filter(73952, "*")
Shell.NameSpace(OutPath).CopyHere(Items, 16)

Вот так я запускаю bat и выхожу из основной программы:
run, C:\Users\%user%%tOZON%\Desktop\OzonHelper.upd\upd.bat
exitApp
теперь поясню в чём проблема и к чему эти 100500 файлов bat/exe:
Мы скачали из интернета новую версию на рабочий стол в новую папку - всё норм.
А как заменить старую версию на новую, если из-за запущенного процесса перенос запрещён?
Ответ: при полном скачивании новой версии происходит процесс закрытия основной программы и запуск bat, который в свою очередь запускает другой exe, который и копирует все файлы.
;я не делаю прямой запуск одного exe (updater.exe) из основной программы ибо он так не запускается из-за системы учёток.. крч только через костыли в виде bat работает.
Вот только копирование всё равно не происходит.. хотя основная программа закрыта, а bat и exe файлы, которые делают манипуляции с заменой файлов находятся в другой папке (там же, где и новая версия).
И самое смешное, что если я закрываю эту ошибку и уже от руки запускаю этот bat, то перенос происходит без ошибок. Как это исправить?

2 ответов

32 просмотра

Похоже, что проблема может быть связана с тем, что процесс еще не полностью завершился, когда вы пытаетесь копировать новые файлы. Это может происходить, если процесс еще не освободил все свои ресурсы, даже после того, как вы вызвали exitApp. Возможно, вам стоит добавить некоторую задержку в ваш .bat файл перед запуском updater.exe. Это может дать вашему приложению дополнительное время для полного завершения перед тем, как начнется процесс копирования. Вы можете сделать это с помощью команды timeout, как показано ниже: bat timeout /t 5 start C:\Users\%user%\Desktop\upd\updater.exe В этом примере timeout /t 5 означает, что будет добавлена задержка в 5 секунд перед запуском updater.exe. Если это не поможет, возможно, вам придется более детально исследовать, что именно блокирует файлы. Возможно, вам придется использовать инструменты для мониторинга процессов или файловой системы, чтобы увидеть, что происходит.

% A_UserName-Atroshkin Автор вопроса
Владимир
Похоже, что проблема может быть связана с тем, что...

Задержка не помогла, помогло другое: Я сначала распаковал zip в папку с bat, а потом копировал её на рабочий стол. Прямиком на рабочий стол распакавать нельзя, как минимум потому, что там уже есть такая папка (или из-за чего-то другого)

Похожие вопросы

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта