WinZipSE.exe возвращается до того, как файл будет готов - PullRequest
0 голосов
/ 04 июня 2019

Я работаю над сценарием 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, но иногда ожидание длиннее, чем необходимо, иногда недостаточно.

Я могу придумать две вещи, которые могут решить проблему, но я не могу понять,как это сделать или даже если это возможно:

  1. Передать расположение вывода в WINZIPSE.EXE, чтобы мне не нужно было копировать файлы вручную.Я не могу найти никакого переключателя для этого в файле справки.

  2. Найдите способ узнать, когда файл будет выпущен, чтобы я мог продолжить сценарий оттуда.

Есть предложения?

...