Windows Installer (and by extension, tools that use/depend on it, such as MsiMsp.exe/PatchWiz.dll & the WiX toolset) use the published versioning rules published on MSDN. Those state that when FileVersion (aka AssemblyFileVersion for those building managed modules/assemblies) exists in a binary then that version and any language setting similarly set in the native version resource (which is where AssemblyFileVersion is surfaced) are the only things used to compare two files. "Unversioned" files are treated differently, and by default a versioned file always updates a non-versioned one.
The above is IMHO part of the reason that AssembyFileVersion and AssemblyVersion are two separate values: if you change the content of the assembly but require that other assemblies that bind to it will still bind, you maintain the AssemblyVersion and rev the AssemblyFileVersion. Conversely, if you change the interface or otherwise require a new binding, you change both versions. -Blair -----Original Message----- From: Christoph Vollmer [mailto:christoph.voll...@emendo.co.nz] Sent: Monday, May 16, 2011 10:48 PM To: wix-users@lists.sourceforge.net Subject: [WiX-users] Creating patch / AssemblyFileVersion Hi, Is MSIMSP looking only at the AssemblyFileVersion of the files? I get a patch that does not patching when the AssemblyFileVersion of original and patched version are the same. Install log says for the most files that only have new AssemblyVersion: "MSI (s) (88:3C) [16:44:59:719]: The file represented by File table key 'ASSEMBLY.dll.AAAAAAA' has no eligible binary patches" I did a change in one file to have something obvious. It says: "... MSI (s) (88:3C) [16:44:59:750]: Activating binary patch with sequence 10042 for file key EXECUTABLE.exe.AAAA MSI (s) (88:3C) [16:44:59:750]: The file represented by File table key EXECUTABLE.exe.AAAA' will be updated using the last binary patch and the file on disk (if possible). MSI (s) (88:3C) [16:44:59:750]: Chain for EXECUTABLE.exe. AAAA starts with the native source file. MSI (s) (88:3C) [16:44:59:750]: Activating binary patch with sequence 10042 for file key EXECUTABLE.exe.AAAA MSI (s) (88:3C) [16:44:59:750]: FALLBACK: The file represented by File table key EXECUTABLE.exe.AAAA' will be updated using a chain of baseline patches. ... MSI (s) (88:3C) [16:44:59:763]: Baseline: EXECUTABLE.exe.AAAA not touched in this transaction, verification required. MSI (s) (88:3C) [16:44:59:763]: Baseline: Existing file EXECUTABLE.exe.AAAA matches baseline from patch Native. MSI (s) (88:3C) [16:44:59:763]: Caching EXECUTABLE.exe.AAAA from C:\Program Files (x86)\COMPANY\ EXECUTABLE.exe for baseline 0 ..." The files does not get changed, although I really made a change to it. Is there somewhere a thorough explanation how MSIMSP determines the files to patch? Thanks, Christoph ---------------------------------------------------------------------------- -- Achieve unprecedented app performance and reliability What every C/C++ and Fortran developer should know. Learn how Intel has extended the reach of its next-generation tools to help boost performance applications - inlcuding clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Achieve unprecedented app performance and reliability What every C/C++ and Fortran developer should know. Learn how Intel has extended the reach of its next-generation tools to help boost performance applications - inlcuding clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users