[Spice-devel] [PATCH win-vdagent] Learn to build spice-vdagent MSI installer

Marc-André Lureau mlureau at redhat.com
Tue Feb 18 08:03:01 PST 2014


Hi

----- Original Message -----
> Hi Marc-Andre,
> 
> I think you should also add 'InstallPrivileges="elevated”’ as “Package"
> element attribute.
> 
> The Windows will prompt the user to elevate to administrator, otherwise the
> user might not have sufficient rights to install the service.
> 

I didn't noticed any issue installing on windows 7 as a regular user, I get prompter for elevated privileges.

This is the default value, according to:

http://msdn.microsoft.com/en-us/library/aa372870%28v=vs.85%29.aspx
Bit 3	0 Elevated privileges can be required to install this package.

cheers

> Best regards,
> Yan.
> 
> On Feb 17, 2014, at 6:41 PM, Marc-André Lureau <marcandre.lureau at gmail.com>
> wrote:
> 
> > ---
> > Makefile.am          | 23 +++++++++++++++-
> > configure.ac         | 30 ++++++++++++++++++++
> > spice-vdagent.wxs.in | 78
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 130 insertions(+), 1 deletion(-)
> > create mode 100644 spice-vdagent.wxs.in
> > 
> > diff --git a/Makefile.am b/Makefile.am
> > index 749ef56..9fa9f14 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -1,4 +1,5 @@
> > NULL =
> > +EXTRA_DIST =
> > MAINTAINERCLEANFILES =
> > 
> > DIST_SUBDIRS = spice-protocol
> > @@ -61,8 +62,28 @@ vdservice_rc.$(OBJEXT): vdservice/vdservice.rc
> > 
> > MAINTAINERCLEANFILES += vdservice_rc.$(OBJEXT)
> > 
> > +deps.txt:
> > +	$(AM_V_GEN)rpm -qa | grep $(host_os) | sort | unix2dos > $@
> > 
> > -EXTRA_DIST =			\
> > +MANUFACTURER = The Spice Project
> > +
> > +EXTRA_DIST += spice-vdagent.wxs.in
> > +CONFIG_STATUS_DEPENDENCIES = spice-vdagent.wxs.in
> > +
> > +spice-vdagent-$(WIXL_ARCH)-$(VERSION)$(BUILDID).msi: spice-vdagent.wxs
> > deps.txt all
> > +	$(AM_V_GEN)DESTDIR=`mktemp -d`&&				\
> > +	make -C $(top_builddir) install DESTDIR=$$DESTDIR >/dev/null &&	\
> > +	MANUFACTURER="$(MANUFACTURER)" wixl -D SourceDir=$(prefix)	\
> > +	  -D DESTDIR=$$DESTDIR$(prefix)					\
> > +	  --arch $(WIXL_ARCH)  -o $@ $<
> > +
> > +msi: spice-vdagent-$(WIXL_ARCH)-$(VERSION)$(BUILDID).msi
> > +
> > +CLEANFILES = spice-vdagent-$(WIXL_ARCH)-$(VERSION)$(BUILDID).msi
> > +
> > +.PHONY: msi
> > +
> > +EXTRA_DIST +=			\
> > 	$(top_srcdir)/.version	\
> > 	tests/clipboard.py	\
> > 	vdagent.sln		\
> > diff --git a/configure.ac b/configure.ac
> > index 12329b4..7f6511d 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -9,11 +9,30 @@ AC_CONFIG_SRCDIR([vdagent])
> > AC_CONFIG_HEADERS([config.h])
> > AC_CONFIG_MACRO_DIR([m4])
> > AC_CONFIG_AUX_DIR([build-aux])
> > +AC_CANONICAL_HOST
> > 
> > AM_INIT_AUTOMAKE([1.11 foreign subdir-objects no-dist-gzip dist-xz
> > tar-ustar])
> > 
> > AM_SILENT_RULES([yes])
> > 
> > +AC_ARG_WITH([buildid],
> > +AS_HELP_STRING([--with-buildid=id], [Set additional build version
> > details]))
> > +AC_DEFINE_UNQUOTED([BUILDID], "$with_buildid", [Build version details])
> > +if test "x$with_buildid" != x; then
> > +  AC_SUBST([BUILDID], "-$with_buildid")
> > +fi
> > +
> > +major=`echo $PACKAGE_VERSION | cut -d. -f1`
> > +minor=`echo $PACKAGE_VERSION | cut -d. -f2`
> > +micro=`echo $PACKAGE_VERSION | cut -d. -f3`
> > +buildid=`echo $with_buildid | cut -d. -f1`
> > +if test "x$buildid" = x; then
> > +  buildid=0
> > +fi
> > +build=`expr $micro \* 256 + $buildid`
> > +WINDOWS_PRODUCTVERSION="$major.$minor.$build"
> > +AC_SUBST([WINDOWS_PRODUCTVERSION])
> > +
> > # Check for programs
> > AC_PROG_CC
> > AC_PROG_CXX
> > @@ -21,6 +40,16 @@ AM_PROG_CC_C_O
> > AC_PROG_INSTALL
> > AC_CHECK_TOOL(WINDRES, [windres])
> > 
> > +case "$host" in
> > +amd64*|x86_64*)
> > +  WIXL_ARCH="x64"
> > +;;
> > +*)
> > +  WIXL_ARCH="x86"
> > +;;
> > +esac
> > +AC_SUBST(WIXL_ARCH)
> > +
> > AC_ARG_ENABLE([debug],
> >     AS_HELP_STRING([--enable-debug], [Enable debugging]))
> > 
> > @@ -75,6 +104,7 @@ AC_CONFIG_SUBDIRS([spice-protocol])
> > AC_CONFIG_FILES([
> > Makefile
> > mingw-spice-vdagent.spec
> > +spice-vdagent.wxs
> > ])
> > AC_OUTPUT
> > 
> > diff --git a/spice-vdagent.wxs.in b/spice-vdagent.wxs.in
> > new file mode 100644
> > index 0000000..060f33d
> > --- /dev/null
> > +++ b/spice-vdagent.wxs.in
> > @@ -0,0 +1,78 @@
> > +<?xml version="1.0" encoding="utf-8"?>
> > +
> > +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
> > +
> > +  <?define Version = "@WINDOWS_PRODUCTVERSION@"?>
> > +  <?define UpgradeCode = "7eb9b146-db04-42d7-a8ba-71fc8ced7eed"?>
> > +  <?define Arch = "@WIXL_ARCH@"?>
> > +  <?if $(var.Arch) = "x64"?>
> > +      <?define ArchString = "64-bit"?>
> > +      <?define ArchProgramFilesFolder = "ProgramFiles64Folder"?>
> > +      <?define Win64 = "yes"?>
> > +  <?else?>
> > +      <?define ArchString = "32-bit"?>
> > +      <?define ArchProgramFilesFolder = "ProgramFilesFolder"?>
> > +      <?define Win64 = "no"?>
> > +  <?endif?>
> > +
> > +  <Product Id="*" Name="Spice agent @VERSION@@BUILDID@
> > ($(var.ArchString))"
> > +           Manufacturer="$(env.MANUFACTURER)"
> > +           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"/>
> > +    <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="Product already installed.">NOT
> > NEWERVERSIONDETECTED</Condition>
> > +    <InstallExecuteSequence>
> > +      <RemoveExistingProducts After="InstallFinalize"/>
> > +    </InstallExecuteSequence>
> > +
> > +    <Directory Id="TARGETDIR" Name="SourceDir">
> > +      <Directory Id="$(var.ArchProgramFilesFolder)">
> > +        <Directory Id="INSTALLDIR" Name="SPICE agent">
> > +          <Directory Id="Dbindir" Name="bin">
> > +            <Component Id="CSpiceAgent" Guid="*">
> > +              <File Id='spiceagent' Name='vdagent.exe' DiskId='1'
> > Source='$(var.DESTDIR)/bin/vdagent.exe' KeyPath='yes'/>
> > +            </Component>
> > +            <Component Id="CSpiceService" Guid="*">
> > +              <File Id='spiceservice' Name='vdservice.exe' DiskId='1'
> > Source='$(var.DESTDIR)/bin/vdservice.exe' KeyPath='yes'/>
> > +              <ServiceInstall Id="ServiceInstall"
> > +                            Name="spice-agent"
> > +                            DisplayName="Spice agent"
> > +                            Description="The Spice guest agent"
> > +                            Type="ownProcess"
> > +                            Start="auto"
> > +                            Account="[SERVICEACCOUNT]"
> > +                            Password="[SERVICEPASSWORD]"
> > +                            ErrorControl="normal"/>
> > +              <ServiceControl Id="StartService"
> > +                            Name="spice-agent"
> > +                            Start="install"
> > +                            Stop="both"
> > +                            Remove="uninstall"
> > +                            Wait="yes"/>
> > +            </Component>
> > +          </Directory>
> > +          <Component Id="CDepsTxt" Guid="*">
> > +            <File Id='depstxt' Name='deps.txt' DiskId='1'
> > Source='deps.txt' KeyPath='yes'/>
> > +          </Component>
> > +        </Directory>
> > +      </Directory>
> > +    </Directory>
> > +
> > +    <Feature Id="Complete"  Level="1">
> > +      <ComponentRef Id="CSpiceAgent"/>
> > +      <ComponentRef Id="CSpiceService"/>
> > +      <ComponentRef Id="CDepsTxt"/>
> > +    </Feature>
> > +
> > +  </Product>
> > +</Wix>
> > --
> > 1.8.4.2
> > 
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 


More information about the Spice-devel mailing list