这是我的ant脚本,希望将脚本从zip转换为可执行文件。这是我的工作:
<chmod dir="tmp/temp/test/bin" perm="ugo+rx" includes="**/*" />
<echo message="Making scripts exec: tmp/temp/test/bin" />
<exec executable="/bin/bash">
<arg value="tmp/temp/test/bin/pkg"/>
<arg value="validate"/>
</exec>
这不会使脚本可执行,而是会出现此错误:
Execute failed: java.io.IOException: Cannot run program "D:\tmp\temp\test\bin": CreateProcess error=5, Access is denied.
答案 0 :(得分:1)
无法运行程序“D:\ tmp \ temp \ test \ bin”:CreateProcess error = 5,Access被拒绝。
您是在Windows或Linux / Unix / MacOS下运行吗?
Windows在文件中没有可执行性的概念。相反,它将文件后缀与可执行程序相关联。例如,我可以将.py
后缀与python.exe
程序相关联。打开foo.py
将在Python可执行文件下运行该Python脚本。将名称更改为foo.pl
,并且脚本无法运行,或者如果您已将.pl
与perl.exe
关联,则会在Perl下运行脚本。
您可以将脚本的后缀添加到%PATHEXT%
环境变量中,这样您就可以输入文件名sans扩展名。例如,如果我将.py
添加到%PATHEXT%
,并在foo
中输入命令行终端,则Windows可能会查找foo.py
然后执行该操作。 (除非它首先找到foo.exe
或foo.bat
。然后会执行这些。)
<chmod>
任务在Windows下无效。在<chmod>
手册页中,它指出:
更改指定目录中的文件或所有文件的权限。 目前它仅在Unix或NonStop Kernel(Tandem)下有效 。
此外,并非所有Zip实现都可以存储文件权限和所有权信息 - 尤其是Unix样式权限和所有权。有些可以,有些则不可以。即使你想以某种方式表达文件对Unix系统的可执行性,它也可能不起作用。
我建议在脚本中包含<condition>
测试以测试操作系统。然后,您可以分离如果您使用的是Linux / Windows / MacOS,以及您希望在Windows系统上执行的操作。