Wix 修补程序包需要安装两次才能覆盖该文件?
我用WIX做了一个补丁包,配置如下:Wix 修补程序包需要安装两次才能覆盖该文件?,wix,windows-installer,msi-patch,Wix,Windows Installer,Msi Patch,我用WIX做了一个补丁包,配置如下: <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Patch AllowRemoval="yes" Classification="Update" Comments="Patch forv.3.5.0.0" Description="Upd
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="yes"
Classification="Update"
Comments="Patch forv.3.5.0.0"
Description="Updates to v.3.5.1.0"
DisplayName="Patch v.3.5.0.0-v.3.5.1.0"
MoreInfoURL=""
Manufacturer=""
TargetProductName="DDD">
<Media Id="5000" Cabinet="MyPatch.cab">
<PatchBaseline Id="MyPatch" />
</Media>
<PatchFamily
Id="MyPatchFamily"
Version="0.0.1.0"
Supersede="yes" >
</PatchFamily>
<TargetProductCodes Replace="yes">
<TargetProductCode Id="{0498A327-4DB6-47FD-91EB-F6B6496F2547}"/>
<TargetProductCode Id="{6318BD0F-1B46-4AA2-B490-EC33785998B6}"/>
<TargetProductCode Id="{2FF1A3B7-B781-42EA-9AE7-4A3816621B46}"/>
</TargetProductCodes>
</Patch>
</Wix>
这是第二次安装的日志
MSI (s) (A8:28) [09:05:01:778]: Executing op: FileCopy(SourceName=ihji0quu.con|DVStudio.exe.config,SourceCabKey=fileEE54A590D2CC2AE8647D5A5EB2C37313,DestName=DVStudio.exe.config,Attributes=4608,FileSize=5001,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=2020519154,HashPart2=1152590171,HashPart3=-1283096050,HashPart4=229789553,,)
MSI (s) (A8:28) [09:05:01:779]: File: C:\Program Files (x86)\DIAView\DVStudio.exe.config; Won't Overwrite; Won't patch; Existing file is unversioned but modified
MSI (s) (A8:D4) [09:06:04:078]: Executing op: FileCopy(SourceName=ihji0quu.con|DVStudio.exe.config,SourceCabKey=fileEE54A590D2CC2AE8647D5A5EB2C37313,DestName=DVStudio.exe.config,Attributes=4608,FileSize=5001,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=2020519154,HashPart2=1152590171,HashPart3=-1283096050,HashPart4=229789553,,)
MSI (s) (A8:D4) [09:06:04:079]: File: C:\Program Files (x86)\DIAView\DVStudio.exe.config; Overwrite; Won't patch; Existing file is unversioned and unmodified - hash doesn't match source file
MSI (s) (A8:D4) [09:06:04:079]: Source for file 'fileEE54A590D2CC2AE8647D5A5EB2C37313' is compressed
InstallFiles: File: DVStudio.exe.config, Directory: C:\Program Files (x86)\DIAView\, Size: 5001
MSI (s) (A8:D4) [09:06:04:081]: Re-applying security from existing file.
MSI (s) (A8:D4) [09:06:04:083]: Verifying accessibility of file: DVStudio.exe.config
MSI (s) (A8:D4) [09:06:04:084]: Using source file security for destination.
MSI (s) (A8:D4) [09:06:04:085]: Note: 1: 2318 2: C:\Config.Msi\8ba0779.rbf
为什么会这样?我想说,DVStudio.exe.config是在第一次安装之前(由用户或应用程序自己手动)修改的。在卸载修补程序时,此文件恢复为初始状态。在第二次安装时,可以更新此文件。是的,DVStudio。exe。安装后修改配置文件。但是,我后来修改了另外2个DLL,但仍然未能替换它们。修补程序使用特定版本x.y.z将assemby更新为特定版本x.y.z1。卸载时,版本为x.y.z1的程序集可以回滚到x.y.z,但如果您将此程序集修改为x.y.z2,它将无法恢复到x.y.z。原因是-将修补程序想象为增量(程序集x.y.z和x.y.z1的两个版本之间的二进制差异)-->程序集x.y.z+增量=程序集x.y.z1,但是组件x.y.z2-delta!=组件x.y.z。但是您的配置文件是一个无版本的文件,修补程序的工作方式不同。我想说的是,在第一次安装之前,DVStudio.exe.config已被修改(由用户或应用程序自己手动修改)。在卸载修补程序时,此文件恢复为初始状态。在第二次安装时,可以更新此文件。是的,DVStudio。exe。安装后修改配置文件。但是,我后来修改了另外2个DLL,但仍然未能替换它们。修补程序使用特定版本x.y.z将assemby更新为特定版本x.y.z1。卸载时,版本为x.y.z1的程序集可以回滚到x.y.z,但如果您将此程序集修改为x.y.z2,它将无法恢复到x.y.z。原因是-将修补程序想象为增量(程序集x.y.z和x.y.z1的两个版本之间的二进制差异)-->程序集x.y.z+增量=程序集x.y.z1,但是组件x.y.z2-delta!=组件x.y.z。但是您的配置文件是一个无版本的文件,修补程序的工作方式不同。