How is an addin registried?

Apr 24 at 6:40 AM
Edited Apr 24 at 6:41 AM
Okay I have searched alot around the web as what I am usually struggling with is how to even install the addin I make, building the solution only attempts a registration sometimes but even then I cannot ask every future user of my addin to install SharpDevelop just to install my addin. In the registry I see the following added when it works:

Description
FriendlyName
LoadBehavior

Now that cant possibly be all that has been done to register my addin. Where is the PATH to the addin? The above would not give word a clue as to where my addin is located so there has to be more to register an addin if I was to make a setup or something.

Any help would be appreciated :)
Jun 9 at 1:28 PM
Dear patr0805,

We use wix to create an installer, we make use of the ComAddin, Guid and ProgId attributes on the class that inherits from COMAddin:
[COMAddin("A Friendly Name", "A description", 3)]
 [Guid("<your-UUID-here>"), ProgId("<your-progid-here>")]
[RegistryLocation(RegistrySaveLocation.CurrentUser)]
public class Addin : COMAddin
{
   your code here
}
we have the following registry keys in the wix .wxs file
<RegistryKey Key="SOFTWARE\Classes\<your-progid-here>" Root="HKLM" Action="createAndRemoveOnUninstall" ForceDeleteOnUninstall="yes">
          <RegistryValue Type="string" Value="<assembly-name>.Addin"></RegistryValue>
          <RegistryKey Key="CLSID">
            <RegistryValue Type="string" Value="<your-UUID-here>"></RegistryValue>            
          </RegistryKey>
        </RegistryKey>

        <RegistryKey Key="Software\Classes\CLSID\<your-UUID-here>" Root="HKLM" Action="createAndRemoveOnUninstall" ForceDeleteOnUninstall="yes">
          <RegistryKey Key="Implemented Categories">
            <RegistryValue Type="string" Value=""></RegistryValue>
            <RegistryKey Key="{5BF44957-D93F-4462-A984-385B718C9084}">
              <RegistryValue Type="string" Value=""></RegistryValue>
            </RegistryKey>
          </RegistryKey>

          <RegistryKey Key="InprocServer32">
            <RegistryKey Key="0.0.0.1">
              <RegistryValue Type="string" Name="Assembly" Value="<assembly-name>, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null"></RegistryValue>
              <RegistryValue Type="string" Name="Class" Value="<assembly-name>.Addin"></RegistryValue>
              <RegistryValue Type="string" Name="RuntimeVersion" Value="v4.0.30319"></RegistryValue>              
              <RegistryValue Type="string" Name="CodeBase" Value="file:///[#_D9BE70D9]"></RegistryValue>              
            </RegistryKey>

            <RegistryValue Type="string" Value="mscoree.dll"></RegistryValue>
            <RegistryValue Type="string" Name="Assembly" Value="<assembly-name>, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null"></RegistryValue>
            <RegistryValue Type="string" Name="Class" Value="<assembly-name>.Addin"></RegistryValue>
            <RegistryValue Type="string" Name="RuntimeVersion" Value="v4.0.30319"></RegistryValue>
            <RegistryValue Type="string" Name="ThreadingModel" Value="Both"></RegistryValue>
            <RegistryValue Type="string" Name="CodeBase" Value="file:///[#_D9BE70D9]"></RegistryValue>
          </RegistryKey>

          <RegistryKey Key="ProgId">
            <RegistryValue Type="string" Value="<your-progid-here>"></RegistryValue>
          </RegistryKey>
        </RegistryKey>