On Mon, Aug 25, 2025 at 5:32 PM Kostiantyn Kostiuk <kkost...@redhat.com> wrote:
>
> When QGA Installer failed to install QGA service but install
> QGA VSS provider, provider should be removed before installer
> exits. Otherwise QGA VSS will has broken infomation and

typos, should be:  "QGA VSS will have broken information""

> prevent QGA installation in next run.
>
> Signed-off-by: Kostiantyn Kostiuk <kkost...@redhat.com>
> ---
>  qga/installer/qemu-ga.wxs | 23 +++++++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs
> index df572adb4a..32b8308728 100644
> --- a/qga/installer/qemu-ga.wxs
> +++ b/qga/installer/qemu-ga.wxs
> @@ -151,6 +151,14 @@
>                Return="check"
>                >
>      </CustomAction>
> +    <CustomAction Id="UnRegisterCom_Rollback"
> +              ExeCommand='"[qemu_ga_directory]qga-vss.dll",DLLCOMUnregister'
> +              Execute="rollback"
> +              Property="rundll"
> +              Impersonate="no"
> +              Return="check"
> +              >
> +    </CustomAction>
>      <?endif?>
>
>      <Feature Id="QEMUFeature" Title="QEMU Guest Agent" Level="1">
> @@ -174,8 +182,19 @@
>
>      <InstallExecuteSequence>
>        <?ifdef var.InstallVss?>
> -      <Custom Action="UnRegisterCom" After="StopServices">Installed</Custom>
> -      <Custom Action="RegisterCom" After="InstallServices">NOT 
> REMOVE</Custom>
> +        <!-- Use explicit Sequence number to provide an absolute position in 
> the sequence-->
> +        <!-- This is needed to set "UnRegisterCom_Rollback" before 
> "RegisterCom" and after "InstallFiles"-->
> +        <!-- but, Wix detect this double condition incorrectly -->
> +
> +        <!-- UnRegisterCom_Rollback (for install rollback): at 5849, right 
> before RegisterCom (5850)-->
> +        <!-- Runs only if the installation fails and rolls back-->
> +        <Custom Action="UnRegisterCom_Rollback" Sequence="5849">NOT 
> REMOVE</Custom>
> +
> +        <!-- RegisterCom (for install): at 5850, right after InstallFiles 
> (5849) (old: After="InstallServices")-->
> +        <Custom Action="RegisterCom" Sequence="5850">NOT REMOVE</Custom>
> +
> +        <!-- UnRegisterCom (for uninstall): at 1901, right after 
> StopServices (1900) (old: After="StopServices")-->
> +        <Custom Action="UnRegisterCom" Sequence="1901">Installed</Custom>
>        <?endif?>
>      </InstallExecuteSequence>
>    </Product>
> --
> 2.50.1
>

Reviewed-by: Yan Vugenfirer <yvuge...@redhat.com>


Reply via email to