* [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script
2015-04-19 10:53 [Qemu-trivial] Windows MSI installation package Joseph Hindin
@ 2015-04-19 10:53 ` Joseph Hindin
0 siblings, 0 replies; 10+ messages in thread
From: Joseph Hindin @ 2015-04-19 10:53 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, Joseph Hindin, mdroth
The script enables building Windows MSI installation package on Linux with wixl tool.
Signed-off-by: Joseph Hindin <jhindin@daynix.com>
---
qga/installer/qemu-ga.wxs | 156 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 156 insertions(+)
create mode 100644 qga/installer/qemu-ga.wxs
diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
new file mode 100644
index 0000000..4611255
--- /dev/null
+++ b/qga/installer/qemu-ga.wxs
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <?ifndef env.QEMU_GA_VERSION ?>
+ <?error Environemtn variable QEMU_GA_VERSION undefined?>
+ <?endif?>
+
+ <?ifndef env.QEMU_GA_DISTRO ?>
+ <?error Environment variable QEMU_GA_DISTRO undefined?>
+ <?endif?>
+
+ <?ifndef env.QEMU_GA_MANUFACTURER ?>
+ <?error Environment variable QEMU_GA_MANUFACTURER undefined?>
+ <?endif?>
+
+ <?ifndef var.Arch?>
+ <?error Define Arch to 32 or 64?>
+ <?endif?>
+
+ <?ifndef var.Mingw_bin?>
+ <?if $(var.Arch) = "64"?>
+ <?define Mingw_bin=/usr/x86_64-w64-mingw32/sys-root/mingw/bin ?>
+ <?endif?>
+ <?if $(var.Arch) = "32"?>
+ <?define Mingw_bin=/usr/i686-w64-mingw32/sys-root/mingw/bin ?>
+ <?endif?>
+ <?endif?>
+
+ <?if $(var.Arch) = "64"?>
+ <?define ArchLib=libgcc_s_seh-1.dll?>
+ <?define GaProgramFilesFolder="ProgramFiles64Folder" ?>
+ <?endif?>
+
+ <?if $(var.Arch) = "32"?>
+ <?define ArchLib=libgcc_s_sjlj-1.dll?>
+ <?define GaProgramFilesFolder="ProgramFilesFolder" ?>
+ <?endif?>
+
+ <?ifndef var.ArchLib ?>
+ <?error Unexpected Arch value $(var.Arch)?>
+ <?endif?>
+
+ <Product
+ Name="QEMU guest agent"
+ Id="*"
+ UpgradeCode="{EB6B8302-C06E-4bec-ADAC-932C68A3A98D}"
+ Manufacturer="$(env.QEMU_GA_MANUFACTURER)"
+ Version="$(env.QEMU_GA_VERSION)"
+ Language="1033">
+ <?if $(var.Arch) = 32 ?>
+ <Condition Message="Error: 32-bit version of Qemu GA can not be installed on 64-bit Windows.">NOT VersionNT64</Condition>
+ <?endif?>
+ <Package
+ Manufacturer="$(env.QEMU_GA_MANUFACTURER)"
+ InstallerVersion="200"
+ Languages="1033"
+ Compressed="yes"
+ InstallScope="perMachine"
+ />
+ <Media Id="1" Cabinet="qemu_ga.$(env.QEMU_GA_VERSION).cab" EmbedCab="yes" />
+ <Property Id="WHSLogo">1</Property>
+ <Property Id="PREVIOUSVERSIONSINSTALLED" />
+ <Upgrade Id="{EB6B8302-C06E-4bec-ADAC-932C68A3A98D}">
+ <UpgradeVersion
+ OnlyDetect="no"
+ Minimum="1.0.0.0" Maximum="$(env.QEMU_GA_VERSION)"
+ Property="PREVIOUSVERSIONSINSTALLED"
+ IncludeMinimum="yes" IncludeMaximum="no" />
+
+ <UpgradeVersion OnlyDetect="yes"
+ Minimum="$(env.QEMU_GA_VERSION)" Maximum="$(env.QEMU_GA_VERSION)"
+ Property="SAMEVERSIONINSTALLED"
+ IncludeMinimum="yes" IncludeMaximum="yes" />
+
+ <UpgradeVersion OnlyDetect="yes"
+ Minimum="$(env.QEMU_GA_VERSION)" Maximum="1000"
+ Property="FUTUREVERSIONSINSTALLED"
+ IncludeMinimum="no" IncludeMaximum="yes" />
+ </Upgrade>
+
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="$(var.GaProgramFilesFolder)" Name="QEMU Guest Agent">
+ <Directory Id="qemu_ga_directory" Name="Qemu-ga">
+ <Component Id="qemu_ga" Guid="{908B7199-DE2A-4dc6-A8D0-27A5AE444FEA}">
+ <File Id="qemu_ga.exe" Name="qemu-ga.exe" Source="../../qemu-ga.exe" KeyPath="yes" DiskId="1"/>
+ <?ifdef var.InstallVss ?>
+ <File Id="qga_vss.dll" Name="qga-vss.dll" Source="../vss-win32/qga-vss.dll" KeyPath="no" DiskId="1"/>
+ <File Id="qga_vss.tlb" Name="qga-vss.tlb" Source="../vss-win32/qga-vss.tlb" KeyPath="no" DiskId="1"/>
+ <?endif?>
+ <File Id="iconv.dll" Name="iconv.dll" Source="$(var.Mingw_bin)/iconv.dll" KeyPath="no" DiskId="1"/>
+ <File Id="$(var.ArchLib)" Name="$(var.ArchLib)" Source="$(var.Mingw_bin)/$(var.ArchLib)" KeyPath="no" DiskId="1"/>
+ <File Id="libglib-2.0-0.dll" Name="libglib-2.0-0.dll" Source="$(var.Mingw_bin)/libglib-2.0-0.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libintl-8.dll" Name="libintl-8.dll" Source="$(var.Mingw_bin)/libintl-8.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libssp-0.dll" Name="libssp-0.dll" Source="$(var.Mingw_bin)/libssp-0.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libwinpthread-1.dll" Name="libwinpthread-1.dll" Source="$(var.Mingw_bin)/libwinpthread-1.dll" KeyPath="no" DiskId="1"/>
+ <ServiceInstall
+ Id="ServiceInstaller"
+ Type="ownProcess"
+ Vital="yes"
+ Name="QEMU-GA"
+ DisplayName="QEMU Guest Agent"
+ Description="QEMU Guest Agent"
+ Start="auto"
+ Account="LocalSystem"
+ ErrorControl="ignore"
+ Interactive="no"
+ Arguments="-d"
+ >
+ </ServiceInstall>
+ <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="QEMU-GA" Wait="no" />
+ </Component>
+
+ <Component Id="registry_entries" Guid="d075d109-51ca-11e3-9f8b-000c29858960">
+ <RegistryKey Root="HKLM"
+ Key="Software\$(env.QEMU_GA_MANUFACTURER)\$(env.QEMU_GA_DISTRO)\Tools\QemuGA">
+ <RegistryValue Type="string" Name="ProductID" Value="fb0a0d66-c7fb-4e2e-a16b-c4a3bfe8d13b" />
+ <RegistryValue Type="string" Name="Version" Value="$(env.QEMU_GA_VERSION)" />
+ </RegistryKey>
+ </Component>
+ </Directory>
+ </Directory>
+ </Directory>
+
+ <Property Id="cmd" Value="cmd.exe"/>
+
+ <?ifdef var.InstallVss ?>
+ <CustomAction Id="RegisterCom"
+ ExeCommand='/c [qemu_ga_directory]qemu-ga.exe" -s vss-install'
+ Execute="deferred"
+ Property="cmd"
+ Impersonate="no"
+ Return="check"
+ >
+ </CustomAction>
+ <CustomAction Id="UnRegisterCom"
+ ExeCommand='/c "[qemu_ga_directory]qemu-ga.exe" -s vss-uninstall'
+ Execute="deferred"
+ Property="cmd"
+ Impersonate="no"
+ Return="check"
+ ></CustomAction>
+ <?endif?>
+
+ <Feature Id="QEMUFeature" Title="QEMU Guest Agent" Level="1">
+ <ComponentRef Id="qemu_ga" />
+ <ComponentRef Id="registry_entries" />
+ </Feature>
+
+ <InstallExecuteSequence>
+ <RemoveExistingProducts Before="InstallInitialize" />
+ <?ifdef var.InstallVss ?>
+ <Custom Action="RegisterCom" After="InstallFiles">&QEMUFeature <> 2 </Custom>
+ <Custom Action="UnRegisterCom" After="StopServices" Before="RemoveFiles">Installed OR !QEMUFeature = 3</Custom>
+ <?endif?>
+ </InstallExecuteSequence>
+ </Product>
+</Wix>
--
2.1.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent
@ 2015-04-26 7:04 Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 1/4] qemu-ga: adding vss-[un]install options Yossi Hindin
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Yossi Hindin @ 2015-04-26 7:04 UTC (permalink / raw)
To: qemu-devel; +Cc: Yossi Hindin, yvugenfi, dfleytma, mdroth
The patches' set introduce creation of MSI installer for Windows guest agent
with wixl tool.
Yossi Hindin (4):
qemu-ga: adding vss-[un]install options
qemu-ga: debug printouts to help troubleshoot installation
qemu-ga: Introduce Windows MSI script
qemu-ga: Building Windows MSI installation with configure/Makefile
Makefile | 17 +++++-
configure | 63 ++++++++++++++++++++
qga/channel-win32.c | 2 +-
qga/commands-win32.c | 1 +
qga/installer/qemu-ga.wxs | 145 ++++++++++++++++++++++++++++++++++++++++++++++
qga/main.c | 10 +++-
6 files changed, 235 insertions(+), 3 deletions(-)
create mode 100644 qga/installer/qemu-ga.wxs
--
2.1.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 1/4] qemu-ga: adding vss-[un]install options
2015-04-26 7:04 [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent Yossi Hindin
@ 2015-04-26 7:04 ` Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 2/4] qemu-ga: debug printouts to help troubleshoot installation Yossi Hindin
` (2 subsequent siblings)
3 siblings, 0 replies; 10+ messages in thread
From: Yossi Hindin @ 2015-04-26 7:04 UTC (permalink / raw)
To: qemu-devel; +Cc: Yossi Hindin, yvugenfi, dfleytma, mdroth
Existing command line options include '-s install' and '-s uninstall'.
These options install/uninstall both Windows QEMU GA service
and optional VSS COM server. The QEMU GA Windows service allows
always-on serving guest agent's QMP commands and VSS COM server
enables guest agent integration with Volume Shadow Service.
This commit introdices new options '-s vss-install' and '-s vss-uninstall',
affecting only GA VSS COM server registration. The new options are useful
for registering and unregistering the COM server during MSI installation,
upgrade and uninstallation.
Signed-off-by: Yossi Hindin <yhindin@redhat.com>
---
qga/main.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/qga/main.c b/qga/main.c
index 9939a2b..7e1e438 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -211,7 +211,7 @@ static void usage(const char *cmd)
" -V, --version print version information and exit\n"
" -d, --daemonize become a daemon\n"
#ifdef _WIN32
-" -s, --service service commands: install, uninstall\n"
+" -s, --service service commands: install, uninstall, vss-install, vss-uninstall\n"
#endif
" -b, --blacklist comma-separated list of RPCs to disable (no spaces, \"?\"\n"
" to list available RPCs)\n"
@@ -1036,6 +1036,14 @@ int main(int argc, char **argv)
} else if (strcmp(service, "uninstall") == 0) {
ga_uninstall_vss_provider();
return ga_uninstall_service();
+ } else if (strcmp(service, "vss-install") == 0) {
+ if (ga_install_vss_provider()) {
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+ } else if (strcmp(service, "vss-uninstall") == 0) {
+ ga_uninstall_vss_provider();
+ return EXIT_SUCCESS;
} else {
printf("Unknown service command.\n");
return EXIT_FAILURE;
--
2.1.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 2/4] qemu-ga: debug printouts to help troubleshoot installation
2015-04-26 7:04 [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 1/4] qemu-ga: adding vss-[un]install options Yossi Hindin
@ 2015-04-26 7:04 ` Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile Yossi Hindin
3 siblings, 0 replies; 10+ messages in thread
From: Yossi Hindin @ 2015-04-26 7:04 UTC (permalink / raw)
To: qemu-devel; +Cc: Yossi Hindin, yvugenfi, dfleytma, mdroth
Debug printouts extended, helps installation troubleshooting
Signed-off-by: Yossi Hindin <yhindin@redhat.com>
---
qga/channel-win32.c | 2 +-
qga/commands-win32.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/qga/channel-win32.c b/qga/channel-win32.c
index 0d5e5f5..04fa5e4 100644
--- a/qga/channel-win32.c
+++ b/qga/channel-win32.c
@@ -306,7 +306,7 @@ static gboolean ga_channel_open(GAChannel *c, GAChannelMethod method,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED, NULL);
if (c->handle == INVALID_HANDLE_VALUE) {
- g_critical("error opening path");
+ g_critical("error opening path %s", newpath);
return false;
}
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 3ef0549..d0aaec7 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -721,6 +721,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
}
if (!vss_init(true)) {
+ g_debug("vss_init failed, vss commands are going to be disabled");
const char *list[] = {
"guest-get-fsinfo", "guest-fsfreeze-status",
"guest-fsfreeze-freeze", "guest-fsfreeze-thaw", NULL};
--
2.1.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script
2015-04-26 7:04 [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 1/4] qemu-ga: adding vss-[un]install options Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 2/4] qemu-ga: debug printouts to help troubleshoot installation Yossi Hindin
@ 2015-04-26 7:04 ` Yossi Hindin
2015-05-04 9:06 ` Paolo Bonzini
2015-04-26 7:04 ` [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile Yossi Hindin
3 siblings, 1 reply; 10+ messages in thread
From: Yossi Hindin @ 2015-04-26 7:04 UTC (permalink / raw)
To: qemu-devel; +Cc: Yossi Hindin, yvugenfi, dfleytma, mdroth
The script enables building Windows MSI installation package on Linux with wixl tool.
Signed-off-by: Yossi Hindin <yhindin@redhat.com>
---
qga/installer/qemu-ga.wxs | 145 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 145 insertions(+)
create mode 100644 qga/installer/qemu-ga.wxs
diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
new file mode 100644
index 0000000..44c844b
--- /dev/null
+++ b/qga/installer/qemu-ga.wxs
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+ <?ifndef env.QEMU_GA_VERSION ?>
+ <?error Environemtn variable QEMU_GA_VERSION undefined?>
+ <?endif?>
+
+ <?ifndef env.QEMU_GA_DISTRO ?>
+ <?error Environment variable QEMU_GA_DISTRO undefined?>
+ <?endif?>
+
+ <?ifndef env.QEMU_GA_MANUFACTURER ?>
+ <?error Environment variable QEMU_GA_MANUFACTURER undefined?>
+ <?endif?>
+
+ <?ifndef var.Arch?>
+ <?error Define Arch to 32 or 64?>
+ <?endif?>
+
+ <?ifndef var.Mingw_bin?>
+ <?if $(var.Arch) = "64"?>
+ <?define Mingw_bin=/usr/x86_64-w64-mingw32/sys-root/mingw/bin ?>
+ <?endif?>
+ <?if $(var.Arch) = "32"?>
+ <?define Mingw_bin=/usr/i686-w64-mingw32/sys-root/mingw/bin ?>
+ <?endif?>
+ <?endif?>
+
+ <?if $(var.Arch) = "64"?>
+ <?define ArchLib=libgcc_s_seh-1.dll?>
+ <?define GaProgramFilesFolder="ProgramFiles64Folder" ?>
+ <?endif?>
+
+ <?if $(var.Arch) = "32"?>
+ <?define ArchLib=libgcc_s_sjlj-1.dll?>
+ <?define GaProgramFilesFolder="ProgramFilesFolder" ?>
+ <?endif?>
+
+ <?ifndef var.ArchLib ?>
+ <?error Unexpected Arch value $(var.Arch)?>
+ <?endif?>
+
+ <Product
+ Name="QEMU guest agent"
+ Id="*"
+ UpgradeCode="{EB6B8302-C06E-4bec-ADAC-932C68A3A98D}"
+ Manufacturer="$(env.QEMU_GA_MANUFACTURER)"
+ Version="$(env.QEMU_GA_VERSION)"
+ Language="1033">
+ <?if $(var.Arch) = 32 ?>
+ <Condition Message="Error: 32-bit version of Qemu GA can not be installed on 64-bit Windows.">NOT VersionNT64</Condition>
+ <?endif?>
+ <Package
+ Manufacturer="$(env.QEMU_GA_MANUFACTURER)"
+ InstallerVersion="200"
+ Languages="1033"
+ Compressed="yes"
+ InstallScope="perMachine"
+ />
+ <Media Id="1" Cabinet="qemu_ga.$(env.QEMU_GA_VERSION).cab" EmbedCab="yes" />
+ <Property Id="WHSLogo">1</Property>
+ <Property Id="PREVIOUSVERSIONSINSTALLED" />
+ <Upgrade Id="{EB6B8302-C06E-4bec-ADAC-932C68A3A98D}">
+ <UpgradeVersion
+ Minimum="1.0.0.0" Maximum="$(env.QEMU_GA_VERSION)"
+ Property="PREVIOUSVERSIONSINSTALLED"
+ IncludeMinimum="yes" IncludeMaximum="no" />
+ </Upgrade>
+
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="$(var.GaProgramFilesFolder)" Name="QEMU Guest Agent">
+ <Directory Id="qemu_ga_directory" Name="Qemu-ga">
+ <Component Id="qemu_ga" Guid="{908B7199-DE2A-4dc6-A8D0-27A5AE444FEA}">
+ <File Id="qemu_ga.exe" Name="qemu-ga.exe" Source="../../qemu-ga.exe" KeyPath="yes" DiskId="1"/>
+ <?ifdef var.InstallVss ?>
+ <File Id="qga_vss.dll" Name="qga-vss.dll" Source="../vss-win32/qga-vss.dll" KeyPath="no" DiskId="1"/>
+ <File Id="qga_vss.tlb" Name="qga-vss.tlb" Source="../vss-win32/qga-vss.tlb" KeyPath="no" DiskId="1"/>
+ <?endif?>
+ <File Id="iconv.dll" Name="iconv.dll" Source="$(var.Mingw_bin)/iconv.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libgcc_arch_lib" Name="$(var.ArchLib)" Source="$(var.Mingw_bin)/$(var.ArchLib)" KeyPath="no" DiskId="1"/>
+ <File Id="libglib_2.0_0.dll" Name="libglib-2.0-0.dll" Source="$(var.Mingw_bin)/libglib-2.0-0.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libintl_8.dll" Name="libintl-8.dll" Source="$(var.Mingw_bin)/libintl-8.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libssp_0.dll" Name="libssp-0.dll" Source="$(var.Mingw_bin)/libssp-0.dll" KeyPath="no" DiskId="1"/>
+ <File Id="libwinpthread_1.dll" Name="libwinpthread-1.dll" Source="$(var.Mingw_bin)/libwinpthread-1.dll" KeyPath="no" DiskId="1"/>
+ <ServiceInstall
+ Id="ServiceInstaller"
+ Type="ownProcess"
+ Vital="yes"
+ Name="QEMU-GA"
+ DisplayName="QEMU Guest Agent"
+ Description="QEMU Guest Agent"
+ Start="auto"
+ Account="LocalSystem"
+ ErrorControl="ignore"
+ Interactive="no"
+ Arguments="-d"
+ >
+ </ServiceInstall>
+ <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="QEMU-GA" Wait="no" />
+ </Component>
+
+ <Component Id="registry_entries" Guid="d075d109-51ca-11e3-9f8b-000c29858960">
+ <RegistryKey Root="HKLM"
+ Key="Software\$(env.QEMU_GA_MANUFACTURER)\$(env.QEMU_GA_DISTRO)\Tools\QemuGA">
+ <RegistryValue Type="string" Name="ProductID" Value="fb0a0d66-c7fb-4e2e-a16b-c4a3bfe8d13b" />
+ <RegistryValue Type="string" Name="Version" Value="$(env.QEMU_GA_VERSION)" />
+ </RegistryKey>
+ </Component>
+ </Directory>
+ </Directory>
+ </Directory>
+
+ <Property Id="cmd" Value="cmd.exe"/>
+
+ <?ifdef var.InstallVss ?>
+ <CustomAction Id="RegisterCom"
+ ExeCommand='/c "[qemu_ga_directory]qemu-ga.exe" -s vss-install'
+ Execute="deferred"
+ Property="cmd"
+ Impersonate="no"
+ Return="check"
+ >
+ </CustomAction>
+ <CustomAction Id="UnRegisterCom"
+ ExeCommand='/c "[qemu_ga_directory]qemu-ga.exe" -s vss-uninstall'
+ Execute="deferred"
+ Property="cmd"
+ Impersonate="no"
+ Return="check"
+ ></CustomAction>
+ <?endif?>
+
+ <Feature Id="QEMUFeature" Title="QEMU Guest Agent" Level="1">
+ <ComponentRef Id="qemu_ga" />
+ <ComponentRef Id="registry_entries" />
+ </Feature>
+
+ <InstallExecuteSequence>
+ <RemoveExistingProducts Before="InstallInitialize" />
+ <?ifdef var.InstallVss ?>
+ <Custom Action="RegisterCom" After="InstallServices">NOT Installed</Custom>
+ <Custom Action="UnRegisterCom" After="StopServices">Installed</Custom>
+ <?endif?>
+ </InstallExecuteSequence>
+ </Product>
+</Wix>
--
2.1.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile
2015-04-26 7:04 [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent Yossi Hindin
` (2 preceding siblings ...)
2015-04-26 7:04 ` [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script Yossi Hindin
@ 2015-04-26 7:04 ` Yossi Hindin
2015-05-04 9:03 ` Paolo Bonzini
3 siblings, 1 reply; 10+ messages in thread
From: Yossi Hindin @ 2015-04-26 7:04 UTC (permalink / raw)
To: qemu-devel; +Cc: Yossi Hindin, yvugenfi, dfleytma, mdroth
New options were added to enable Windows MSI installation package
creation:
Option --enable-guest-msi, like the name suggest, enables building
Windows MSI package for QEMU guest agent; option --disable-guest-msi
disables MSI package creation; by default, no MSI package is created
Signed-off-by: Yossi Hindin <yhindin@redhat.com>
---
Makefile | 17 ++++++++++++++++-
configure | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 93af871..67b007c 100644
--- a/Makefile
+++ b/Makefile
@@ -74,7 +74,7 @@ Makefile: ;
configure: ;
.PHONY: all clean cscope distclean dvi html info install install-doc \
- pdf recurse-all speed test dist
+ pdf recurse-all speed test dist msi
$(call set-vpath, $(SRC_PATH))
@@ -287,10 +287,25 @@ $(qga-obj-y) qemu-ga.o: $(QGALIB_GEN)
qemu-ga$(EXESUF): $(qga-obj-y) libqemuutil.a libqemustub.a
$(call LINK, $^)
+QEMU_GA_MSI=qemu-ga-${ARCH}.msi
+
+msi: ${QEMU_GA_MSI}
+
+ifdef QEMU_GA_MSI_WITH_VSS
+${QEMU_GA_MSI}: qga/vss-win32/qga-vss.dll qemu-ga.exe
+endif
+
+${QEMU_GA_MSI}: config-host.mak
+
+${QEMU_GA_MSI}: qga/installer/qemu-ga.wxs
+ $(call quiet-command,QEMU_GA_VERSION="$(QEMU_GA_VERSION)" QEMU_GA_MANUFACTURER="$(QEMU_GA_MANUFACTURER)" QEMU_GA_DISTRO="$(QEMU_GA_DISTRO)" \
+ wixl -o $@ ${QEMU_GA_MSI_ARCH} ${QEMU_GA_MSI_WITH_VSS} ${QEMU_GA_MSI_MINGW_DLL_PATH} $<, " WIXL $@")
+
clean:
# avoid old build problems by removing potentially incorrect old files
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
+ rm -f *.msi
find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod
diff --git a/configure b/configure
index 6969f6f..0aa79bb 100755
--- a/configure
+++ b/configure
@@ -316,6 +316,7 @@ snappy=""
bzip2=""
guest_agent=""
guest_agent_with_vss="no"
+guest_msi=""
vss_win32_sdk=""
win_sdk="no"
want_tools="yes"
@@ -1069,6 +1070,10 @@ for opt do
;;
--disable-guest-agent) guest_agent="no"
;;
+ --enable-guest-msi) guest_msi="yes"
+ ;;
+ --disable-guest-msi) guest_msi="no"
+ ;;
--with-vss-sdk) vss_win32_sdk=""
;;
--with-vss-sdk=*) vss_win32_sdk="$optarg"
@@ -1407,6 +1412,8 @@ Advanced options (experts only):
--enable-quorum enable quorum block filter support
--disable-numa disable libnuma support
--enable-numa enable libnuma support
+ --enable-guest-msi enable building guest agent Windows MSI installation package
+ --disable-guest-msi disable building guest agent Windows MSI installation package
NOTE: The object files are built at the place where configure is launched
EOF
@@ -3832,6 +3839,54 @@ if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss"
fi
##########################################
+# Guest agent Window MSI package
+
+if test "$guest_msi" = "yes"; then
+
+ if test "$guest_agent" != "yes"; then
+ error_exit "MSI guest agent package requires guest agent enabled"
+ fi
+
+ if test "$mingw32" != "yes"; then
+ error_exit "MSI guest agent is available only for MinGW Windows cross-compilation"
+ fi
+
+ if ! has wixl; then
+ error_exit "wixl not found, required for building installation"
+ fi
+
+
+ if test "$guest_agent_with_vss" = "yes"; then
+ QEMU_GA_MSI_WITH_VSS="-D InstallVss"
+ fi
+
+ if test "$QEMU_GA_MANUFACTURER" = ""; then
+ QEMU_GA_MANUFACTURER=QEMU
+ fi
+
+ if test "$QEMU_GA_DISTRO" = ""; then
+ QEMU_GA_DISTRO=Linux
+ fi
+
+ if test "$QEMU_GA_VERSION" = ""; then
+ QEMU_GA_VERSION=`cat $source_path/VERSION`
+ fi
+
+ case "$cpu" in
+ x86_64)
+ QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
+ ;;
+ i386)
+ QEMU_GA_MSI_ARCH="-D Arch=32"
+ ;;
+ *)
+ error_exit "CPU $cpu not supported for building installation package"
+ ;;
+ esac
+
+fi
+
+##########################################
##########################################
# check if we have fdatasync
@@ -4500,6 +4555,14 @@ if test "$mingw32" = "yes" ; then
echo "CONFIG_QGA_VSS=y" >> $config_host_mak
echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
fi
+ if test "$guest_msi" = "yes"; then
+ echo "QEMU_GA_MSI_MINGW_DLL_PATH=-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin" >> $config_host_mak
+ echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
+ echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
+ echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
+ echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
+ echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
+ fi
else
echo "CONFIG_POSIX=y" >> $config_host_mak
fi
--
2.1.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile
2015-04-26 7:04 ` [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile Yossi Hindin
@ 2015-05-04 9:03 ` Paolo Bonzini
2015-05-06 11:53 ` Yossi Hindin
0 siblings, 1 reply; 10+ messages in thread
From: Paolo Bonzini @ 2015-05-04 9:03 UTC (permalink / raw)
To: Yossi Hindin, qemu-devel; +Cc: yvugenfi, dfleytma, mdroth
On 26/04/2015 09:04, Yossi Hindin wrote:
> +ifdef QEMU_GA_MSI_WITH_VSS
> +${QEMU_GA_MSI}: qga/vss-win32/qga-vss.dll qemu-ga.exe
Shouldn't the qemu-ga.exe dependency be unconditional?
> +endif
> +
> +${QEMU_GA_MSI}: config-host.mak
> +
> +${QEMU_GA_MSI}: qga/installer/qemu-ga.wxs
> + $(call quiet-command,QEMU_GA_VERSION="$(QEMU_GA_VERSION)" QEMU_GA_MANUFACTURER="$(QEMU_GA_MANUFACTURER)" QEMU_GA_DISTRO="$(QEMU_GA_DISTRO)" \
> + wixl -o $@ ${QEMU_GA_MSI_ARCH} ${QEMU_GA_MSI_WITH_VSS} ${QEMU_GA_MSI_MINGW_DLL_PATH} $<, " WIXL $@")
Please use $(...) instead of ${...} for consistency.
> +
> clean:
> # avoid old build problems by removing potentially incorrect old files
> rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
> rm -f qemu-options.def
> + rm -f *.msi
> find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
> rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
> rm -f fsdev/*.pod
> diff --git a/configure b/configure
> index 6969f6f..0aa79bb 100755
> --- a/configure
> +++ b/configure
> @@ -316,6 +316,7 @@ snappy=""
> bzip2=""
> guest_agent=""
> guest_agent_with_vss="no"
> +guest_msi=""
> vss_win32_sdk=""
> win_sdk="no"
> want_tools="yes"
> @@ -1069,6 +1070,10 @@ for opt do
> ;;
> --disable-guest-agent) guest_agent="no"
> ;;
> + --enable-guest-msi) guest_msi="yes"
> + ;;
> + --disable-guest-msi) guest_msi="no"
> + ;;
> --with-vss-sdk) vss_win32_sdk=""
> ;;
> --with-vss-sdk=*) vss_win32_sdk="$optarg"
> @@ -1407,6 +1412,8 @@ Advanced options (experts only):
> --enable-quorum enable quorum block filter support
> --disable-numa disable libnuma support
> --enable-numa enable libnuma support
> + --enable-guest-msi enable building guest agent Windows MSI installation package
> + --disable-guest-msi disable building guest agent Windows MSI installation package
--enable-guest-agent-msi?
Also, please keep the guest agent options together.
>
> NOTE: The object files are built at the place where configure is launched
> EOF
> @@ -3832,6 +3839,54 @@ if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss"
> fi
>
> ##########################################
> +# Guest agent Window MSI package
> +
> +if test "$guest_msi" = "yes"; then
Since building the MSI is on-demand anyway ("make msi"), we might as well
treat it similar to other configure options:
- --enable-foo causes an error if the feature is not available
- --disable-foo forcibly disable the feature
- the default is to configure the feature if available, otherwise disable it
This would be something like this:
if test "$guest_agent" != yes; then
if test "$guest_msi" = yes; then
error_exit "MSI guest agent package requires guest agent enabled"
fi
guest_msi=no
elif test "$mingw32" != "yes"; then
if test "$guest_msi" = "yes"; then
error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
fi
guest_msi=no
elif test ! has_wixl; then
if test "$guest_msi" = "yes"; then
error_exit "wixl not found, required for building MSI guest agent package"
fi
guest_msi=no
fi
if test "$guest_msi" != no; then
...
fi
> +
> +
> + if test "$guest_agent_with_vss" = "yes"; then
> + QEMU_GA_MSI_WITH_VSS="-D InstallVss"
> + fi
> +
> + if test "$QEMU_GA_MANUFACTURER" = ""; then
> + QEMU_GA_MANUFACTURER=QEMU
> + fi
> +
> + if test "$QEMU_GA_DISTRO" = ""; then
> + QEMU_GA_DISTRO=Linux
> + fi
> +
> + if test "$QEMU_GA_VERSION" = ""; then
> + QEMU_GA_VERSION=`cat $source_path/VERSION`
> + fi
> +
> + case "$cpu" in
> + x86_64)
> + QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
> + ;;
> + i386)
> + QEMU_GA_MSI_ARCH="-D Arch=32"
> + ;;
> + *)
> + error_exit "CPU $cpu not supported for building installation package"
> + ;;
> + esac
> +
> +fi
> +
> +##########################################
>
> ##########################################
> # check if we have fdatasync
> @@ -4500,6 +4555,14 @@ if test "$mingw32" = "yes" ; then
> echo "CONFIG_QGA_VSS=y" >> $config_host_mak
> echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
> fi
> + if test "$guest_msi" = "yes"; then
Similarly, "!= no" here.
> + echo "QEMU_GA_MSI_MINGW_DLL_PATH=-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin" >> $config_host_mak
Why not set up the variable above?
Paolo
> + echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
> + echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
> + echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
> + echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
> + echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
> + fi
> else
> echo "CONFIG_POSIX=y" >> $config_host_mak
> fi
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script
2015-04-26 7:04 ` [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script Yossi Hindin
@ 2015-05-04 9:06 ` Paolo Bonzini
0 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2015-05-04 9:06 UTC (permalink / raw)
To: Yossi Hindin, qemu-devel; +Cc: yvugenfi, dfleytma, mdroth
On 26/04/2015 09:04, Yossi Hindin wrote:
> + <?ifndef env.QEMU_GA_VERSION ?>
> + <?error Environemtn variable QEMU_GA_VERSION undefined?>
> + <?endif?>
> +
"Environment"
Ironically, msitools was started exactly to build an installer with
qemu-ga (the idea was to do it with raw tables, that was a few months
before Marc-Andre wrote wixl). It only took 2.5 years...
Paolo
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile
2015-05-04 9:03 ` Paolo Bonzini
@ 2015-05-06 11:53 ` Yossi Hindin
2015-05-06 11:55 ` Paolo Bonzini
0 siblings, 1 reply; 10+ messages in thread
From: Yossi Hindin @ 2015-05-06 11:53 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: yvugenfi, dfleytma, qemu-devel, mdroth
I am submitting second version of patches.
----- Original Message -----
> From: "Paolo Bonzini" <pbonzini@redhat.com>
> To: "Yossi Hindin" <yhindin@redhat.com>, qemu-devel@nongnu.org
> Cc: yvugenfi@redhat.com, dfleytma@redhat.com, mdroth@linux.vnet.ibm.com
> Sent: Monday, May 4, 2015 12:03:02 PM
> Subject: Re: [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile
>
>
>
> On 26/04/2015 09:04, Yossi Hindin wrote:
> > +ifdef QEMU_GA_MSI_WITH_VSS
> > +${QEMU_GA_MSI}: qga/vss-win32/qga-vss.dll qemu-ga.exe
>
> Shouldn't the qemu-ga.exe dependency be unconditional?
Yes, it should. Fixed in the new patches.
>
> > +endif
> > +
> > +${QEMU_GA_MSI}: config-host.mak
> > +
> > +${QEMU_GA_MSI}: qga/installer/qemu-ga.wxs
> > + $(call quiet-command,QEMU_GA_VERSION="$(QEMU_GA_VERSION)"
> > QEMU_GA_MANUFACTURER="$(QEMU_GA_MANUFACTURER)"
> > QEMU_GA_DISTRO="$(QEMU_GA_DISTRO)" \
> > + wixl -o $@ ${QEMU_GA_MSI_ARCH} ${QEMU_GA_MSI_WITH_VSS}
> > ${QEMU_GA_MSI_MINGW_DLL_PATH} $<, " WIXL $@")
>
> Please use $(...) instead of ${...} for consistency.
Fixed. BTW. there are other places in the 'configure' script where ${} is used.
>
> > +
> > clean:
> > # avoid old build problems by removing potentially incorrect old files
> > rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h
> > gen-op-arm.h
> > rm -f qemu-options.def
> > + rm -f *.msi
> > find . \( -name '*.l[oa]' -o -name '*.so' -o -name '*.dll' -o -name
> > '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
> > rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.*
> > *.pod *~ */*~
> > rm -f fsdev/*.pod
> > diff --git a/configure b/configure
> > index 6969f6f..0aa79bb 100755
> > --- a/configure
> > +++ b/configure
> > @@ -316,6 +316,7 @@ snappy=""
> > bzip2=""
> > guest_agent=""
> > guest_agent_with_vss="no"
> > +guest_msi=""
> > vss_win32_sdk=""
> > win_sdk="no"
> > want_tools="yes"
> > @@ -1069,6 +1070,10 @@ for opt do
> > ;;
> > --disable-guest-agent) guest_agent="no"
> > ;;
> > + --enable-guest-msi) guest_msi="yes"
> > + ;;
> > + --disable-guest-msi) guest_msi="no"
> > + ;;
> > --with-vss-sdk) vss_win32_sdk=""
> > ;;
> > --with-vss-sdk=*) vss_win32_sdk="$optarg"
> > @@ -1407,6 +1412,8 @@ Advanced options (experts only):
> > --enable-quorum enable quorum block filter support
> > --disable-numa disable libnuma support
> > --enable-numa enable libnuma support
> > + --enable-guest-msi enable building guest agent Windows MSI
> > installation package
> > + --disable-guest-msi disable building guest agent Windows MSI
> > installation package
>
> --enable-guest-agent-msi?
Renamed
>
> Also, please keep the guest agent options together.
Done.
>
> >
> > NOTE: The object files are built at the place where configure is launched
> > EOF
> > @@ -3832,6 +3839,54 @@ if test "$mingw32" = "yes" -a "$guest_agent" != "no"
> > -a "$guest_agent_with_vss"
> > fi
> >
> > ##########################################
> > +# Guest agent Window MSI package
> > +
> > +if test "$guest_msi" = "yes"; then
>
> Since building the MSI is on-demand anyway ("make msi"), we might as well
> treat it similar to other configure options:
>
> - --enable-foo causes an error if the feature is not available
> - --disable-foo forcibly disable the feature
> - the default is to configure the feature if available, otherwise disable it
>
> This would be something like this:
>
> if test "$guest_agent" != yes; then
> if test "$guest_msi" = yes; then
> error_exit "MSI guest agent package requires guest agent enabled"
> fi
> guest_msi=no
> elif test "$mingw32" != "yes"; then
> if test "$guest_msi" = "yes"; then
> error_exit "MSI guest agent package is available only for MinGW Windows
> cross-compilation"
> fi
> guest_msi=no
> elif test ! has_wixl; then
> if test "$guest_msi" = "yes"; then
> error_exit "wixl not found, required for building MSI guest agent
> package"
> fi
> guest_msi=no
> fi
>
> if test "$guest_msi" != no; then
> ...
> fi
The logic changed according to your comment. Also, Makefile doesn't try to build MSI if MSI was not enabled by
configure script.
>
> > +
> > +
> > + if test "$guest_agent_with_vss" = "yes"; then
> > + QEMU_GA_MSI_WITH_VSS="-D InstallVss"
> > + fi
> > +
> > + if test "$QEMU_GA_MANUFACTURER" = ""; then
> > + QEMU_GA_MANUFACTURER=QEMU
> > + fi
> > +
> > + if test "$QEMU_GA_DISTRO" = ""; then
> > + QEMU_GA_DISTRO=Linux
> > + fi
> > +
> > + if test "$QEMU_GA_VERSION" = ""; then
> > + QEMU_GA_VERSION=`cat $source_path/VERSION`
> > + fi
> > +
> > + case "$cpu" in
> > + x86_64)
> > + QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
> > + ;;
> > + i386)
> > + QEMU_GA_MSI_ARCH="-D Arch=32"
> > + ;;
> > + *)
> > + error_exit "CPU $cpu not supported for building installation package"
> > + ;;
> > + esac
> > +
> > +fi
> > +
> > +##########################################
> >
> > ##########################################
> > # check if we have fdatasync
> > @@ -4500,6 +4555,14 @@ if test "$mingw32" = "yes" ; then
> > echo "CONFIG_QGA_VSS=y" >> $config_host_mak
> > echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
> > fi
> > + if test "$guest_msi" = "yes"; then
>
> Similarly, "!= no" here.
Done.
>
> > + echo "QEMU_GA_MSI_MINGW_DLL_PATH=-D Mingw_dlls=`$pkg_config
> > --variable=prefix glib-2.0`/bin" >> $config_host_mak
>
> Why not set up the variable above?
Assignment of QEMU_GA_MSI_MINGW_DLL_PATH grouped wihh other QEMU GA-related variables.
>
> Paolo
>
> > + echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >>
> > $config_host_mak
> > + echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
> > + echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >>
> > $config_host_mak
> > + echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
> > + echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
> > + fi
> > else
> > echo "CONFIG_POSIX=y" >> $config_host_mak
> > fi
> >
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile
2015-05-06 11:53 ` Yossi Hindin
@ 2015-05-06 11:55 ` Paolo Bonzini
0 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2015-05-06 11:55 UTC (permalink / raw)
To: Yossi Hindin; +Cc: yvugenfi, dfleytma, qemu-devel, mdroth
On 06/05/2015 13:53, Yossi Hindin wrote:
>>> > > +${QEMU_GA_MSI}: config-host.mak
>>> > > +
>>> > > +${QEMU_GA_MSI}: qga/installer/qemu-ga.wxs
>>> > > + $(call quiet-command,QEMU_GA_VERSION="$(QEMU_GA_VERSION)"
>>> > > QEMU_GA_MANUFACTURER="$(QEMU_GA_MANUFACTURER)"
>>> > > QEMU_GA_DISTRO="$(QEMU_GA_DISTRO)" \
>>> > > + wixl -o $@ ${QEMU_GA_MSI_ARCH} ${QEMU_GA_MSI_WITH_VSS}
>>> > > ${QEMU_GA_MSI_MINGW_DLL_PATH} $<, " WIXL $@")
>> >
>> > Please use $(...) instead of ${...} for consistency.
> Fixed. BTW. there are other places in the 'configure' script where ${} is used.
Do you mean in the Makefile (or the generated .mak files)?
The configure script is a bash script, so it uses ${...} to access
variables. The Makefile can use either ${...} or $(...), but the
parentheses are preferred over the braces.
Thanks,
Paolo
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-05-06 11:55 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-26 7:04 [Qemu-devel] [PATCH 0/4] MSI installation for Windows Guest Agent Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 1/4] qemu-ga: adding vss-[un]install options Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 2/4] qemu-ga: debug printouts to help troubleshoot installation Yossi Hindin
2015-04-26 7:04 ` [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script Yossi Hindin
2015-05-04 9:06 ` Paolo Bonzini
2015-04-26 7:04 ` [Qemu-devel] [PATCH 4/4] qemu-ga: Building Windows MSI installation with configure/Makefile Yossi Hindin
2015-05-04 9:03 ` Paolo Bonzini
2015-05-06 11:53 ` Yossi Hindin
2015-05-06 11:55 ` Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2015-04-19 10:53 [Qemu-trivial] Windows MSI installation package Joseph Hindin
2015-04-19 10:53 ` [Qemu-devel] [PATCH 3/4] qemu-ga: Introduce Windows MSI script Joseph Hindin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.