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