Re: [Win 8.1 x64] Unable to install June 2017 security rollup
I've finally fixed this issue, which also occured with the July security rollup.
I'll describe how I fixed it in the following lines (definitely not suitable for beginners) :
Windows Update always failed to update the wvmbusr driver (some Hyper-V stuff) and then rolled back the whole update.
The wvmbusr.inf file found in the according directory in WinSxS has a description on how to install it using devcon (command line : devcon install wvmbusr.inf root\vmbus).
Devcon is in the Windows Driver Development Kit (DDK) that can be downloaded from Microsoft in Tools\x64 (and x86). I used the 8.1 DDK since I use Win 8.1.
But devcon always fails immediately, except when installing the old driver.
Using x64dbg and 2 hours, I tracked the issue down.
The driver installer expected the driver folder wvmbusr.inf_amd64_4732973f9521a087 in System32\DriverStore\FileRepository to exist, even though it didn't copy the files there.
Manually creating that directory and copying the files from the WinSxS folder solved the devcon issue and the driver installed.
"devcon remove root\vmbus" should be used first to remove old devices.
With the driver updated, Windows Update still didn't succeed.
The driver updater puts its log lines to <Drive letter>:\Windows\Inf\setupapi.dev.log. Here is the relevant part that describes the issue :
Code:
>>> [Install Driver Updates]
>>> Section start 2017/07/12 20:22:40.442
cmd: C:\windows\winsxs\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_6.3.9600.18384_none_fa1d93c39b41b41a\TiWorker.exe -Embedding
sto: Image State = Specialized
sto: Image Architecture = amd64
sto: Transaction = CbsDriversAndPrimitives
sto: Driver Updates = 3
sto: {Publish Driver Package: C:\windows\System32\DriverStore\FileRepository\stornvme.inf_amd64_8a0d52bd20d1f36f\stornvme.inf} 20:22:40.457
sto: Driver Package = stornvme.inf_amd64_8a0d52bd20d1f36f
idb: {Publish Driver Package: C:\windows\System32\DriverStore\FileRepository\stornvme.inf_amd64_8a0d52bd20d1f36f\stornvme.inf} 20:22:40.473
idb: Changing active driver package from 'stornvme.inf_amd64_92ad9f893b39b63c' to 'stornvme.inf_amd64_8a0d52bd20d1f36f'.
cpy: Unpublished 'stornvme.inf'.
idb: Deindexed 1 driver file for 'stornvme.inf_amd64_92ad9f893b39b63c'.
idb: Deindexed 2 device IDs for 'stornvme.inf_amd64_92ad9f893b39b63c'.
cpy: Published 'stornvme.inf_amd64_8a0d52bd20d1f36f\stornvme.inf' to 'stornvme.inf'.
idb: Indexed 1 driver file for 'stornvme.inf_amd64_8a0d52bd20d1f36f'.
idb: Indexed 2 device IDs for 'stornvme.inf_amd64_8a0d52bd20d1f36f'.
idb: {Publish Driver Package: exit(0x00000000)} 20:22:40.489
sto: {Publish Driver Package: exit(0x00000000)} 20:22:40.489
sto: {Publish Driver Package: C:\windows\System32\DriverStore\FileRepository\wvmbusr.inf_amd64_4732973f9521a087\wvmbusr.inf} 20:22:40.489
sto: Driver Package = wvmbusr.inf_amd64_4732973f9521a087
idb: {Publish Driver Package: C:\windows\System32\DriverStore\FileRepository\wvmbusr.inf_amd64_4732973f9521a087\wvmbusr.inf} 20:22:40.489
idb: Activating driver package 'wvmbusr.inf_amd64_4732973f9521a087'.
cpy: Published 'wvmbusr.inf_amd64_4732973f9521a087\wvmbusr.inf' to 'oem102.inf'.
!!! idb: Failed to query driver INF matches for '{4d36e97d-e325-11ce-bfc1-08002be10318}'. Error = 0x0000054F
!!! idb: Failed to update driver package device IDs for 'wvmbusr.inf_amd64_4732973f9521a087'. Error = 0x0000054F
!!! idb: Failed to publish 'C:\windows\System32\DriverStore\FileRepository\wvmbusr.inf_amd64_4732973f9521a087\wvmbusr.inf'. Error = 0x0000054F
idb: {Publish Driver Package: exit(0x0000054f)} 20:22:40.489
!!! sto: Failed to publish driver package. Error = 0x0000054F
sto: {Publish Driver Package: exit(0x0000054f)} 20:22:40.489
!!! sto: Failed to publish all driver updates. Error = 0x0000054F
<<< Section end 2017/07/12 20:22:40.489
<<< [Exit status: FAILURE(0x0000054f)]
I've not been able to find out why that error occurs but since I've tried all combinations of driver uninstalled, old driver installed and driver updated, I've decided to modify the driver update module to make it skip the error.
Using AgentRansack (which doesn't support UTF-16 in-file search), I've searched for dlls with the text "Failed to publish driver package" with both "s and got the result drvstore.dll (C:\Windows\WinSxS\amd64_microsoft-windows-servicingstack_...).
Then I used x64dbg (
x64dbg) on a copy of that file, searched for referenced strings starting with ("Failed to publish ") and replaced the compare instruction "test ebx,ebx" before the log call with "xor ebx,ebx" to clear the error code to zero.
The last step was saving the patches to a new drvstore.dll and replacing the one in the original path. That finally did the trick and the update installed fine.
For reference, I've uploaded my modified amd64_microsoft-windows-servicingstack_31bf3856ad364e35_6.3.9600.18384_none_fa1d93c39b41b41a\drvstore.dll (use it on your own risk and only if the log looks exactly the same) here :
Dropbox - drvstore mod.zip