2013-03-07 83 views
1

使用WiX Burn v3.7.1224,我無法通過ExePackage獲取遠程有效負載。我通常成功地使用類似的ExePackage元素,所以我想這個問題可能與我試圖下載的特定URL有關。WiX ExePackage:無法將請求發送至URL

這種特殊的「EXE網址」是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,點擊那裏下載錨「似乎」導致的直接「執行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」命令,以及,在幾秒鐘的事。但燒傷失敗。 所有提供了相同的「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' 
+0

錯誤代碼表明服務器正在返回404。嘗試使用Fiddler來查看HTTP請求的樣子。 – 2013-03-08 08:46:40

回答

1

繼羅布建議,我安裝和使用Fiddler調查(謝謝!)。 HTTP請求實際上是一個HEAD請求,並且服務器正在返回404.

我從另一個站點(仍然使用Burn)抽取了另一個軟件,以便發現Fiddler應該看到的內容:這是一個HEAD請求,後跟GET請求。 這是有道理的:據我有限的知識,HEAD就像一個GET,但沒有內容返回,並且主要用於在啓動實際傳輸之前進行調整。

然後,回到超正方體網站,我使用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未找到」(就像響應於初始燒傷請求)

然後我結下了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 conten的字節T ...賓果!

所以,現在,我們只剩下:

  1. 服務器如何應對404 HEAD請求,但正確的類似GET請求?

  2. 如果Tesseract Google網站在HEAD請求方面有問題,有沒有辦法告訴Burn跳過HEAD請求並直接進行GET請求?

  3. 還有其他問題嗎?

+0

我剛剛發現這是在谷歌項目託管的錯誤。見http://code.google.com/p/support/issues/detail?can=2&start=0&num=100&q=HEAD&colspec=ID%20Type%20Status%20Priority%20Stars%20Owner%20Summary&groupby=&sort=&id=660此錯誤現在已經5年沒有固定了,所以我沒有信心快速修復! @Rob:沒有辦法繞過刻錄中的HEAD請求嗎? – user2132334 2013-03-12 09:29:27

+1

我知道,一個簡單的「wget的」可以做的工作。問題是,有在Windows上沒有這樣的wget或類似的實用程序(因爲我想支持自Windows XP所有Windows版本)。我應該在WiX捆綁包中嵌入一個基本的「wget二進制文件」,並在安裝時使用這個二進制文件?是否有任何可用的WiX/Burn示例? – user2132334 2013-03-13 08:31:08