0

如果 7-Zip 尚未使用 Perl 脚本安装在我的 Win7 系统中,我正在尝试安装它。

# 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 Files\7-Zip\"");
}

它正在将我需要的文件(7z920.exe)下载到 PWD,但它没有安装。我不断收到命令行错误“拒绝访问”。即使我在命令行上以管理员模式运行脚本。

事实上,如果我只是在命令行上进入系统路径为 7z920.exe 并尝试调用 .EXE,我会得到相同的拒绝错误。它不会安装。但是如果我从文件夹中单击它,它允许我安装它?!为什么我可以双击并从文件夹安装,但不能从命令行从同一路径调用可执行文件而不安装它?

C:\>7z920.exe /S /D="C:\Program Files\7-Zip"
Access is denied.

你能帮助我吗?如何使用我的脚本安装它?或从批处理文件?

4

1 回答 1

0

当我运行该wget命令时,我得到一个名为7z920.exe@r=&ts=1392082197&use_mirror=softlayer-dal. 所以我会推荐

  1. 使用wget'-O选项强制下载的文件具有您想要的文件名。

    wget -O 7z920.exe http://downloads.sourceforge.net/project/...
    
  2. 我不知道你的 是什么PATH,所以在你的命令之前加上当前路径。

    system(".\\7z920.exe /S /D=...");
    
  3. 请注意如何在双引号内转义 Perl 中的特殊字符。尝试以下之一:

    system(".\\7z920.exe /S /D=\"C:\\Program Files\\7-Zip\"");
    system('.\7z920.exe /S /D="C:\Program Files\7-Zip"');
    
于 2014-02-11T06:45:42.297 回答