2

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

这个特定的“exe URL”是http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe

准确地说:交互式页面位于http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe并点击下载锚点“似乎”会导致上面列出的直接“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>

我在几秒钟内就成功使用了我尝试过的浏览器(Firefox 和 Internet Explorer)以及一个基本的“wget”命令。但是Burn失败了。所有这些都提供了相同的“exe URL”。为了以防万一,我什至尝试禁用防火墙和防病毒软件,但无济于事。

你对可能发生的事情有任何暗示吗?

以下是安装日志中的相关行:

[27F8:1FE8][2013-03-07T08:36:46]w343: Prompt for source of package: tesseract_ocr_setup_3.02.02.exe, payload: tesseract_ocr_setup_3.02.02.exe, path: D:\soft\audiveris\dist\redist\tesseract-ocr-setup-3.02.02.exe
[27F8:1FE8][2013-03-07T08:36:46]i338: Acquiring package: tesseract_ocr_setup_3.02.02.exe, payload: tesseract_ocr_setup_3.02.02.exe, download from: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
[27F8:1FE8][2013-03-07T08:36:47]e000: Error 0x80070002: Failed to send request to URL: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
[27F8:1FE8][2013-03-07T08:36:47]e000: Error 0x80070002: Failed to connect to URL: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
[27F8:1FE8][2013-03-07T08:36:47]e000: Error 0x80070002: Failed to get size and time for URL: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
[27F8:1FE8][2013-03-07T08:36:47]e000: Error 0x80070002: Failed attempt to download URL: 'http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe' to: 'C:\Users\herve\AppData\Local\Temp\{7715fbb6-5bc5-442f-86a0-655fa082bd7d}\tesseract_ocr_setup_3.02.02.exe'
[27F8:1FE8][2013-03-07T08:36:47]e000: Error 0x80070002: Failed to acquire payload from: 'http://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe' to working path: 'C:\Users\herve\AppData\Local\Temp\{7715fbb6-5bc5-442f-86a0-655fa082bd7d}\tesseract_ocr_setup_3.02.02.exe'
4

2 回答 2

2

根据 Rob 的建议(谢谢!),我安装并使用 Fiddler 进行了调查。HTTP 请求实际上是一个 HEAD 请求,服务器返回 404。

我从另一个站点提取了另一个软件,仍然使用 Burn,以发现 Fiddler 应该看到的内容:它是一个 HEAD 请求,然后是一个 GET 请求。这是有道理的:据我所知,HEAD 类似于 GET,但没有返回内容,主要用于在启动实际传输之前进行调整。

然后,回到 Tesseract 站点,我用 Fiddler 伪造了一个全新的 HEAD 请求,如下所示:

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 Not Found”(就像对初始刻录请求的响应一样)

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

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

而这一次,我得到了:“HTTP/1.1 200 OK”,然后是 13525781 字节的内容...... BINGO!

所以现在,我们剩下:

  1. 服务器如何响应 404 HEAD 请求但正确响应类似的 GET 请求?

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

  3. 还有其他修复吗?

于 2013-03-08T12:13:47.340 回答
0

这是一个已知问题,应该在 v4.0 中得到修复 - https://github.com/wixtoolset/issues/issues/6331

于 2022-01-13T15:09:30.487 回答