我有一个包含非压缩文件的安装程序包。
<DirectoryRef Id="INSTALLLOCATION">
<Component Id="LocationConfig">
<File Id="LocationConfigFile"
Source="LooseFile.Config"
DiskId="2"
Vital="no"
Compressed="no" />
</Component>
</DirectoryRef>
此文件松散的目的是在安装之前进行编辑。这符合要求。
我有一个刻录链,指定松散文件作为松散文件包含在引导程序旁边。另请注意,使用SuppressLooseFilePayloadGeneration
允许手动将文件指定为松散的有效负载。
<Chain>
<MsiPackage SourceFile="MyInstaller.msi"
Visible="yes"
Vital="no"
SuppressLooseFilePayloadGeneration="yes">
<Payload Compressed="no" SourceFile="LooseFile.Config" />
</MsiPackage>
</Chain>
刻录日志如下所示:
[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Hash mismatch for path: C:\ProgramData\Package Cache\.unverified\payAC32431CF002C09E2F0B537A32ACA259
[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Failed to verify hash of payload: payAC32431CF002C09E2F0B537A32ACA259
[3860:38D8][2013-04-26T16:42:48]e310: Failed to verify payload: payAC32431CF002C09E2F0B537A32ACA259 at path: C:\ProgramData\Package Cache\.unverified\payAC32431CF002C09E2F0B537A32ACA259, error: 0x80091007. Deleting file.
[3860:38D8][2013-04-26T16:42:48]e000: Error 0x80091007: Failed to cache payload: payAC32431CF002C09E2F0B537A32ACA259
[33FC:3A54][2013-04-26T16:42:48]e314: Failed to cache payload: payAC32431CF002C09E2F0B537A32ACA259 from working path: C:\Users\Snixtor\AppData\Local\Temp\{c887e0cf-5038-4e15-95b1-8510d8c96b88}\payAC32431CF002C09E2F0B537A32ACA259, error: 0x80091007.
好的,哈希失败了,因为文件已经改变了。但是......我想允许用户更改文件。我可以用一个标准的安装程序包来做到这一点,所以我必须跳过什么来让它与引导程序一起运行?
我在WiX用户邮件列表中找到了this discussion。 Robs对“它应该正常工作”的回应听起来很有希望,但随后讨论似乎继续暗示它可能是一个错误?如果作者曾提出错误报告,我找不到它。
我考虑的另一种方法是从引导程序有效负载中完全排除该文件,然后在安装期间手动将其复制到MSI缓存路径,以便MSI可以找到它,尽管刻录将永远不会尝试验证它。但我看到的两个问题是:
答案 0 :(得分:5)
今天不支持。出于安全原因,Burn会在将所有内容放入缓存之前对其进行验证。您可以做的是在自定义Bootstrapper Application
中读取外部文件,并将结果存储为持久Variables
。这将是更多的工作,但Burn只是不会信任与构建时插入的安全哈希/签名不匹配的文件。
答案 1 :(得分:2)
我通过挂掉刻录引导程序设置的当前目录属性并将其与copyfile元素一起使用来解决同样的问题:
<Component Id="SettingsFile" Guid="...">
<CopyFile Id="Copy" Delete="no" DestinationDirectory="INSTALLFOLDER" SourceName="LooseSettings.xml" SourceProperty="CURRENTDIRECTORY" />
<RemoveFile Id="Remove" On="uninstall" Directory="INSTALLFOLDER" Name="LooseSettings.xml" />
</Component>
它可能存在一些问题,但我将安装程序写入其他人的规格并且似乎有效