[virt-tools-list] [PATCH] wixl: use a versionized installation directory

Fabiano Fidêncio fidencio at redhat.com
Mon Jan 12 15:39:52 UTC 2015


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.

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>
-- 
2.1.0




More information about the virt-tools-list mailing list