Browse Source

qga/installer: Remove QGA VSS if QGA installation failed

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
prevent QGA installation in next run.

Reviewed-by: Yan Vugenfirer <yvugenfi@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250825143155.160913-1-kkostiuk@redhat.com
Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
pull/299/head
Kostiantyn Kostiuk 12 months ago
parent
commit
85ff0e956b
  1. 23
      qga/installer/qemu-ga.wxs

23
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>

Loading…
Cancel
Save