MSIパッケージを使用して現在展開されているプログラムのMSPパッチを作成しようとしています。私はWiX documentationの例に基づいて、次の(わずかに修正された)WiXコードを使用してPCPファイルを正常に生成することができました。MSIから圧縮を削除しようとするとファイルが消えます
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<PatchCreation
Id="D25F1136-2BEE-4A82-9236-7261067D4BDC"
CleanWorkingFolder="yes"
OutputPath="XYZ.pcp"
WholeFilesOnly="yes"
>
<PatchInformation />
<PatchMetadata
AllowRemoval="no"
Classification="Major Upgrade"
Description="XYZ Update"
DisplayName="XYZ Update"
ManufacturerName="XYZ"
MoreInfoURL="http://www.contoso.com/qr/XYZ.html"
TargetProductName="$(var.ProductName)"
/>
<Family Name="PrsnPtch">
<UpgradeImage Id="LatestImage" SourceFile="new_msi_dir\XYZ.msi">
<TargetImage Id="OldImage" Order="1" SourceFile="old_msi_dir\XYZ.msi" />
</UpgradeImage>
</Family>
<PatchSequence PatchFamily="XyzPatch" Supersede="yes" />
</PatchCreation>
</Wix>
とmsimsp.exeを呼び出すように設定するビルドスクリプト。
msimsp -s "%PCPDIR%\XYZ.pcp" -p "%PCPDIR%\XYZ.msp" -l "%PCPDIR%\patch.log"
は残念ながら、上記のコマンドは次のエラーメッセージで失敗します
ERROR: UpgradedImages.MsiPath '[...]\XYZ.msi' is marked as having compressed files (PID_WORDCOUNT property of Summary Information stream). PatchWiz is unable to patch files compressed in a cabinet.
だから私はその WXSファイルでMediaTemplate elementにがCompressionLevel属性を追加することにより、MSIの非圧縮バージョンを構築してみました。
<MediaTemplate EmbedCab="yes" CompressionLevel="none" />
MSI自体を構築する場合、これは成功です。結果のファイルは、圧縮されていない元のファイルのサイズの3.7倍であり、7-Zipは圧縮方法が「なし」のファイルをその中に示します。そして、私はVMにプログラムを正常にインストールすることができました。
問題は、まだ msimspの実行中に「PatchWizはファイルをキャビネットに圧縮できない」というエラーが表示されることです。
犯人がWXS Package elementで圧縮属性のようだ:
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine"
Description="XYZ Installer"/>
だから、当然、私は(このWXSファイルへなしその他の変更で)Compressed="no"
にCompressed="yes"
を変えてみました。 msimspがエラーを出さないようにする限り、これは「機能します」。
しかし、MSIファイルが "空"で、サイズが約3.6 MBからわずか280 KBに縮小されているという重大な問題が発生しています。 7-Zipでアーカイブを表示すると、インストールするファイルが含まれていないことがわかります。 Orcaで表示すると、値DiskId = 1とLastSequence = 19が含まれていて、キャビネット列には何も含まれていない行が1行あります(元のMSIには自動生成された「#cab1.cab」があります)。
なぜ圧縮属性を変更すると、CABファイルが失われるのですか?どうすれば修正できますか?
私は、あなたが話していないことを前提にしていないかもしれませんが、管理イメージを使用してパッチを作成することは、製品のインストール方法とは関係ありません。 – PhilDW
それは感謝します、ありがとう。 (コメントは削除されました。) –