Exported functions in tests
Hans Leidekker
hans at codeweavers.com
Fri Oct 13 02:16:16 CDT 2017
On Thu, 2017-10-12 at 23:09 -0500, Zebediah Figura wrote:
> I was working on a test for MSI type 1 custom actions, i.e. functions
> exported from a given DLL and called by the install script. I've tested
> both with an independent file and in the Wine test environment, and I've
> found that I can successfully export functions from the executable
> itself with DECLSPEC_EXPORT, and MSI will successfully execute the
> function, as the attached patch demonstrates.
>
> The function returns ERROR_SUCCESS, and changing this to other values
> gets reflected in the install's error code appropriately. However, as
> soon as I add a function call to the custom action, the install fails
> with ERROR_INSTALL_FAILURE, and the function is never called—making it
> look, in all probability, like a page fault occurred. This is the case
> when compiling with mingw-w64, both inside the Wine test environment and
> in an independent file.
>
> Notably I have no trouble calling DLLs taken from real MSI packages in
> this way. I also have no trouble calling the function if I use
> GetModuleHandle() and GetProcAddress() directly, nor do I run into any
> trouble whatsoever running the custom action on Linux. It is
> specifically this environment—running this function as part of a custom
> action, on Windows.
Does it fail on any function call or just calls back into the test
execu
table? Can you call a kernel API? Perhaps it's some sort of
protection
scheme.
More information about the wine-devel
mailing list