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