views:

44

answers:

1

Hello,

I've encountered a problem regarding the Windows Installer program. I am using one of the popular install wizard programs, which use the MSI installation engine. It provides the differential patching capabilities, which is of course supported by the Windows Installer.

However, I've encountered a problem while trying to apply patch on WinXP (SP3) and 2003 (SP2).

I get the 1328 Windows Installer Error:

"Error applying patch to file [dll_name] It has probably been updated by other means, and can no longer be modified by this patch. For more information, contact your patch vendor. [Abort/Retry/Ignore]"

The dll_name is my dll file, and this error occurs only with this particular file.

It has a bit over 20 MB size, and the Total Commander plugin to compare files by content shows about 2,800 byte differences.

I've found in the depths of Internet that older versions of MSI had problem with large files with many changes in them, however I haven't been able to find any updates or hotfixes for XP to resolve this issue and make my patch work.

The only hotfix I have found was the : WindowsServer2003-KB983280-x86-ENU.exe for Windows 2003 Server, but it didn't make the patch work.

I have no more further ideas on how to resolve this issue and I would be glad to receive any help, which could lead to making this file patch properly.

+1  A: 

I've run into this one before using InstallShield's tools.

In our case, it was due to producing a byte-level patch, which essentially only contains the bytes that are different between the original release and the current build. The advantage to this approach is the patch is as small as possible.

The disadvantage to the approach is if another earlier patch had already been applied affecting one or more of the files in your latest patch, it can no longer piece together an updated binary, and you'll get the error message you mentioned.

We were able to overcome the issue in our product by selecting the "Include whole files" option in the patch IDE, and then we rebuilt the patch. This made the patch include the entire binaries.

Here's more info about the error:

http://kb.flexerasoftware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=Q107088&sliceId=

WeekendDiver
Thanks for the answer. However, it is not caused by an earlier patch. It works on all other systems (7, 2008, Vista).We would rather not go with the "include whole files", cause we would like to minimize the patch size.
Luzik
Do you guys deploy hotfixes (between patches) by manually copying binaries to the target system? That could create a situation where byte-level patches can fail, too.(If you have more than one product installer that shares some of the same components, you can run into issues, as well. For example, InstallerA has a patch that updates a dll that is also in InstallerB.)
WeekendDiver
Nope, there were no hotfixes between patches. We are testing it, installing patches one right after another. And it only fails on XP/2k3..
Luzik

related questions