Re: "Known" DLLs

2012-02-17 Thread Austin English
On Fri, Feb 17, 2012 at 03:03, Adam Klobukowski
 wrote:
> W dniu 17 lutego 2012 09:20 użytkownik Frédéric Delanoy
>  napisał:
>> 2012/2/16 Adam Kłobukowski :
>>> Hello
>>>
>>> I've been a Wine user for a long time alreadey, since all Wine could do was
>>> running winesweper very slowly ;)
>>>
>>> I'd like to propose a feature that could be implemented in Wine.
>>>
>>> Wine does not implement all Windows APIs (yet ;)) and big parts of existing
>>> implementations are only stubs. Therefore, it could be usefull if Wine would
>>> be able to detect when a program tries to use a DLL that is not
>>> implememnted, but is easily available for download. .NET, MSXML, VCRUN*
>>> comes in mind. Instead of just failing, Wine could offer advice to the user
>>> how to deal with that.
>>>
>>> This could also help with APIs that are mostly stubbed, work for some use
>>> cases, but are expected to fail in other - they could detect if an app is
>>> trying to use unsuported case and take action.
>>
>> Problem is that some applications work even when some DLLs are mostly
>> stubbed, and would fail when setting stuff to native/winetricksing,
>> while other might do the opposite.
>> Worse, even the same app/same version would need different workarounds...
>
> I think detecting the need for whole APIs (.NET, etc) it could be
> possible. Stubs seems more tricky, but maybe it is possible in some
> well defined cases

This is already done for .NET, see dlls/mscoree/metahost.c

-- 
-Austin




Re: "Known" DLLs

2012-02-17 Thread Adam Klobukowski
W dniu 17 lutego 2012 09:20 użytkownik Frédéric Delanoy
 napisał:
> 2012/2/16 Adam Kłobukowski :
>> Hello
>>
>> I've been a Wine user for a long time alreadey, since all Wine could do was
>> running winesweper very slowly ;)
>>
>> I'd like to propose a feature that could be implemented in Wine.
>>
>> Wine does not implement all Windows APIs (yet ;)) and big parts of existing
>> implementations are only stubs. Therefore, it could be usefull if Wine would
>> be able to detect when a program tries to use a DLL that is not
>> implememnted, but is easily available for download. .NET, MSXML, VCRUN*
>> comes in mind. Instead of just failing, Wine could offer advice to the user
>> how to deal with that.
>>
>> This could also help with APIs that are mostly stubbed, work for some use
>> cases, but are expected to fail in other - they could detect if an app is
>> trying to use unsuported case and take action.
>
> Problem is that some applications work even when some DLLs are mostly
> stubbed, and would fail when setting stuff to native/winetricksing,
> while other might do the opposite.
> Worse, even the same app/same version would need different workarounds...

I think detecting the need for whole APIs (.NET, etc) it could be
possible. Stubs seems more tricky, but maybe it is possible in some
well defined cases

> I really don't think we want to replicate the appdb in the code...

It does not seem to me as replicating appdb in code, at least for
APIs. Stubs, yes may seem so.

-- 
Semper Fidelis

Adam Klobukowski
adamklobukow...@gmail.com




Re: "Known" DLLs

2012-02-17 Thread Frédéric Delanoy
2012/2/16 Adam Kłobukowski :
> Hello
>
> I've been a Wine user for a long time alreadey, since all Wine could do was
> running winesweper very slowly ;)
>
> I'd like to propose a feature that could be implemented in Wine.
>
> Wine does not implement all Windows APIs (yet ;)) and big parts of existing
> implementations are only stubs. Therefore, it could be usefull if Wine would
> be able to detect when a program tries to use a DLL that is not
> implememnted, but is easily available for download. .NET, MSXML, VCRUN*
> comes in mind. Instead of just failing, Wine could offer advice to the user
> how to deal with that.
>
> This could also help with APIs that are mostly stubbed, work for some use
> cases, but are expected to fail in other - they could detect if an app is
> trying to use unsuported case and take action.

Problem is that some applications work even when some DLLs are mostly
stubbed, and would fail when setting stuff to native/winetricksing,
while other might do the opposite.
Worse, even the same app/same version would need different workarounds...

I really don't think we want to replicate the appdb in the code...

Frédéric




re: "Known" DLLs

2012-02-16 Thread Dan Kegel
This has been discussed off and on over the years, e.g.
http://www.winehq.org/pipermail/wine-devel/2009-September/078441.html
http://www.winehq.org/pipermail/wine-devel/2010-September/086465.html
http://www.winehq.org/pipermail/wine-devel/2010-September/086469.html

There is a kind of notification system in place, the winediag debug
channel.  I think the intent of that was to make it possible for distros
to show those messages to the user (maybe with a dialog),
and hide all the other log messages.

At the moment, the dll load failure message doesn't go to +winediag.
Maybe it should (although there are probably times when it's safe
to ignore them, so I'm not sure).

Anyway, +winediag or not, one can imagine a wrapper outside wine
that notices events like this and offers to assist the user in those few
cases (mfc42? vb6run?)  where there's a high likelihood of success.

Here's a crude example:

wine "$@" 2>&1 | tee foo.log
if grep -i "Library MFC42.DLL" foo.log
then
zenity --warning --text "This app seems to need mfc42.  Try
running winetricks mfc42."
fi

It would take a bunch of work to get something worth deploying,
but if you're interested, go for it...




Re: "Known" DLLs

2012-02-16 Thread Adam Kłobukowski

W dniu 16.02.2012 19:34, Stefan Dösinger pisze:

Am Donnerstag, 16. Februar 2012, 18:45:37 schrieb Adam Kłobukowski:

Therefore, it could be usefull
if Wine would be able to detect when a program tries to use a DLL that
is not implememnted, but is easily available for download. .NET, MSXML,
VCRUN* comes in mind. Instead of just failing, Wine could offer advice
to the user how to deal with that.

This could also help with APIs that are mostly stubbed, work for some
use cases, but are expected to fail in other - they could detect if an
app is trying to use unsuported case and take action.

Well, if a DLL is outright missing you should get an ERR. If the app calls a
stub, the stub writes a FIXME. I'm not sure what else we can do - showing up a
dialog box in those cases is a bad idea. Or do you mean make the messages more
informative, like write "you may want to install the Visual Basic 6 runtime
from http://microsoft.com/foo/bar"; instead of something like "could not load
msvb60.dll"?


While Wine log might be enough for me, for less tech savvy users it is a 
mistery, and in most cases they do not even know it exists. Log message 
seems an easy solution, but a dialog box might be much better for a 
'customer base' of such feature. Such dialog should be shown only once 
per program run,


In some cases (.NET?) such deature could even offer an auto-fix (using 
winetricks?).



Arguably the worst situation is when the app loads a library at runtime
instead of linking and thus doesn't cause linker errors, or if it attempts to
load a OLE class and users misinterpret the err:ole: error as an OLE issue
rather than a missing library.


Still, apps loads some DLL, ant this can be intercepted. I do not know 
enough about how OLE works, but maybe a sister 'Known OLE keys' feature 
might me usefull too :)



Overall I'd prefer to maintain such information in the documentation or wiki
instead of the code.


This could be handled by some kind of configuration (xml?) file.

AdamK





Re: "Known" DLLs

2012-02-16 Thread Stefan Dösinger
Am Donnerstag, 16. Februar 2012, 18:45:37 schrieb Adam Kłobukowski:
> Therefore, it could be usefull
> if Wine would be able to detect when a program tries to use a DLL that
> is not implememnted, but is easily available for download. .NET, MSXML,
> VCRUN* comes in mind. Instead of just failing, Wine could offer advice
> to the user how to deal with that.
> 
> This could also help with APIs that are mostly stubbed, work for some
> use cases, but are expected to fail in other - they could detect if an
> app is trying to use unsuported case and take action.
Well, if a DLL is outright missing you should get an ERR. If the app calls a 
stub, the stub writes a FIXME. I'm not sure what else we can do - showing up a 
dialog box in those cases is a bad idea. Or do you mean make the messages more 
informative, like write "you may want to install the Visual Basic 6 runtime 
from http://microsoft.com/foo/bar"; instead of something like "could not load 
msvb60.dll"?

Arguably the worst situation is when the app loads a library at runtime 
instead of linking and thus doesn't cause linker errors, or if it attempts to 
load a OLE class and users misinterpret the err:ole: error as an OLE issue 
rather than a missing library.

Overall I'd prefer to maintain such information in the documentation or wiki 
instead of the code.





"Known" DLLs

2012-02-16 Thread Adam Kłobukowski

Hello

I've been a Wine user for a long time alreadey, since all Wine could do 
was running winesweper very slowly ;)


I'd like to propose a feature that could be implemented in Wine.

Wine does not implement all Windows APIs (yet ;)) and big parts of 
existing implementations are only stubs. Therefore, it could be usefull 
if Wine would be able to detect when a program tries to use a DLL that 
is not implememnted, but is easily available for download. .NET, MSXML, 
VCRUN* comes in mind. Instead of just failing, Wine could offer advice 
to the user how to deal with that.


This could also help with APIs that are mostly stubbed, work for some 
use cases, but are expected to fail in other - they could detect if an 
app is trying to use unsuported case and take action.


Adam Klobukowski