Hi,
I've got an issue with the libs installed by Electric Sheep (v2.7b17) causing Tomboy to crash at startup. Tomboy is using GTK# 2.12, which itself installs all it's unmanaged dependencies to "C:\Program Files\GtkSharp\2.12\bin". Unfortunately the presence of libpng13.dll in "C:\Windows" (put there by Electric Sheep) causes it to load that version instead of the one it's expecting, and it's then crashing when it tries to load the application icon.
They've recently had a few issues themselves with GTK+ clashes on Windows, and looking at what they've done I came up with the following proposal. I was wondering what you would think of it.
- Install unmanaged dependencies somewhere outside of %SystemRoot% (e.g. %ProgramFiles%\Electricsheep Screensaver\bin).
- Record the path to the dependencies in a registry key, or similar.
- Install executable binary wherever it needs to be (i.e. %SystemRoot%)
- Right at the start of WinMain(), programmatically add the value in the registry key from #2 to the start of the PATH environment variable, then continue as normal.
Hopefully that should allow the dlls to be loaded from "%ProgramFiles%\Electricsheep Screensaver\bin", rather than needing them in %SystemRoot%, which forces them on all other programs on the system.
Here's a link to the commit where they fixed the clashes they put a fix in for their GTK+ clashes: http://git.gnome.org/cgit/tomboy/commit/?id=9c3f56e939aeb8382ace739d2e7f...
Cheers,
James

2.7b18 works so far
FYI, I've just uninstalled 2.7b17 and installed 2.7b18. It seems that the clash with Tomboy I was suffering from has been fixed by the static linking. :-D
I'd still be a little worried about installing any dlls into %WINDIR% though, in case another clash occurs in future.
Mmmm.... DLL hell... unmanaged development, how I love thee! ;-)
Cheers for the fix!
James
No worries. BTW: I just tried
No worries.
BTW: I just tried moving all the files that the installer put in C:\Windows (except "ElectricSheep_2_7b17.scr") into ""C:\Program Files\Electricsheep Screensaver" (alongside everything else).
Obviously the screensaver itself no longer runs!
If I put a shortcut to "C:\Windows\ElectricSheep_2_7b17.scr" on the desktop, and set "Start in:" to "C:\Program Files\Electricsheep Screensaver", then it works fine, so I guess my proposal should work. As long as manipulating PATH works as well as changing the working dir, of course.
James
thanks for the detailed
thanks for the detailed report, we'll consider doing something like that.