Is there an archive tool (that runs on Windows) that I can set the "execute attribute" in an archive file or zip file?

I have a small set of files I develop on Windows but need to extract and run on Linux. One of those files is a script, StartApp.sh. I'm packaging the files as a zip archive, passing it to my admin, and asking him to manually set the execute attribute on StartApp.sh before running it.

Is there an archive tool (that runs on Windows) that I can set the "execute attribute" in the archive or zip file itself? (So when it is extracted on Linux the script will execute without manual steps.)


Solution 1:

As far as I know, there is no such tool, unless you use Cygwin on Windows, a Linux-like environment for Windows.

Your other options are:

  • Create an unpack script for your zip that will set the execute permission
  • Use a version management system to transfer files, rather than zip

Solution 2:

If you're willing to do a little bit of work, it is possible to write a Python script to do this, using zipfile. The trick is to frob the ZipInfo.external_attr member for the file in question before using ZipFile.writestr() to add it to the archive. See the source of ZipFile.write() for the exact manipulation you need to perform.

    zinfo.external_attr = (st[0] & 0xFFFF) << 16L      # Unix attributes