How to include a modifiable loose file in WiX burn?
我有一个包含非压缩文件的安装包。
1 2 3 4 5 6 7 8 9 | <DirectoryRef Id="INSTALLLOCATION"> <Component Id="LocationConfig"> <File Id="LocationConfigFile" Source="LooseFile.Config" DiskId="2" Vital="no" Compressed="no" /> </Component> </DirectoryRef> |
此文件松散的目的是为了在安装前对其进行编辑。这可以按需要工作。
我有一个烧录链,指定松散文件作为松散文件包含在引导程序旁边。还要注意使用
1 2 3 4 5 6 7 8 | <Chain> <MsiPackage SourceFile="MyInstaller.msi" Visible="yes" Vital="no" SuppressLooseFilePayloadGeneration="yes"> <Payload Compressed="no" SourceFile="LooseFile.Config" /> </MsiPackage> </Chain> |
刻录日志如下所示:
1 2 3 4 5 | [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 用户邮件列表中发现了这个讨论。 Rob 对"它应该可以正常工作"的回应听起来很有希望,但随后讨论似乎继续暗示它可能是一个错误?如果作者曾经提出过错误报告,我找不到它。
我考虑的另一种方法是从引导有效负载中完全排除该文件,然后在安装过程中手动将其复制到 MSI 缓存路径,以便 MSI 可以找到它,尽管 burn 永远不会尝试验证它。但是我看到的两个麻烦是:
今天不支持此功能。出于安全原因,Burn 会在将所有内容放入缓存之前对其进行验证。您可以做的是读取自定义
我通过挂起烧录引导程序设置的当前目录属性并将其与 copyfile 元素一起使用来解决相同的问题,如下所示:
1 2 3 4 | <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> |
它很可能存在一些问题,但我正在根据其他人的规范编写安装程序,它似乎可以工作