All of lore.kernel.org
 help / color / mirror / Atom feed
* [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">&amp;QEMUFeature &lt;&gt; 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.