[virt-tools-list] [PATCH] wixl: use a versionized installation directory
Daniel P. Berrange
berrange at redhat.com
Mon Jan 12 15:42:56 UTC 2015
On Mon, Jan 12, 2015 at 04:39:52PM +0100, Fabiano Fidêncio wrote:
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
>
> 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 at 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...
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 :|
More information about the virt-tools-list
mailing list