From: Sameeh Jubran <sjub...@redhat.com> We can get VSS_E_PROVIDER_ALREADY_REGISTERED error if for some reason the uninstall of qemu-ga didn't complete successfully. In this case we can try to unregister the component service and attempt to register it again.
Signed-off-by: Sameeh Jubran <sjub...@redhat.com> --- qga/vss-win32/install.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index 51838eeb26..e7bc5e1d9d 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -443,6 +443,15 @@ STDAPI DllRegisterServer(void) VSS_PROV_SOFTWARE, const_cast<WCHAR*>(QGA_PROVIDER_VERSION), g_gProviderVersion); + if (hr == (long int) VSS_E_PROVIDER_ALREADY_REGISTERED) { + DllUnregisterServer(); + hr = pVssAdmin->RegisterProvider(g_gProviderId, CLSID_QGAVSSProvider, + const_cast<WCHAR * >(QGA_PROVIDER_LNAME), + VSS_PROV_SOFTWARE, + const_cast<WCHAR * >(QGA_PROVIDER_VERSION), + g_gProviderVersion); + } + if (FAILED(hr)) { errmsg_dialog(hr, "RegisterProvider failed"); } -- 2.13.6