cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Nio_the_Champ_2
Level 6

Patch not saving files in basline cache.

I am facing an issue with patching. All of my patched files are not going to the baseline cache. My verbose debug log shows me this:

Action 2:26:46: PatchFiles. Patching files
MSI (s) (08:70) [02:26:46:843]: Executing op: ProgressTotal(Total=48376213,Type=0,ByteEquivalent=1)
MSI (s) (08:70) [02:26:46:843]: Executing op: ChangeMedia(,MediaPrompt=Please insert the disk: ,MediaCabinet=PCW_CAB_Family1,BytesPerTick=0,CopierType=2,ModuleFileName=C:\WINDOWS\Installer\aeda7d.msp,,,,,)
MSI (s) (08:70) [02:26:46:843]: Executing op: CacheBaselineFile(Baseline=0,FileKey=symaccess.1,FilePath=C:\Program Files\EMC\SYMCLI\Man\Man1\symaccess.1,,Existing=0)
MSI (s) (08:70) [02:26:46:843]: Baseline: symaccess.1 not touched in this transaction, no cache created
MSI (s) (08:70) [02:26:46:843]: Executing op: PatchApply(PatchName=symaccess.1,TargetName=C:\Program Files\EMC\SYMCLI\Man\Man1\symaccess.1,PatchSize=331,TargetSize=21004,PerTick=0,,FileAttributes=16384,PatchAttributes=0,CheckCRC=0)
PatchFiles: File: symaccess.1, Directory: C:\Program Files\EMC\SYMCLI\Man\Man1\, Size: 21004
MSI (s) (08:70) [02:26:46:843]: Re-applying security from existing file.
MSI (s) (08:70) [02:26:46:843]: SOFTWARE RESTRICTION POLICY: Verifying object --> 'C:\WINDOWS\Installer\aeda7d.msp' against software restriction policy
MSI (s) (08:70) [02:26:46:843]: Note: 1: 2262 2: DigitalSignature 3: -2147287038
MSI (s) (08:70) [02:26:46:843]: SOFTWARE RESTRICTION POLICY: C:\WINDOWS\Installer\aeda7d.msp is not digitally signed
MSI (s) (08:70) [02:26:46:859]: SOFTWARE RESTRICTION POLICY: C:\WINDOWS\Installer\aeda7d.msp is permitted to run at the 'unrestricted' authorization level.
MSI (s) (08:70) [02:26:46:859]: Note: 1: 2318 2: C:\Config.Msi\PF230.tmp
MSI (s) (08:70) [02:26:46:953]: Note: 1: 2302 2: 0
MSI (s) (08:70) [02:26:46:968]: Note: 1: 2302 2: 21004
MSI (s) (08:70) [02:26:47:046]: Verifying accessibility of file: symaccess.1
MSI (s) (08:70) [02:26:47:046]: Verifying accessibility of file: symaccess.1
MSI (s) (08:70) [02:26:47:046]: Note: 1: 2318 2: C:\Program Files\EMC\SYMCLI\Man\Man1\symaccess.1
MSI (s) (08:70) [02:26:47:046]: Verifying accessibility of file: symaccess.1
MSI (s) (08:70) [02:26:47:046]: Note: 1: 2318 2: C:\Program Files\EMC\SYMCLI\Man\Man1\symaccess.1
MSI (s) (08:70) [02:26:47:046]: Note: 1: 2318 2: C:\Program Files\EMC\SYMCLI\Man\Man1\symaccess.1
MSI (s) (08:70) [02:26:47:046]: File will have security applied from OpCode.
MSI (s) (08:70) [02:26:47:046]: Executing op: CacheBaselineFile(Baseline=0,FileKey=symaccess.exe,FilePath=C:\Program Files\EMC\SYMCLI\bin\symaccess.exe,,Existing=0)
MSI (s) (08:70) [02:26:47:046]: Baseline: symaccess.exe not touched in this transaction, no cache created
MSI (s) (08:70) [02:26:47:046]: Executing op: PatchApply(PatchName=symaccess.exe,TargetName=C:\Program Files\EMC\SYMCLI\bin\symaccess.exe,PatchSize=13768,TargetSize=204800,PerTick=0,,FileAttributes=16384,PatchAttributes=0,CheckCRC=0)
PatchFiles: File: symaccess.exe, Directory: C:\Program Files\EMC\SYMCLI\bin\, Size: 204800

-------------------------------------------
maxpatchcacheseize=25% (that's more the enough I think)
Labels (1)
0 Kudos
(4) Replies
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Have you tried including these files are whole files in your patch instead of delta patches?
0 Kudos
Nio_the_Champ_2
Level 6

Nop I do not want to include the whole file.. it defeats the purpose of patch. I would rather have a minor upgrade in that case..
0 Kudos
Nio_the_Champ_2
Level 6

So I figured out the issue my self. Looks like a bug in Windows Installer.
The previous developer in my team checked "Always Overwrite" attribute for all the file in package. What this did internally is that it made the version of all the files as: 65535.0.0.0

So while msi prepares the package for baseline it picks up this version i.e. 65535.0.0.0.

MSI (c) (38:80) [02:23:48:359]: Baseline: First patch for symaccess.exe, saving native info.
MSI (c) (38:80) [02:23:48:359]: Baseline: symaccess.exe version for baseline at patch Native: 65535.0.0.0, 1033, 208896.


However at the time of caching it checks for the actual file version:

MSI (s) (08:70) [02:26:44:578]: Baseline: symaccess.exe not touched in this transaction, verification required.
MSI (s) (08:70) [02:26:44:578]: Baseline: Existing symaccess.exe version 1.0.0.1 does not match any baseline. Will not be cached.


So that's the problem. I think this is a bug with windows installer. While making entry for baseline it picks up the version mentioned in "File table". However when it comes to picking up files for caching, it tries to pick up the version from physical file. The end result is that files do not get cached in baseline image and hence during patch uninstall, require the source..
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

Using the always overwrite option could be causing MSI's baseline caching mechanism to skip caching the files since their versions in the File table do not match the physical files copied to the machine. You could try testing without using always overwrite on these files to see if the behavior changes. Unfortunately, the only information available on how MSI determines what will be cached does not detail a scenario like the one you are seeing (see Reducing Patch Size).

The other thing to be aware of is using always overwrite has the same risk of using 'a' in the REINSTALLMODE property in that it can cause Windows Installer to require the original source media at any time (not just patch uninstall). For example, a file could be included in a base package, it's version set to always overwrite, and the file is not included in a subsequent patch. If a repair of the product is performed, or a patch is applied to the product, and the original source media is not currently available, MSI may require the original source since it will always try to install this file regardless of the file state on the machine. Note that the InstallShield Best Practice validator ISBP14 performs a check against File table versions and actual file versions, and would flag this case.
0 Kudos