Reviewed-by: Kostiantyn Kostiuk <[email protected]>

On Mon, Sep 7, 2026 at 1:48 PM Marc-André Lureau <
[email protected]> wrote:

> The VssOption registry value was unconditionally written to 1 on every
> install, overwriting any administrator customization. Additionally, it
> was created even when VSS support was not being installed.
>
> Move VssOption into its own component guarded by the InstallVss
> preprocessor conditional. Use a RegistrySearch to read any existing
> value into the VSSOPTION_VALUE property (defaulting to #1 for fresh
> installs), and write it back via MSI property substitution so admin
> customizations survive upgrades.
>
> Update the registry_entries component GUID since its resource set
> changed.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2919
> Signed-off-by: Marc-André Lureau <[email protected]>
> ---
>  qga/installer/qemu-ga.wxs | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
> index 32b8308728dc..5be19b211ccf 100644
> --- a/qga/installer/qemu-ga.wxs
> +++ b/qga/installer/qemu-ga.wxs
> @@ -31,6 +31,15 @@
>        />
>      <Media Id="1" Cabinet="qemu_ga.$(var.QEMU_GA_VERSION).cab"
> EmbedCab="yes" />
>      <Property Id="WHSLogo">1</Property>
> +    <?ifdef var.InstallVss?>
> +    <Property Id="VSSOPTION_VALUE" Value="#1">
> +      <RegistrySearch Id="VssOptionSearch"
> +                      Root="HKLM"
> +                      Key="System\CurrentControlSet\Services\QEMU Guest
> Agent VSS Provider"
> +                      Name="VssOption"
> +                      Type="raw" />
> +    </Property>
> +    <?endif?>
>      <Property Id="ARPNOMODIFY" Value="yes" Secure="yes" />
>      <MajorUpgrade
>        DowngradeErrorMessage="Error: A newer version of QEMU guest agent
> is already installed."
> @@ -111,7 +120,7 @@
>                <File Id="libpcre2_8_0.dll" Name="libpcre2-8-0.dll"
> Source="$(var.BIN_DIR)/libpcre2-8-0.dll" KeyPath="yes" DiskId="1"/>
>              </Component>
>            <?endif?>
> -          <Component Id="registry_entries"
> Guid="{D075D109-51CA-11E3-9F8B-000C29858960}">
> +          <Component Id="registry_entries"
> Guid="{62A2D9E2-B22F-410C-8E41-A0D9E653B944}">
>              <RegistryKey Root="HKLM"
>
> Key="Software\$(var.QEMU_GA_MANUFACTURER)\$(var.QEMU_GA_DISTRO)\Tools\QemuGA">
>                <RegistryValue Type="string" Name="ProductID"
> Value="fb0a0d66-c7fb-4e2e-a16b-c4a3bfe8d13b" />
> @@ -122,11 +131,16 @@
>                <RegistryValue Type="integer" Name="TypesSupported"
> Value="7" />
>                <RegistryValue Type="string" Name="EventMessageFile"
> Value="[qemu_ga_directory]qemu-ga.exe" />
>              </RegistryKey>
> +          </Component>
> +          <?ifdef var.InstallVss?>
> +          <Component Id="vss_registry_option"
> Guid="{75166af0-cdc9-423f-9a30-50bb59342b9b}">
>              <RegistryKey Root="HKLM"
>                           Key="System\CurrentControlSet\Services\QEMU
> Guest Agent VSS Provider">
> -              <RegistryValue Type="integer" Name="VssOption" Value="1" />
> +              <!-- Type="string" so MSI resolves [VSSOPTION_VALUE]; the
> "#N" raw format produces a REG_DWORD. -->
> +              <RegistryValue Type="string" Name="VssOption"
> Value="[VSSOPTION_VALUE]" KeyPath="yes" />
>              </RegistryKey>
>            </Component>
> +          <?endif?>
>          </Directory>
>        </Directory>
>      </Directory>
> @@ -167,6 +181,7 @@
>        <ComponentRef Id="libstdc++_6_lib" />
>        <ComponentRef Id="qga_vss_dll" />
>        <ComponentRef Id="qga_vss_tlb" />
> +      <ComponentRef Id="vss_registry_option" />
>        <?endif?>
>        <ComponentRef Id="gspawn-helper-console" />
>        <ComponentRef Id="gspawn-helper" />
>
> --
> 2.55.0.543.g5ebe2ebe4ea8
>
>

Reply via email to