Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Download WiX ExePackage:无法向URL发送请求_Download_Wix_Burn - Fatal编程技术网

Download WiX ExePackage:无法向URL发送请求

Download WiX ExePackage:无法向URL发送请求,download,wix,burn,Download,Wix,Burn,使用wixburnv3.7.1224,我无法通过ExePackage获取远程有效负载。我通常会成功地使用类似的ExePackage元素,所以我想问题可能与我试图下载的特定URL有关 此特定的“exe URL”是 准确地说:交互式页面位于,单击下载锚“似乎”会直接生成上面列出的“exe URL”。我之所以说“似乎”,是因为我必须深入页面源代码以找到最终的“exe URL”,这可能是个问题 以下是感兴趣的WiX片段: <Fragment> <util:RegistrySea

使用wixburnv3.7.1224,我无法通过ExePackage获取远程有效负载。我通常会成功地使用类似的ExePackage元素,所以我想问题可能与我试图下载的特定URL有关

此特定的“exe URL”是

准确地说:交互式页面位于,单击下载锚“似乎”会直接生成上面列出的“exe URL”。我之所以说“似乎”,是因为我必须深入页面源代码以找到最终的“exe URL”,这可能是个问题

以下是感兴趣的WiX片段:

<Fragment>
    <util:RegistrySearch Id="TesseractLookup"
                         Variable="TESSERACT_REGVALUE"
                         Root="HKLM"
                         Key="SOFTWARE\Tesseract-OCR" 
                         Value="CurrentVersion" />   

    <PackageGroup Id="Tesseract">
        <ExePackage Compressed="no" 
                    PerMachine="yes" 
                    Permanent="yes" 
                    Vital="yes" 
                    Name="redist\tesseract-ocr-setup-3.02.02.exe"                    
                    InstallCondition="NOT TESSERACT_REGVALUE"
                    DetectCondition="TESSERACT_REGVALUE"
                    DownloadUrl="http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe">

            <RemotePayload Description="Tesseract-OCR - open source OCR engine" 
                           Hash="35C61604AAAC961C24CD28F959566B2E39244541" 
                           ProductName="Tesseract-OCR" 
                           Size="13525781"
                           Version="3.02.02.0" />
        </ExePackage>
    </PackageGroup>        
</Fragment>
根据Rob的建议(谢谢!),我安装了Fiddler并进行了调查。HTTP请求实际上是一个HEAD请求,服务器返回404

为了发现Fiddler应该看到的东西,我从另一个网站上调出了另一个软件,仍然是Burn,这是一个HEAD请求,然后是GET请求。 这是有道理的:就我所知有限,HEAD就像一个GET,但没有返回任何内容,主要用于启动实际传输之前的调整

然后,回到Tesseract网站,我和Fiddler伪造了一个全新的头部请求,如下所示:

HEAD http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe HTTP/1.1
Accept: */*
User-Agent: Burn
Host: tesseract-ocr.googlecode.com
Connection: Keep-Alive
Pragma: no-cache
响应是:“HTTP/1.1 404未找到”(就像对初始刻录请求的响应一样)

然后我伪造了一个GET请求(只是将“HEAD”替换为“GET”):

这次我得到了:“HTTP/1.1200 OK”,然后是13525781字节的内容。。。宾果

现在,我们只剩下:

  • 服务器如何响应404头请求,但正确响应类似的GET请求

  • 如果Tesseract Google站点在HEAD请求方面存在问题,有没有办法告诉Burn跳过HEAD请求并直接处理GET请求

  • 还有别的办法吗


  • 错误代码表明服务器正在返回404。尝试使用Fiddler查看HTTP请求的外观。我刚刚发现这是Google项目托管中的一个bug。看,这个bug已经5年没有修复了,所以我对快速修复没有信心@罗布:难道没有办法绕过Burn中的HEAD请求吗?我知道一个简单的“wget”就可以完成这个任务。问题是在Windows上并没有这样的wget或类似的实用程序(因为我想支持自Windows XP以来的所有Windows版本)。我应该在WiX包中嵌入一个基本的“wget二进制文件”,并在安装时使用这个二进制文件吗?有什么WiX/Burn的例子吗?用404响应HEAD并同时处理GET是web服务器维护人员出于安全原因实施的最佳实践之一。Wix不应该因为HEAD返回404而无法下载。
    HEAD http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe HTTP/1.1
    Accept: */*
    User-Agent: Burn
    Host: tesseract-ocr.googlecode.com
    Connection: Keep-Alive
    Pragma: no-cache
    
    GET http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe HTTP/1.1
    Accept: */*
    User-Agent: Burn
    Host: tesseract-ocr.googlecode.com
    Connection: Keep-Alive
    Pragma: no-cache