Я работаю над сценарием Python для сборки установщика в Windows.Я собираю все необходимые файлы, архивирую их и помещаю в папку с именем \temp
.Затем я вызываю WINZIPSE.EXE для создания самораспаковывающегося EXE-файла.
subprocess.call('"winzipse.exe" "filename.zip" -y -i .\\setup.ico -overwrite -setup -auto -c .\\stp.exe')
Она запускает команду, как и ожидалось, но следующая команда, которая пытается переместить полученный exe-файл в другую папку (\EXEs
), завершается неудачно:
copyfile(".\temp\filename.exe", ".\EXEs\filename.exe")
PermissionError: [Errno 13] В доступе отказано: '. \ Temp \ filename.exe'
Это происходит потому, что, очевидно, WINZIPSE.EXE завершает работу до того, как выходной файл будет выпущен.Это заставляет меня вручную пойти и извлечь файлы из .\temp
.Я попытался добавить ожидание перед командой copyfile
, но иногда ожидание длиннее, чем необходимо, иногда недостаточно.
Я могу придумать две вещи, которые могут решить проблему, но я не могу понять,как это сделать или даже если это возможно:
Передать расположение вывода в WINZIPSE.EXE, чтобы мне не нужно было копировать файлы вручную.Я не могу найти никакого переключателя для этого в файле справки.
Найдите способ узнать, когда файл будет выпущен, чтобы я мог продолжить сценарий оттуда.
Есть предложения?