qemu/qga/installer/qemu-ga.wxs
<<
>>
Prefs
   1<?xml version="1.0" encoding="UTF-8"?>
   2<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   3  <?if $(var.Arch) = "64"?>
   4    <?define ArchLib=libgcc_s_seh-1.dll?>
   5    <?define GaProgramFilesFolder="ProgramFiles64Folder" ?>
   6  <?else?>
   7    <?if $(var.Arch) = "32"?>
   8      <?define ArchLib=libgcc_s_dw2-1.dll?>
   9      <?define GaProgramFilesFolder="ProgramFilesFolder" ?>
  10    <?else?>
  11      <?error Unexpected Arch value $(var.Arch)?>
  12    <?endif?>
  13  <?endif?>
  14
  15  <Product
  16    Name="QEMU guest agent"
  17    Id="*"
  18    UpgradeCode="{EB6B8302-C06E-4BEC-ADAC-932C68A3A98D}"
  19    Manufacturer="$(var.QEMU_GA_MANUFACTURER)"
  20    Version="$(var.QEMU_GA_VERSION)"
  21    Language="1033">
  22    <?if $(var.Arch) = 32 ?>
  23    <Condition Message="Error: 32-bit version of Qemu GA can not be installed on 64-bit Windows.">NOT VersionNT64</Condition>
  24    <?endif?>
  25    <Package
  26      Manufacturer="$(var.QEMU_GA_MANUFACTURER)"
  27      InstallerVersion="200"
  28      Languages="1033"
  29      Compressed="yes"
  30      InstallScope="perMachine"
  31      />
  32    <Media Id="1" Cabinet="qemu_ga.$(var.QEMU_GA_VERSION).cab" EmbedCab="yes" />
  33    <Property Id="WHSLogo">1</Property>
  34    <Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />
  35    <MajorUpgrade
  36      DowngradeErrorMessage="Error: A newer version of QEMU guest agent is already installed."
  37      />
  38
  39    <Directory Id="TARGETDIR" Name="SourceDir">
  40      <Directory Id="$(var.GaProgramFilesFolder)" Name="QEMU Guest Agent">
  41        <Directory Id="qemu_ga_directory" Name="Qemu-ga">
  42          <Component Id="qemu_ga" Guid="{908B7199-DE2A-4DC6-A8D0-27A5AE444FEA}">
  43            <File Id="qemu_ga.exe" Name="qemu-ga.exe" Source="$(var.BUILD_DIR)/qga/qemu-ga.exe" KeyPath="yes" DiskId="1"/>
  44            <ServiceInstall
  45              Id="ServiceInstaller"
  46              Type="ownProcess"
  47              Vital="yes"
  48              Name="QEMU-GA"
  49              DisplayName="QEMU Guest Agent"
  50              Description="QEMU Guest Agent"
  51              Start="auto"
  52              Account="LocalSystem"
  53              ErrorControl="ignore"
  54              Interactive="no"
  55              Arguments="-d --retry-path"
  56              >
  57            </ServiceInstall>
  58            <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="QEMU-GA" Wait="yes" />
  59          </Component>
  60          <?ifdef var.InstallVss?>
  61          <Component Id="libstdc++_6_lib" Guid="{55E737B5-9127-4A11-9FC3-A29367714574}">
  62            <File Id="libstdc++-6.lib" Name="libstdc++-6.dll" Source="$(var.BIN_DIR)/libstdc++-6.dll" KeyPath="yes" DiskId="1"/>
  63          </Component>
  64          <Component Id="qga_vss_dll" Guid="{CB19C453-FABB-4BB1-ABAB-6B74F687BFBB}">
  65            <File Id="qga_vss.dll" Name="qga-vss.dll" Source="$(var.BUILD_DIR)/qga/vss-win32/qga-vss.dll" KeyPath="yes" DiskId="1"/>
  66          </Component>
  67          <Component Id="qga_vss_tlb" Guid="{D8D584B1-59C2-4FB7-A91F-636FF7BFA66E}">
  68            <File Id="qga_vss.tlb" Name="qga-vss.tlb" Source="$(var.BUILD_DIR)/qga/vss-win32/qga-vss.tlb" KeyPath="yes" DiskId="1"/>
  69          </Component>
  70          <?endif?>
  71          <?if $(var.Arch) = "32"?>
  72          <Component Id="gspawn-helper-console" Guid="{446185B3-87BE-43D2-96B8-0FEFD9E8696D}">
  73            <File Id="gspawn-win32-helper-console.exe" Name="gspawn-win32-helper-console.exe" Source="$(var.BIN_DIR)/gspawn-win32-helper-console.exe" KeyPath="yes" DiskId="1"/>
  74          </Component>
  75          <Component Id="gspawn-helper" Guid="{CD67A5A3-2DB1-4DA1-A67A-8D71E797B466}">
  76            <File Id="gspawn-win32-helper.exe" Name="gspawn-win32-helper.exe" Source="$(var.BIN_DIR)/gspawn-win32-helper-console.exe" KeyPath="yes" DiskId="1"/>
  77          </Component>
  78          <?endif?>
  79          <?if $(var.Arch) = "64"?>
  80          <Component Id="gspawn-helper-console" Guid="{9E615A9F-349A-4992-A5C2-C10BAD173660}">
  81            <File Id="gspawn-win64-helper-console.exe" Name="gspawn-win64-helper-console.exe" Source="$(var.BIN_DIR)/gspawn-win64-helper-console.exe" KeyPath="yes" DiskId="1"/>
  82          </Component>
  83          <Component Id="gspawn-helper" Guid="{D201AD22-1846-4E4F-B6E1-C7A908ED2457}">
  84            <File Id="gspawn-win64-helper.exe" Name="gspawn-win64-helper.exe" Source="$(var.BIN_DIR)/gspawn-win64-helper-console.exe" KeyPath="yes" DiskId="1"/>
  85          </Component>
  86          <?endif?>
  87          <Component Id="iconv" Guid="{35EE3558-D34B-4F0A-B8BD-430FF0775246}">
  88            <File Id="iconv.dll" Name="iconv.dll" Source="$(var.BIN_DIR)/iconv.dll" KeyPath="yes" DiskId="1"/>
  89          </Component>
  90          <Component Id="libgcc_arch_lib" Guid="{ADD4D07D-4515-4AB6-AF3E-C904961B4BB0}">
  91            <File Id="libgcc_arch_lib" Name="$(var.ArchLib)" Source="$(var.BIN_DIR)/$(var.ArchLib)" KeyPath="yes" DiskId="1"/>
  92          </Component>
  93          <Component Id="libglib" Guid="{D31BFD83-2773-4B65-B45A-E0D2ADA58679}">
  94            <File Id="libglib_2.0_0.dll" Name="libglib-2.0-0.dll" Source="$(var.BIN_DIR)/libglib-2.0-0.dll" KeyPath="yes" DiskId="1"/>
  95          </Component>
  96          <Component Id="libintl" Guid="{A641BC2D-A907-4A94-9149-F30ED430878F}">
  97            <File Id="libintl_8.dll" Name="libintl-8.dll" Source="$(var.BIN_DIR)/libintl-8.dll" KeyPath="yes" DiskId="1"/>
  98          </Component>
  99          <Component Id="libssp" Guid="{7880087B-02B4-4EF6-A5D3-D18F8E3D90E1}">
 100            <File Id="libssp_0.dll" Name="libssp-0.dll" Source="$(var.BIN_DIR)/libssp-0.dll" KeyPath="yes" DiskId="1"/>
 101          </Component>
 102          <Component Id="libwinpthread" Guid="{6C117C78-0F47-4B07-8F34-6BEE11643829}">
 103            <File Id="libwinpthread_1.dll" Name="libwinpthread-1.dll" Source="$(var.BIN_DIR)/libwinpthread-1.dll" KeyPath="yes" DiskId="1"/>
 104          </Component>
 105          <?if $(var.LIBPCRE) = "libpcre1"?>
 106            <Component Id="libpcre" Guid="{7A86B45E-A009-489A-A849-CE3BACF03CD0}">
 107              <File Id="libpcre_1.dll" Name="libpcre-1.dll" Source="$(var.BIN_DIR)/libpcre-1.dll" KeyPath="yes" DiskId="1"/>
 108            </Component>
 109          <?else?>
 110            <Component Id="libpcre" Guid="{F92A3804-B59C-419D-8F29-99A30352C156}">
 111              <File Id="libpcre2_8_0.dll" Name="libpcre2-8-0.dll" Source="$(var.BIN_DIR)/libpcre2-8-0.dll" KeyPath="yes" DiskId="1"/>
 112            </Component>
 113          <?endif?>
 114          <Component Id="registry_entries" Guid="{D075D109-51CA-11E3-9F8B-000C29858960}">
 115            <RegistryKey Root="HKLM"
 116                         Key="Software\$(var.QEMU_GA_MANUFACTURER)\$(var.QEMU_GA_DISTRO)\Tools\QemuGA">
 117              <RegistryValue Type="string" Name="ProductID" Value="fb0a0d66-c7fb-4e2e-a16b-c4a3bfe8d13b" />
 118              <RegistryValue Type="string" Name="Version" Value="$(var.QEMU_GA_VERSION)" />
 119            </RegistryKey>
 120            <RegistryKey Root="HKLM"
 121                         Key="System\CurrentControlSet\Services\EventLog\Application\qemu-ga">
 122              <RegistryValue Type="integer" Name="TypesSupported" Value="7" />
 123              <RegistryValue Type="string" Name="EventMessageFile" Value="[qemu_ga_directory]qemu-ga.exe" />
 124            </RegistryKey>
 125            <RegistryKey Root="HKLM"
 126                         Key="System\CurrentControlSet\Services\QEMU Guest Agent VSS Provider">
 127              <RegistryValue Type="integer" Name="VssOption" Value="1" />
 128            </RegistryKey>
 129          </Component>
 130        </Directory>
 131      </Directory>
 132    </Directory>
 133
 134    <Property Id="rundll" Value="rundll32.exe"/>
 135    <Property Id="REINSTALLMODE" Value="amus"/>
 136
 137    <?ifdef var.InstallVss?>
 138    <CustomAction Id="RegisterCom"
 139              ExeCommand='"[qemu_ga_directory]qga-vss.dll",DLLCOMRegister'
 140              Execute="deferred"
 141              Property="rundll"
 142              Impersonate="no"
 143              Return="check"
 144              >
 145    </CustomAction>
 146    <CustomAction Id="UnRegisterCom"
 147              ExeCommand='"[qemu_ga_directory]qga-vss.dll",DLLCOMUnregister'
 148              Execute="deferred"
 149              Property="rundll"
 150              Impersonate="no"
 151              Return="check"
 152              >
 153    </CustomAction>
 154    <?endif?>
 155
 156    <Feature Id="QEMUFeature" Title="QEMU Guest Agent" Level="1">
 157      <ComponentRef Id="qemu_ga" />
 158      <?ifdef var.InstallVss?>
 159      <ComponentRef Id="libstdc++_6_lib" />
 160      <ComponentRef Id="qga_vss_dll" />
 161      <ComponentRef Id="qga_vss_tlb" />
 162      <?endif?>
 163      <ComponentRef Id="gspawn-helper-console" />
 164      <ComponentRef Id="gspawn-helper" />
 165      <ComponentRef Id="iconv" />
 166      <ComponentRef Id="libgcc_arch_lib" />
 167      <ComponentRef Id="libglib" />
 168      <ComponentRef Id="libintl" />
 169      <ComponentRef Id="libssp" />
 170      <ComponentRef Id="libwinpthread" />
 171      <ComponentRef Id="registry_entries" />
 172      <ComponentRef Id="libpcre" />
 173    </Feature>
 174
 175    <InstallExecuteSequence>
 176      <?ifdef var.InstallVss?>
 177      <Custom Action="UnRegisterCom" After="StopServices">Installed</Custom>
 178      <Custom Action="RegisterCom" After="InstallServices">NOT REMOVE</Custom>
 179      <?endif?>
 180    </InstallExecuteSequence>
 181  </Product>
 182</Wix>
 183