From: Sameeh Jubran <sjub...@redhat.com> This patch handles the case where VSS Provider is already registered, where in such case qga uninstalls the provider and registers it again.
Signed-off-by: Sameeh Jubran <sjub...@redhat.com> Signed-off-by: Basil Salman <ba...@daynix.com> --- qga/vss-win32/install.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index 6713e58670..28deeb9f0e 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -443,6 +443,16 @@ 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.17.2