Re: .Net Exodus plugins
"Peter Millard" <me-STcBuFROdrv2eFz/[email protected]> Thu, 15 Dec 2005 15:24:52 -0700
| Newsgroups | gmane.network.jabber.exodus.user |
|---|---|
| Message-ID | <00af01c601c6$5e4bdbe0$e201020a@pmillard2k> |
This is a message for Joe, I'm just relaying it to the list for him: ---------------------------------------------------------------------------- It sounds like you don't have the head of SVN. You shouldn't have to modify your exodus.xml file by hand any more; instead the registry entries that get added should be sufficient. That would also cause the plugin not to show up in the plugin list. On Dec 15, 2005, at 8:27 AM, Daniel Chandran wrote: > Thanks for the example Joe. I tested it out and works fine. > > Here are the steps I went through, it's a revised list originally sent by > Prasad. > > 1. I use Visual Studio .NET 2003, so things like regasm happen automatically > with the correct project settings. > 2. Create a project of type ClassLibrary. In your Project -> <yourproject> > Properties -> Configuration Properties, set "Register for Com Interop" to > true. > 3. Add Exodus.cs base class to your project. > 4. In Project -> Add Reference Dialog box, add Exodus.exe as library in the > COM components. > 5. Implement your class derived from Exodus.BasePlugin, and add your > override methods. > 6. Build, and put you plugin.dll and Interop.ExodusCOM.dll in whatever > location you prefer. As Joe. H suggestion for now don't put in the Exodus > plugins directory(??). > 7. Manually modify your exodus.xml file and your progid to plugin_selected > section, and the path to your plugin dll in the plugin_files section. If > you are try Joe's example the progid will ClassLibrary2.Class. > 8 Start Exodus, if you start a new chat you will see the IP addr put by the > plugin in your chat window. > > Some questions. > 1. The example plugin works fine, but it does not show up in the Options > -> Plugins section in Exodus. > 2. What's the correct way to implment the IExodusChatPlugin? > > Thanks, > Daniel G. Chandran > > On 12/15/05, Joe Hildebrand <joe-bvCY4hpNeH/[email protected]> wrote: >> >> Sorry this took so long. >> Class1 is an example, and Exodus.cs has the base class. >> >> >> >> >> Again, don't put the .dll in the plugins directory for now. >> >> On Dec 9, 2005, at 11:15 AM, Daniel Chandran wrote: >> >>> Could Joe H. or somebody who is an expert an COM - .Net Interop >>> outline the exact steps to follow for Exodus to recognize the >>> plugins written in .NET? >>> >>> I am using Visual Studio, so it automatically does the regasm, and >>> I see the plugin listed in the registry under HKEY_CLASSES_ROOT\CLSID. >>> >>> VS generates two assemblies Interop.ExodusCOM.dll and MyPlugin.dll. >>> I put both of them in C:\Program Files\Exodus\Plugins. Exodus does >>> not recognize my plugin. I did a TlbExp on MyPlugin.dll. After >>> that Exodus recogizes the MyPlugin, but on attempting to load, >>> complains that it's not a valid Windows Image!! >>> >>> Any help is greatly appreciated. >>> >>> Thanks, >>> Daniel Chandran >>> >>> On 12/9/05, Durga Prasad <dprasad_114-/[email protected] > wrote: >>> hi, >>> >>> Thanks your very much for your reply. Your information helps a lot >>> to develops plugins accurately for Windows environment. I still >>> have doubts on custom plugin interaction of Exodus. I ll post it >>> in the near time. >>> >>> Would you send your .NET base class that will register >>> automatically to windows registry? >>> >>> thanks, >>> Durga Prasad T >>> >>> >>> [email protected] wrote: Send Exodus mailing list >>> submissions to >>> [email protected] >>> >>> To subscribe or unsubscribe via the World Wide Web, visit >>> http://mail.jabber.org/mailman/listinfo/exodus >>> or, via email, send a message with subject or body 'help' to >>> [email protected] >>> >>> You can reach the person managing the list at >>> [email protected] >>> >>> When replying, please edit your Subject line so it is more specific >>> than "Re: Contents of Exodus digest..." >>> Today's Topics: >>> >>> 1. Re: Help in Exodus Plugin creation in C# (Joe Hildebrand) >>> From: Joe Hildebrand < joe-bvCY4hpNeH/[email protected]> >>> To: Discussion list for all things <[email protected]> >>> Date: Sun, 27 Nov 2005 17:13:07 -0700 >>> Subject: Re: [Exodus] Help in Exodus Plugin creation in C# >>> >>> If you use the head of subversion, you'll find this a *lot* easier. >>> Here is the procedure: >>> >>> - Put your .dll anywhere. Eventually, if you put it in Exodus/ >>> plugins/net or something, this will get more automated, but for the >>> moment it doesn't matter >>> - Make sure to call regasm on the .dll >>> - Put a registry value at HKCU\Software\Jabber\Exodus\Plugins whose >>> name is the progid of your control, and whose value is a string that >>> describes the plugin. >>> - If you don't have the head of SVN, edit your preference file, and >>> add your progid to the plugin_selected preference. It's a >>> stringList, so each item has an around it. >>> - If you *do* have the head of SVN, your plugin will just show up in >>> the list and can be selected. >>> >>> You'll no longer have to try to get the .TLB into the .dll, which is >>> nice. The downside is that you'll have to figure out (for the >>> moment) how to get your users to call regasm on your .dll to install >>> it. Eventually I'll figure out how to determine which CLR version >>> you compiled with, find the correct version of regasm, and run it >>> automatically. >>> >>> I've also got a .Net base class that does all of the registry stuff >>> automatically. I'll try to remember to post it when I'm back in the >>> office on Monday. >>> >>> On Nov 22, 2005, at 8:19 PM, Durga Prasad wrote: >>> >>>> hi All, >>>> >>>> I want to write a Plugin for Exodus Client using C#. For testing >>>> purpose, I wrote main class which implements IExodusPlugin >>>> interface that will add a Menu Item if the user clicks on a Roster >>>> name. >>>> >>>> The following is the structure of the Main Class :: >>>> >>>> using System; >>>> using System.Runtime.InteropServices; >>>> >>>> namespace ExodusPluginTesting >>>> { >>>> /// >>>> /// Summary description for Class1. >>>> /// >>>> >>>> [ Guid("E10C6CDE-8D8B-46c2-AE85-0185039E9958") ] >>>> [ClassInterface( ClassInterfaceType.AutoDual)] >>>> public class ExodusPluginTesting : Exodus.IExodusPlugin >>>> { >>>> public string ID = ""; >>>> Exodus.ExodusController exodusController; >>>> >>>> public void Startup(Exodus.ExodusController exController) >>>> { >>>> string s = "This is my Plugin"; >>>> exodusController = >>>> ( Exodus.ExodusController) exController; >>>> ID = exodusController.addContactMenu(s); >>>> } >>>> >>>> public void Shutdown() >>>> { >>>> exodusController.removeContactMenu(ID); >>>> exodusController = null; >>>> } >>>> >>>> public void Process(string xpath, string eventRaised, >>>> string xmlObject) >>>> { >>>> } >>>> >>>> public void NewChat(string jID, Exodus.ExodusChat exodusChat) >>>> { >>>> } >>>> >>>> public void NewRoom(string jID, Exodus.ExodusChat Room) >>>> { >>>> } >>>> >>>> public string NewIM(string jID, ref string body, ref >>>> string subject, string xTags) >>>> { >>>> string k = " " ; >>>> return (k); >>>> } >>>> >>>> public void Configure() >>>> { >>>> } >>>> >>>> public void MenuClick(string ID) >>>> { >>>> } >>>> >>>> public void MsgMenuClick(string ID,string jID, ref string >>>> body,ref string subject) >>>> { >>>> } >>>> >>>> public void NewOutgoingIM(string jID, Exodus.ExodusChat >>>> instantMSG) >>>> { >>>> } >>>> } >>>> } >>>> >>>> >>>> I converted "Exodus.tlb" to "Exodus.dll" using "tlbImp.exe" tool. >>>> And I included this 'Exodus.dll' in my code to import the >>>> "IExodusPlugin" interface structure into the Main Class >>>> (ExodusPluginTesting()). >>>> I built the solution (with Component Registry). THE OUTPUT files I >>>> got is "ExodusPluginTesting.dll" and "ExodusPluginTesting.tlb". >>>> >>>> >>>> Then I placed the 'ExodusPluginTesting.dll' file in "C:\Program >>>> Files\Exodus\Plugins" directory. I started Exodus client. But I >>>> didn't view the PLUGIN in the LIST. I tried several builds and >>>> placed it in PLUGINS directory, still, I didn't find it in the list. >>>> >>>> >>>> Is my Interface implementation correct or shall I need to declare >>>> the interface structure also (without using Exodus.dll). >>>> >>>> Can anybody help me in this aspect what procedure to follow to >>>> create .DLL Plugin for EXODUS. >>>> >>>> >>>> >>>> Thanks, >>>> Durga Prsad T >>>> >>>> Win a Yahoo! Vespa NEW - Yahoo! Cars has 3 Vespa LX125s to be won >>>> Enter Now! >>>> _______________________________________________ >>>> Exodus mailing list >>>> [email protected] >>>> http://mail.jabber.org/mailman/listinfo/exodus >>> >>> _______________________________________________ >>> Exodus mailing list >>> [email protected] >>> http://mail.jabber.org/mailman/listinfo/exodus >>> >>> >>> Yahoo! Messenger NEW - crystal clear PC to PC calling worldwide >>> with voicemail >>> >>> >>> _______________________________________________ >>> Exodus mailing list >>> [email protected] >>> http://mail.jabber.org/mailman/listinfo/exodus >>> >>> >>> >>> _______________________________________________ >>> Exodus mailing list >>> [email protected] >>> http://mail.jabber.org/mailman/listinfo/exodus >> >> >> >> _______________________________________________ >> Exodus mailing list >> [email protected] >> http://mail.jabber.org/mailman/listinfo/exodus >> >> >> >> > > > > >> _______________________________________________ >> Exodus mailing list >> [email protected] >> http://mail.jabber.org/mailman/listinfo/exodus