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を返します。

Fiddlerが何を表示するかを見つけるために、別のサイトから別のソフトウェアをまだBurnを使用してプルしました。これは、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.1404が見つかりません」(最初の書き込みリクエストへの応答と同様)

次に、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. サーバーはどのようにしてHEADリクエストに404応答しますが、同様の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 に答える