Re: [PATCH win-vdagent] Learn to build spice-vdagent MSI installer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Best regards,
Yan.

On Feb 17, 2014, at 6:41 PM, Marc-André Lureau <marcandre.lureau@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]