Hi Phil, On Thu, Mar 26, 2015 at 4:22 PM, Phil Wilson <phildgwil...@gmail.com> wrote:
> An early sequencing of the upgrade (such as after InstallIntialize) is > more or less the same as uninstalling the old product then installing > the new one. Guids don't really matter much. > > After InstallExecute isn't like that. As an example: say every file > has a guid and a version or hash. The guid is reference counted up at > install time. Installing the new product after InstallExecute means > installing new files over old files following file replacement rules > (versions, hashes etc) and incrementing the ref count for the guids > being installed (which matters only for files in the same location). > Then uninstall the old product, counting down its guid ref counts. If > all the files are the same and have matching guids then they all ref > count down to one and the files stay behind. If you don't follow > component rules then you install different guids even though they have > the same file name. When the old product is uninstalled those guids > count down to zero and the files are removed even though you just > installed them. Sometimes it helps to think of it all as installing > ref counted guids, not files, registry entries etc. This may be what > you're seeing. > > So in this case there is no "newer installation", there are only file > replacement rules, and guids that are no longer in use being deleted, > so the same guids must be used for the same files for this type of > upgrade to be successful. The same is true of patches, minor > upgrades. > Thanks for this hint. I've opened the old version .msi and the new version .msi in Orca and indeed, the GUIDs were different for most files. As it happens our WiX code uses Heat to gather the list of files to install, which happens to generate the WiX XML for the components. We happen to use the options "-nologo -gg -sfrag -suid -template fragment -dr ProgramFilesFolder" when calling heat.exe, and according to documentation -gg generates new GUIDs. This at least explains the current behavior. Should I remove the -gg option parameter? Is there a way to have the GUID based on hash(project_name + filename_)? Cheers, Tobias ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users