So WineTest is not running the vcomp tests. What happens is this:
* It parses the vcomp_test.exe filename and concludes that this tests the vcomp dll.
* It does a LoadLibraryExA("vcomp.dll", NULL, LOAD_LIBRARY_AS_DATAFILE) which fails (as expected) and concludes that the dll is missing:
vcomp=dll is missing
* Since the dll is missing WineTest skips the vcomp tests.
According to Dan Kegel this is a manifest / activation context issue and he sent a patch for it [1]. However the patch was for the TestBot [2], not WineTest, and as far as I can tell it's not working.
Furthermore WineTest already has activation context code that seems equivalent to Dan Kegel's patch.
Does anyone know how to fix WineTest?
[1] https://bugs.winehq.org/show_bug.cgi?id=31609 https://www.winehq.org/pipermail/wine-patches/2012-September/117631.html
[2] Paradoxically the TestBot has no problem running the vcomp tests now that they dynamically load the vcomp dll. That's because the TestBot makes no assumption based on the executable filename since one can upload test binaries that don't follow any naming scheme. So now the test dynamically loads vcomp.dll the TestBot cannot check for it.
Could we try to run the .exe without specifying a test, and if it fails due to a missing dll (can we determine that?), skip the test?
On Wed, 27 Sep 2017, Vincent Povirk wrote:
Could we try to run the .exe without specifying a test, and if it fails due to a missing dll (can we determine that?), skip the test?
Your idea is to not check for missing dlls and instead just run the executable as a way to check that all the required dlls are present?
The problem is that if a dll is missing the executable remains stuck while Windows displays a dialog saying the dll is missing. Also, killing the process does not dismiss the windows dialog.
Maybe we could take a page out of the shlexec test and wait for the executable for 5 seconds and do a FindWindowA("#32770", "Windows") to click on the OK ourselves.
But I believe on Windows 8+ we had problems due to Windows popping up a window offering to install the missing dll but we could not intercept that one. That said the dlls would be installed on machines that run WineTest regularly anyway.