0

I'm generating an msp out of two msi files (New & Old) using the patch design, but I have problem that my msp generated is almost 3/4 of the size of the msi. Is there any reason for that? normally the msp should contain only the difference, but when I install the patch, I can see that its carrying all the files of the msi within.

Thanks in advance.

1 Answers1

0

Fom the Windows Installer view, which I assume InstallShield has support for in this area...

There should be an option in the patch build for "include whole files" or not. If you are using that then yes, the patch will be big if there are a lot of files being patched. The other way is a delta between each binary files and could potentially be smaller. I suspect that you may be including whole files.

How can you "see that the patch is carrying all the files"? I don't understand what you are getting at. If 100 files have changed between the first MSI and the latest then there will be 100 files targeted to be patched whether the patch includes whole files or not.

If you are rebuilding every file BUT only a few actually NEED to be in the patch then there's an option for that somewhere - to ignore missing files when the patch is generated. The issue is that a rebuild alters internal dates and perhaps other parts of the binary even though the code and version haven't changed. That's why ignoring missing files is an option. Make sure that the patch generation only uses the files that you want patches for in the administrative images used for the patch generation. The patch generation process requires two admin images of both MSI aetups, which is basically the MSI file and all the files extracted to a location somewhere. The files that you don't want to patch can be manually removed from the new administrative image if you have the ignore missing files option set. In the PCP file that is used in patch generation its IgnoreMissingSrcFiles here: https://msdn.microsoft.com/en-us/library/aa372066(v=vs.85).aspx

PhilDW
  • 20,260
  • 1
  • 18
  • 28
  • Thank you for your reply. The include whole files option is set to No. I know that its carry all files through installing the msi and then delete all the files installed and then install the patch, and if compare the amount of file before and after its the same. Where is that option to allow only Needed files to be included, I have ignore missing files enabled. Yes our build server changes in modified data and binary files content(Obfuscation) and the file version is still the same. I didn't get this point"Make sure that the patch generation only uses the files that you want patches" How to? – Fouad Roumieh May 15 '15 at 06:06
  • I cannot delete files manually because its an automated process running on the server using perl script the uncompress both msi and generate the msp via msiexec commands. Also its very difficult for me to verify what should be patched and what not I'm expecting this to be done by IS. However I agree that binary files are changed on each build because we apply obfuscation process on each build, but the problem is that there are some xml or txt file which are still the same content and modified date being patched, do you think the test I did above for the msp files is correct for verification? – Fouad Roumieh May 16 '15 at 04:58
  • Update: I've opened both msis in msi Diff tool and I've noticed that each file has a status of Deleted and Added, I think it is somehow comparing the component name and not the actual file. Because all the msi file are grabbed via the "Dynamic Linking" option, do you have any interpretation for that? – Fouad Roumieh Jul 08 '15 at 09:42
  • My investigation showed that on our build server where we are generating the files, there are a new folder created each night with a different name, and the msi file are linking to those (paths virtual and static ), so with each new path created it is considered as a new component and that the old one is deleted. Is there a solution to compare the files with the file name not the path? – Fouad Roumieh Jul 08 '15 at 11:51