[virt-tools-list] [PATCH virt-viewer] win: add virt-viewer-x86.msi build rule

Marc-André Lureau marcandre.lureau at gmail.com
Wed Feb 6 12:18:27 UTC 2013


ping

On Thu, Jan 17, 2013 at 3:32 PM, Marc-André Lureau
<marcandre.lureau at gmail.com> wrote:
> In order to build the MSI, you will need msitools:
> http://ftp.gnome.org/pub/GNOME/sources/msitools/
>
> Granted, the WiX syntax is quite verbose. I have ideas to provide a
> simpler syntax or an alternative for packaging entire directories in
> the future, so that all installed files would be packaged.
>
> In v2:
> - remove wxi, generate fragment file with content of make install with
>   wixl-heat as suggested by Paolo Bonzini
> ---
>  configure.ac            |  1 +
>  data/Makefile.am        | 19 +++++++++-
>  data/virt-viewer.wxs.in | 92 +++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 111 insertions(+), 1 deletion(-)
>  create mode 100644 data/virt-viewer.wxs.in
>
> diff --git a/configure.ac b/configure.ac
> index 251b134..339acbe 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -199,6 +199,7 @@ fi
>  AC_OUTPUT([
>      Makefile
>      data/Makefile
> +    data/virt-viewer.wxs
>      data/virt-viewer.nsis
>      data/virt-viewer-debug.nsis
>      icons/Makefile
> diff --git a/data/Makefile.am b/data/Makefile.am
> index 2c3d739..f9f6aea 100644
> --- a/data/Makefile.am
> +++ b/data/Makefile.am
> @@ -2,6 +2,7 @@ NULL=
>
>  EXTRA_DIST =                                   \
>         spice-xpi-client-remote-viewer          \
> +       virt-viewer.wxs.in                      \
>         virt-viewer.nsis.in                     \
>         virt-viewer-debug.nsis.in                       \
>         $(NULL)
> @@ -16,7 +17,23 @@ virt-viewer-$(VERSION).exe: virt-viewer.nsis deps.txt
>         makensis -NOCD -DDESTDIR=$$DESTDIR $< >/dev/null && \
>         rm -rf $$DESTDIR
>
> -CLEANFILES = deps.txt virt-viewer-$(VERSION).exe
> +
> +virt-viewer-$(VERSION)-x86.msi: virt-viewer.wxs deps.txt
> +       $(AM_V_GEN)DESTDIR=`mktemp -d` && \
> +       make -C $(top_builddir) install DESTDIR=$$DESTDIR >/dev/null && \
> +       find $$DESTDIR | wixl-heat -p $$DESTDIR/usr/i686-w64-mingw32/sys-root/mingw/ \
> +           --component-group CG.virt-viewer --var var.DESTDIR \
> +           --directory-ref=INSTALLDIR > virt-viewer-files.wxs && \
> +       wixl -D SourceDir=/usr/i686-w64-mingw32/sys-root/mingw \
> +             -D DESTDIR=$$DESTDIR/usr/i686-w64-mingw32/sys-root/mingw -o $@ \
> +            $< virt-viewer-files.wxs && \
> +       rm -rf $$DESTDIR virt-viewer-files.wxs
> +
> +CLEANFILES =                                   \
> +       deps.txt                                \
> +       virt-viewer-$(VERSION).exe              \
> +       virt-viewer-$(VERSION)-x86.msi          \
> +       $(NULL)
>  endif
>
>  -include $(top_srcdir)/git.mk
> diff --git a/data/virt-viewer.wxs.in b/data/virt-viewer.wxs.in
> new file mode 100644
> index 0000000..05c22cc
> --- /dev/null
> +++ b/data/virt-viewer.wxs.in
> @@ -0,0 +1,92 @@
> +<?xml version="1.0" encoding="utf-8"?>
> +
> +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
> +
> +  <?require spice-gtk.wxi?>
> +  <?require gtk-vnc.wxi?>
> +  <?require libvirt.wxi?>
> +
> +  <?define Version = "@VERSION@"?>
> +  <?define UpgradeCode = "5B027138-1A63-49E6-877E-055E5EEC1903"?>
> +  <Product Id="*" Name="VirtViewer" Manufacturer="Red Hat, Inc."
> +           Version="$(var.Version)" UpgradeCode="$(var.UpgradeCode)"
> +           Language="1033">
> +
> +    <Package InstallerVersion="200" Compressed="yes" Comments="comments"/>
> +    <Media Id="1" Cabinet="cabinet.cab" EmbedCab="yes"/>
> +
> +    <Property Id="ARPHELPLINK" Value="http://www.spice-space.org"/>
> +    <Property Id="ARPNOMODIFY" Value="1"/>
> +    <Property Id="ARPNOREPAIR" Value="1"/>
> +    <Property Id="ARPPRODUCTICON" Value="virt-viewer.ico"/>
> +<!-- <Property Id="ARPURLINFOABOUT" Value="http://www.spice-space.org/info"/> -->
> +    <Upgrade Id="$(var.UpgradeCode)">
> +      <UpgradeVersion Minimum="$(var.Version)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
> +      <UpgradeVersion Minimum="0.0.0" Maximum="$(var.Version)" IncludeMinimum="yes" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED"/>
> +    </Upgrade>
> +    <Condition Message="VirtViewer is already installed.">NOT NEWERVERSIONDETECTED</Condition>
> +
> +    <DirectoryRef Id="TARGETDIR">
> +      <Component Id="CRegistryEntries" Guid="*">
> +        <RegistryKey Root='HKLM' Key='Software\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{96190E9D-6FBB-64DB-9095-29F6FDE0B897}'>
> +          <RegistryValue Type='string' Name='AppPath' Value='[INSTALLDIR]\bin'/>
> +          <RegistryValue Type='string' Name='AppName' Value='remote-viewer.exe'/>
> +          <RegistryValue Type='integer' Name='Policy' Value='3'/>
> +        </RegistryKey>
> +        <RegistryKey Root='HKLM' Key='Software\spice-space.org\spicex'>
> +          <RegistryValue Type='string' Name='client' Value='[INSTALLDIR]\bin\remote-viewer.exe --spice-controller'/>
> +        </RegistryKey>
> +      </Component>
> +      <Component Id="CProgIds" Guid="*">
> +        <ProgId Id='VirtViewer.vvfile' Description='VirtViewer connection file'>
> +          <Extension Id='vv' ContentType='application/x-virt-viewer'>
> +            <Verb Id='open' Command='Open' TargetFile='fil808B4A5BAB4ACD727D3823632E798743' Argument='"%1"' />
> +            <MIME ContentType="application/x-virt-viewer" Default="yes"/>
> +          </Extension>
> +        </ProgId>
> +      </Component>
> +    </DirectoryRef>
> +
> +    <Directory Id="TARGETDIR" Name="SourceDir">
> +      <Directory Id="ProgramFilesFolder">
> +        <Directory Id="INSTALLDIR" Name="VirtViewer">
> +          <Component Id="CDepsFile" Guid="*">
> +            <File Id="filA1E799D196006E6DF67DACE15B8C6193" KeyPath="yes" Source="deps.txt"/>
> +          </Component>
> +        </Directory>
> +      </Directory>
> +      <Directory Id="ProgramMenuFolder">
> +        <Directory Id="MENUDIR" Name="VirtViewer"/>
> +      </Directory>
> +    </Directory>
> +
> +    <DirectoryRef Id="MENUDIR">
> +      <Component Id="CShortcut" Guid="*">
> +        <Shortcut Id="ApplicationStartMenuShortcut"
> +                  Name="Remote viewer"
> +                  Description="A SPICE/VNC client"
> +                  Target="[INSTALLDIR]\bin\remote-viewer.exe"
> +                  Icon="virt-viewer.ico"/>
> +        <RemoveFolder Id="MENUDIR" On="uninstall"/>
> +        <RegistryValue Root="HKCU" Key="Software\VirtViewer\remote-viewer-shortcut" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
> +      </Component>
> +    </DirectoryRef>
> +
> +    <Feature Id="Complete"  Level="1">
> +      <ComponentGroupRef Id="CG.spice-gtk"/>
> +      <ComponentGroupRef Id="CG.libvirt"/>
> +      <ComponentGroupRef Id="CG.gtk-vnc"/>
> +      <ComponentGroupRef Id="CG.virt-viewer"/>
> +      <ComponentRef Id="CDepsFile"/>
> +      <ComponentRef Id="CShortcut"/>
> +      <ComponentRef Id="CRegistryEntries"/>
> +      <ComponentRef Id="CProgIds"/>
> +    </Feature>
> +
> +    <InstallExecuteSequence>
> +      <RemoveExistingProducts After="InstallValidate"/>
> +    </InstallExecuteSequence>
> +
> +    <Icon Id="virt-viewer.ico" SourceFile="virt-viewer.ico"/>
> +  </Product>
> +</Wix>
> --
> 1.8.1.rc1.17.g75ed918
>



-- 
Marc-André Lureau




More information about the virt-tools-list mailing list