Существует ли инструмент архивации (работающий в Windows), в котором я могу установить "атрибут выполнения" в файле архива или zip-файла?
У меня есть небольшой набор файлов, которые я разрабатываю в Windows, но мне нужно извлечь и запустить их в Linux. Одним из таких файлов является скрипт StartApp.sh. Я упаковываю файлы в виде zip-архива, передаю их моему администратору и прошу его вручную установить атрибут execute в StartApp.sh перед его запуском.
Существует ли инструмент архивации (работающий в Windows), в котором я могу установить "атрибут выполнения" в самом архиве или zip-файле? (Таким образом, при извлечении в Linux скрипт будет выполняться без ручных шагов.)
4 ответа
Насколько я знаю, такого инструмента не существует, если только вы не используете Cygwin для Windows, Linux-подобную среду для Windows.
Ваши другие варианты:
- Создайте скрипт распаковки для вашего почтового индекса, который установит разрешение на выполнение
- Используйте систему управления версиями для передачи файлов, а не zip
Если вы готовы проделать небольшую работу, для этого можно написать скрипт Python, используя zipfile
, Хитрость заключается в том, чтобы ZipInfo.external_attr
член для рассматриваемого файла перед использованием ZipFile.writestr()
добавить его в архив. Смотрите источник ZipFile.write()
для точной манипуляции вам нужно выполнить.
zinfo.external_attr = (st[0] & 0xFFFF) << 16L # Unix attributes
Я бы не рассчитывал найти утилиту архивирования, которая позволяет вам делать это изначально (если собственная файловая система этого не делает, маловероятно, что заставить приложение сделать это)... мой запасной вариант ответа для большинства вещей windows/linux кроссовер Cygwin
Используйте мою утилиту командной строки Windows zip_exec.zip , чтобы установить флаг исполняемого файла для unix и mac (проверено на файлах, созданных с помощью проводника Windows и 7zip). Источник cpp также доступен.