2014-02-11 187 views
0

我试图安装7-Zip,如果它已经没有安装在使用Perl脚本的Win7系统中。当我尝试从安装程序安装7zip时,我总是收到“拒绝访问”,我已经下载了

# 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. 

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

回答

0

当我运行wget命令时,我得到一个名为[email protected]=&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"'); 
    
相关问题