Double Agent is somewhat different from other Open Source projects in that it's an engine
rather than an application. By itself, it doesn't do much. It's only purpose
is to provide services to other applications.
Therefore, this page addresses two different groups of developers: those who develop applications
that use Double Agent, and those who develop Double Agent itself.
These resources are for both Agent application developers and Double Agent developers.
Agent Application Development
Here are some additional resources for Agent application developers:
- Use the
help forum and the
open discussion forum to communicate with other Agent application developers.
- Use the project trackers
to submit Double Agent support requests, bugs, and feature requests. Please submit only Double
Agent issues - use the forums for Microsoft™ Agent issues.
Double Agent is licensed under the GNU Public License.
- The published COM interfaces are covered by the
GNU Lesser General Public License version 3.0.
- This is the license that covers the use of libraries within an application. Using a COM interface
is functionally equivalent to dynamically binding to a runtime library.
- The COM interfaces covered by this licence include all interfaces for the Agent Control and Agent Server.
- The intention is to allow any application that uses Microsoft™ Agent's published COM interfaces
to use Double Agent in the same way.
- The GNU Lesser General Public License licence allows any application, including proprietary applications,
to use open source libraries, with the proper prominent acknowledgement and references to the
- The easiest way provide acknowledgement is to provide access to the Double Agent copyright page.
The sample source code in the Double Agent project includes examples of application About boxes
that do this.
- The rest of Double Agent (i.e. the internals) is covered by the GNU General Public License version 3.0.
- This license restricts usage to non-proprietary applications. A proprietary application may
not bind to these libraries either statically (at build time) or dynamically (at run time).
A proprietary application must not use any Double Agent source code or any derivation of it.
- The intention is to restrict usage of any portion Double Agent that is not available through the published
- A non-proprietary application that binds to any portion of Double Agent other than the published COM
interfaces must include the appropriate acknowledgements and references, and must itself conform to
the GNU General Public License or an acceptable alternative.
- For Double Agent version 1.x this specifically means:
- The basic Double Agent installation available on the SourceForge website is sufficient for any application. The development and debugging
components are not required at runtime.
- Any application may use the COM interfaces defined in
DaControlOdl.h and implemented by
- Any application may use the COM interfaces defined in
DaServerOdl.h and implemented by
- Everything else is restricted to non-proprietary applications.
Installing Development Components
The various components used to develop applications for Double Agent are included in the Double Agent
If you plan to develop an application using Microsoft™ Agent or Double Agent, you should include
the Application Interfaces when you install the Double Agent SDK.
- Type libraries and .NET interop assemblies will be included in the installation. They allow
various development tools to interface with Microsoft™ Agent and Double Agent.
- This is especially important if you're developing on Windows 7, since Microsoft™ Agent is
not included and it's native interfaces will be missing.
- If you're developing for Microsoft™ Agent on Windows XP or Windows Vista, you won't need
these interfaces. You can develop an application for Microsoft™ Agent on XP or Vista, and
it will work with Double Agent.
- If you're developing a managed (.NET) application for Microsoft™ Agent, required interop
assemblies are installed with Double Agent SDK, or you can create your own.
- If you're developing a managed (.NET) application for Double Agent, the Double Agent primary
interop assemblies are installed in the Global Assembly Cache (GAC) as part of the normal
Double Agent installation. This means that users of your application who have installed Double
Agent will have the required assemblies without installing the Double Agent SDK.
The Double Agent SDK includes full development documentation in three formats:
- The HTML Help format consists of a single .CHM file compatible with the Windows HTML Help Viewer.
If the Microsoft Agent documentation (MsAgent.chm) is installed in the same folder, it will be included
in the Double Agent API table-of-contents.
- The Visual Studio 2008 format installs files compatible with the Microsoft Document Explorer.
It also integrates the Double Agent API documentation into the Windows SDK table of contents.
- The Visual Studio 2010 format installs files compatible with Microsoft Help Viewer 1.x.
Sample source code for various (Microsoft) development tools is included in the Double Agent SDK.
If you choose to install any of the samples, you'll find them in a subfolder of the Double Agent installation
Double Agent can write trace messages to a log file. These messages can help you debug your application
(and Double Agent) by tracing Double Agent's internal operation.
- During the Double Agent SDK installation, include the Debugging Components.
- The Double Agent control panel will now include a new Logging tab where you can manage trace
Debugging symbols (in .PDB format) are available for the Double Agent runtimes. To install the debugging symbols,
you need to download one of the symbol cabinets to the same place you downloaded the SDK setup package.
Then, when you open the SDK setup package, you'll have the option of installing the debugging symbols.
Microsoft™ Agent on Windows 7
If you install Microsoft™ Agent on Windows 7 using the
KB969168 hotfix, it's installed using Windows Resource Protection. This means that it's
treated as part of Windows, and no aspect of its installation can be changed (except by Microsoft).
Therefore, if you install both the Microsoft™ Agent hotfix and Double Agent:
- The Microsoft™ Agent hotfix must be installed before Double Agent. If you've already
installed Double Agent, you must remove it before installing the Microsoft™ Agent hotfix.
You can reinstall Double Agent after the hotfix is installed.
- If you install the Microsoft™ Agent hotfix while Double Agent is installed, you must remove the hotfix
first, then remove Double Agent, then reinstall them in the correct order.
There will be limitations in Double Agent's ability to emulate Microsoft™ Agent. This is because
emulation is achieved by redirecting Microsoft™ Agent COM classes to Double Agent COM classes using
the TreatAs registry entry. However, the Microsoft™ Agent registration in the
HKEY_LOCAL_MACHINE registry hive cannot be changed, so the TreatAs
redirection can only be set in the
HKEY_CURRENT_USER registry hive.
When you use the Double Agent control panel to enable Microsoft™ Agent emulation, it can only apply
to the current user. In addition, any application that runs with elevated permissions (i.e.
"as administrator") will not recognize the emulation (because elevated processes ignore
per-user COM configuration).
Double Agent on Windows XP
When installing Double Agent on Windows XP, Double Agent often does not show up immediately in the XP
control panel. If the control panel is in Category View, switching to the Classic View
and then back to Category View will sometimes resolve this problem. Otherwise, the Double
Agent control panel may not show up until after a logoff or restart.
If anybody knows of a way to fix this, please let us know.
Microsoft™ Agent Documentation
Since Double Agent is binary-compatible with Microsoft™ Agent, most of what you need is in the
Agent section of the Windows™ SDK documentation. (when
this link stops working, is means that Microsoft™ Agent has been removed from the Windows™
Here are some other useful references:
The Microsoft™ Agent development tools are still available on the Microsoft™ web site.
Use these links to download them.
Double Agent Development
If you're involved in the Double Agent project, or want to become involved, here are some useful