On Mon, Jan 12, 2015 at 03:42:56PM +0000, Daniel P. Berrange wrote: > On Mon, Jan 12, 2015 at 04:39:52PM +0100, Fabiano Fidêncio wrote: > > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > > > It turned out that not only the current MSI broke the "component rule", > > but also that our files are not versionized correctly. Windows Installer > > applies some file versioning rules before replacing a file > > http://msdn.microsoft.com/en-us/library/aa368599%28v=vs.85%29.aspx > > > > Since msitools doesn't extract version from files and populate the Version > > field of the File table, it "usually" keep the current file installed. > > > > It's practically impossible to rely on version information from > > files (from a quick look, only 5% of the files are versionized and even > > less correctly, libgcrypt seems to do non-monotonic buildid for example) > > > > So the rule that applies when files are not versionized is to check the > > file hash, and the modified date. File hash was added recently in > > msitools, but doesn't apply when the installed file itself has a > > version. > > Fun, and there I was thinking RPM versioning was difficult. Windows > takes the pain to a whole extra level. > > > > > In order to solve the above problems, it's simpler to just have a > > different installation prefix. Windows Installer will see files with > > different component guid, and won't be checking any file update rule. I > > have verified the upgrade is working, not leaving any file behind and > > updating registry correctly with this solution. Until the files are > > correctly versionized, it looks like the only sensible thing to > > do. Furthermore, this make it simpler to have several versions installed > > in parallel later on (when we change productid) > > --- > > data/virt-viewer.wxs.in | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/data/virt-viewer.wxs.in b/data/virt-viewer.wxs.in > > index 2b09bba..c90d70e 100644 > > --- a/data/virt-viewer.wxs.in > > +++ b/data/virt-viewer.wxs.in > > @@ -84,7 +84,7 @@ > > > > <Directory Id="TARGETDIR" Name="SourceDir"> > > <Directory Id="$(var.ArchProgramFilesFolder)"> > > - <Directory Id="INSTALLDIR" Name="VirtViewer"> > > + <Directory Id="INSTALLDIR" Name="VirtViewer v@VERSION@@BUILDID@"> > > <Component Id="CDepsFile" Guid="*"> > > <File Id="filA1E799D196006E6DF67DACE15B8C6193" KeyPath="yes" Source="deps.txt"/> > > </Component> > > Looks reasonable. I'll give it a quick test myself... ACK, it works successfully in my tests, so please push Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list