如果 7-Zip 尚未使用 Perl 脚本安装在我的 Win7 系统中,我正在尝试安装 7-Zip。
# Check if 7-Zip is installed or Not.
if (!(-e "C:\Program Files\7-Zip")){
print "n 7-Zip is not installed. Downloading ... n"
system("wget http://downloads.sourceforge.net/project/sevenzip/7-Zip/9.20/7z920.exe?r=&ts=1392082197&use_mirror=softlayer-dal");
print "n Installing.. n";
system("7z920.exe /S /D="C:Program Files7-Zip"");
}
它正在将我需要的文件 (7z920.exe) 下载到 PWD,但它没有安装。我不断收到命令行错误"访问被拒绝"。即使我在命令行上以管理员模式运行脚本。
实际上,如果我只是在命令行上将系统路径为7z920.exe并尝试调用.EXE,则会出现相同的拒绝错误。它不会安装。但是如果我从文件夹中单击它,它允许我安装它?!为什么我可以双击并从文件夹安装,但不能从命令行从同一路径调用可执行文件而不安装它?
C:>7z920.exe /S /D="C:Program Files7-Zip"
Access is denied.
你可以帮我吗?如何使用我的脚本安装它?还是从批处理文件?
当我运行该wget
命令时,我得到一个名为 7z920.exe@r=&ts=1392082197&use_mirror=softlayer-dal
的文件。所以我会推荐
-
使用
wget
的-O
选项强制下载的文件具有所需的文件名。wget -O 7z920.exe http://downloads.sourceforge.net/project/...
-
我不知道你的
PATH
里有什么,所以在你的命令前面加上当前路径。system(".\7z920.exe /S /D=...");
-
小心如何在双引号内转义 Perl 中的特殊字符。尝试以下方法之一:
system(".\7z920.exe /S /D="C:\Program Files\7-Zip""); system('.7z920.exe /S /D="C:Program Files7-Zip"');