From: Elizabeth Figura <zfigura(a)codeweavers.com> --- dlls/setupapi/devinst.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index b22ab64a022..e70431e4ec9 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -6198,7 +6198,9 @@ BOOL WINAPI SetupUninstallOEMInfA(const char *inf_file, DWORD flags, void *reser */ BOOL WINAPI SetupUninstallOEMInfW(const WCHAR *inf_file, DWORD flags, void *reserved) { + struct driver_package package; WCHAR target[MAX_PATH]; + DWORD ret; TRACE("inf_file %s, flags %#lx, reserved %p.\n", debugstr_w(inf_file), flags, reserved); @@ -6214,12 +6216,21 @@ BOOL WINAPI SetupUninstallOEMInfW(const WCHAR *inf_file, DWORD flags, void *rese wcscat(target, L"\\inf\\"); wcscat(target, inf_file); - if (flags & SUOI_FORCEDELETE) - return DeleteFileW(target); + if ((ret = parse_inf(&package, target))) + { + SetLastError(ret); + return FALSE; + } - FIXME("not deleting %s\n", debugstr_w(target)); + if (package.already_installed) + ret = driver_package_delete(&package); + else + ret = ERROR_FILE_NOT_FOUND; - return TRUE; + driver_package_cleanup(&package); + + SetLastError(ret); + return !ret; } HRESULT WINAPI DriverStoreFindDriverPackageW(const WCHAR *inf_path, void *unk1, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6135