2006-08-12, 09:48 PM
sub,
(While I'm not a developer, it seemed this post would be better here than in the support forum. Feel free to move it if you prefer it elsewhere.)
Today I had two problems because of dll conflicts. See here:
http://forums.nextpvr.com/showthread.php?t=18726 and
http://forums.nextpvr.com/showthread.php?t=18728
It seems to me that while the .Net runtime does its job of protecting the software with manifest checking for unintended dll's, that the structure we're using for the plugins and utilities walks us back into dll hell.
While the plugin dll's are in the \Plugins subfolder of gbpvr, many of them share dlls located in the gbpvr folder. Some of them assume that whatever is there is fine and they share it (which may give them manifest errors), while others install their own dlls, overwriting what gbpvr or some other plugin or utilities may have installed (giving something else the manifest error).
I'm not a developer so perhaps there are better or more clever ways to solve this, but one alternative would be for any plugin to explicitly install its dlls into its own sub-folder of the \Plugins folder. E.g., the XRecord dll would be in ..\Plugins, but any dlls or other support files it had to install would be in ..\Plugins\XRecord folder.
One advantage of that solution is that it requires no changes at all to gbpvr -- just advice and encouragement to the plugin writers to change to the new system. The other side of the coin, though is that it means there are no teeth in enforcement. An alternative would be to totally change the present system in a way where any plugin that doesn't comply with the new scheme won't be found and won't load.
Also, any non-plugin utilities (e.g., zaptools, GetTheaterListings, etc.) should also be constrained or contained in a similar fashion.
My purpose here isn't to argue for any particular solution -- only that this is begging to be solved.
Cheers .... Bob
(While I'm not a developer, it seemed this post would be better here than in the support forum. Feel free to move it if you prefer it elsewhere.)
Today I had two problems because of dll conflicts. See here:
http://forums.nextpvr.com/showthread.php?t=18726 and
http://forums.nextpvr.com/showthread.php?t=18728
It seems to me that while the .Net runtime does its job of protecting the software with manifest checking for unintended dll's, that the structure we're using for the plugins and utilities walks us back into dll hell.
While the plugin dll's are in the \Plugins subfolder of gbpvr, many of them share dlls located in the gbpvr folder. Some of them assume that whatever is there is fine and they share it (which may give them manifest errors), while others install their own dlls, overwriting what gbpvr or some other plugin or utilities may have installed (giving something else the manifest error).
I'm not a developer so perhaps there are better or more clever ways to solve this, but one alternative would be for any plugin to explicitly install its dlls into its own sub-folder of the \Plugins folder. E.g., the XRecord dll would be in ..\Plugins, but any dlls or other support files it had to install would be in ..\Plugins\XRecord folder.
One advantage of that solution is that it requires no changes at all to gbpvr -- just advice and encouragement to the plugin writers to change to the new system. The other side of the coin, though is that it means there are no teeth in enforcement. An alternative would be to totally change the present system in a way where any plugin that doesn't comply with the new scheme won't be found and won't load.
Also, any non-plugin utilities (e.g., zaptools, GetTheaterListings, etc.) should also be constrained or contained in a similar fashion.
My purpose here isn't to argue for any particular solution -- only that this is begging to be solved.
Cheers .... Bob