1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Clarified some docs for the ActiveX plugin build.

This commit is contained in:
jules 2014-02-02 18:30:34 +00:00
parent f38dc2fe3a
commit 35a9327247

View file

@ -1,69 +1,68 @@
Juce Browser Plugin Framework
=============================
These classes let you easily turn a normal Juce component into a Mac/Windows NPAPI plugin
for use in Firefox, Safari, Chrome, etc., and/or an ActiveX plugin for IE.
To create your plugin, your code just needs to implement the createBrowserPlugin() function
to return a subclass of BrowserPluginComponent, and this acts as the plugin window.
To communicate with javascript running in the host webpage, the 'var' and 'DynamicObject' juce
classes emulate javascript objects, so you can create a javascript object that represents
your plugin, and the webpage can invoke methods and access properties on this object. To
get bi-directional communication between the plugin and webpage, your webpage can simply
pass its own object to your plugin, and the plugin can call methods on this object to invoke
javascript actions.
In a similar style to audio plugins, your project has to contain a BrowserPluginCharacteristics.h
file that defines various properties of the plugin.
Building a Mac NPAPI Plugin with XCode
--------------------------------------
- Create a new "CFPlugin Bundle" project
- Add the juce wrapper source files to the project (have a look at the demo project to
find out which files this includes).
- Set up all the usual frameworks, etc, like you would for any other juce project.
- In the project or target settings, change the "Wrapper Extension" to "plugin"
- In your target, add a build phase "Build ResourceManager resources", and add the juce_NPAPI_MacResource.r file
to this step.
- Check that your info.plist contains the same items as the demo plugin, because these needs to be set for the
browser to recognise it as a plugin. In particular, the "Bundle OS Type Code" should be set to BRPL.
- The finished bundle needs to be copied into "/Library/Internet Plug-Ins", so you might want to set up a
post-build copy step to do this automatically
Building a Windows NPAPI plugin in Visual Studio
------------------------------------------------
- Create a new project to build a win32 DLL
- Add the juce wrapper source files to the project (have a look at the demo project to
find out which files this includes).
- Your compiled plugin DLL must begin with the letters 'np' (in lower case) for it to be recognised as
a plugin, so you should make sure your target settings reflect this.
- To include the BrowserPluginCharacteristics.h file, you may need to add an include path to wherever this
file lives in your project. Don't use a global include path for this - just add it to the project's
search paths (both the c++ include paths and the resource include paths)
- (Refer to the normal juce instructions for setting up other project settings such as which c++ libs to link to etc)
- The finished plugin needs to be copied into "C:\Program Files\Mozilla Firefox\plugins", so you might want
to add a post-build step to copy it
- Note that the "browser plugins/wrapper/npapi" folder contains a copy of some NPAPI header files. If you're
building a closed-source project, please check the licensing details in these files to make sure
you're not breaking any Mozilla licensing restictions.
Building a Windows ActiveX control for Internet Explorer
--------------------------------------------------------
- This is actually quite easy, because the same DLL that functions as an NPAPI plugin can
also be used as an ActiveX control.
- Just create a windows NPAPI plugin as described above, but add the juce_ActiveX_GlueCode.cpp
file to the project.
- In your BrowserPluginCharacteristics.h file, the JuceBrowserPlugin_ActiveXCLSID setting needs
to be given a unique GUID for your plugin.
- Because the plugin is a COM object, it doesn't matter where the DLL lives, but it needs to
be registered in the normal COM way, with regsvr32.exe. Note that on Vista, this command
needs to be run with administrator permissions for it to be able to write to the registry.
Juce Browser Plugin Framework
=============================
These classes let you easily turn a normal Juce component into a Mac/Windows NPAPI plugin
for use in Firefox, Safari, Chrome, etc., and/or an ActiveX plugin for IE.
To create your plugin, your code just needs to implement the createBrowserPlugin() function
to return a subclass of BrowserPluginComponent, and this acts as the plugin window.
To communicate with javascript running in the host webpage, the 'var' and 'DynamicObject' juce
classes emulate javascript objects, so you can create a javascript object that represents
your plugin, and the webpage can invoke methods and access properties on this object. To
get bi-directional communication between the plugin and webpage, your webpage can simply
pass its own object to your plugin, and the plugin can call methods on this object to invoke
javascript actions.
In a similar style to audio plugins, your project has to contain a BrowserPluginCharacteristics.h
file that defines various properties of the plugin.
Building a Mac NPAPI Plugin with XCode
--------------------------------------
- Create a new "CFPlugin Bundle" project
- Add the juce wrapper source files to the project (have a look at the demo project to
find out which files this includes).
- Set up all the usual frameworks, etc, like you would for any other juce project.
- In the project or target settings, change the "Wrapper Extension" to "plugin"
- In your target, add a build phase "Build ResourceManager resources", and add the juce_NPAPI_MacResource.r file
to this step.
- Check that your info.plist contains the same items as the demo plugin, because these needs to be set for the
browser to recognise it as a plugin. In particular, the "Bundle OS Type Code" should be set to BRPL.
- The finished bundle needs to be copied into "/Library/Internet Plug-Ins", so you might want to set up a
post-build copy step to do this automatically
Building a Windows NPAPI plugin in Visual Studio
------------------------------------------------
- Create a new project to build a win32 DLL
- Add the juce wrapper source files to the project (have a look at the demo project to
find out which files this includes).
- Your compiled plugin DLL must begin with the letters 'np' (in lower case) for it to be recognised as
a plugin, so you should make sure your target settings reflect this.
- To include the BrowserPluginCharacteristics.h file, you may need to add an include path to wherever this
file lives in your project. Don't use a global include path for this - just add it to the project's
search paths (both the c++ include paths and the resource include paths)
- (Refer to the normal juce instructions for setting up other project settings such as which c++ libs to link to etc)
- The finished plugin needs to be copied into "C:\Program Files\Mozilla Firefox\plugins", so you might want
to add a post-build step to copy it
- Note that the "browser plugins/wrapper/npapi" folder contains a copy of some NPAPI header files. If you're
building a closed-source project, please check the licensing details in these files to make sure
you're not breaking any Mozilla licensing restictions.
Building a Windows ActiveX control for Internet Explorer
--------------------------------------------------------
- This is actually quite easy, because the same DLL that functions as an NPAPI plugin can
also be used as an ActiveX control.
- By default the build will produce an ActiveX plugin. To disable this, you can set JUCE_BUILD_ACTIVEX = 0
- In your BrowserPluginCharacteristics.h file, the JuceBrowserPlugin_ActiveXCLSID setting needs
to be given a unique GUID for your plugin.
- Because the plugin is a COM object, it doesn't matter where the DLL lives, but it needs to
be registered in the normal COM way, with regsvr32.exe. Note that on Vista, this command
needs to be run with administrator permissions for it to be able to write to the registry.