Index: dll/win32/setupapi/devinst.c =================================================================== --- dll/win32/setupapi/devinst.c (revision 53897) +++ dll/win32/setupapi/devinst.c (working copy) @@ -4826,10 +4826,10 @@ PLIST_ENTRY ItemList = list->ListHead.Flink; while (ItemList != &list->ListHead) { - // TODO - //if (good one) - // break; - FIXME("not implemented\n"); + deviceInfo = CONTAINING_RECORD(ItemList, struct DeviceInfo, ListEntry); + if (!wcscmp(deviceInfo->instanceId, DeviceInstanceId)) + break; + deviceInfo = NULL; ItemList = ItemList->Flink; } @@ -5467,7 +5467,7 @@ SelectedDriver->Details.InfFileName, NULL, SPOST_NONE, - SP_COPY_NOOVERWRITE, + 0, NewFileName, MAX_PATH, NULL, NULL); Index: dll/win32/setupapi/install.c =================================================================== --- dll/win32/setupapi/install.c (revision 53896) +++ dll/win32/setupapi/install.c (working copy) @@ -1814,6 +1814,10 @@ GetLineText(hInf, ServiceSection, DescriptionKey, &Description); GetLineText(hInf, ServiceSection, DependenciesKey, &Dependencies); + /* If there is no group, we must not request a tag */ + if (!LoadOrderGroup || !*LoadOrderGroup) + useTag = FALSE; + hService = OpenServiceW( hSCManager, ServiceName,