非圧縮ファイルを含むセットアップ パッケージがあります。
<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 ユーザーのメーリング リストで見つけました。「うまくいくはずだ」というロブの反応は有望に聞こえますが、その後、議論はバグである可能性があることを示唆するように進んでいるようです? 著者がバグ レポートを提出したことがあるとしても、私はそれを見つけることができません。
私が検討した別の方法は、ファイルをブートストラップ ペイロードから完全に除外し、インストール中に手動で MSI キャッシュ パスにコピーして、MSI がファイルを見つけられるようにすることでしたが、burn はファイルを検証しようとしません。しかし、私が目にする2つの問題は次のとおりです。
- ブートストラップ内からキャッシュ パスを検出する方法がわかりません。
- パスがわかっている場合でも、ファイルをコピーするにはブートストラップを昇格させる必要があります。それはショーストッパーではないかもしれませんが、私はそれが難しいと判明するかもしれないとこっそり疑っています.