I have two plug-ins A and B.
In plug-in A, it just invoke the interfaces defined in plug-in B. There is no class/implement changes the document data, in other words, it matches the condition descripted in the programming guide "If your plug-in does not store data in documents, you do not need to take any special precautions." .
I saved some documents using plug-ins A and B.
And now, i remove the plug-in A in InDesign. There will be "Missing Plug-ins" warning dialog when opening the documents saved before. It requires plug-ins A. What happened?
I tried to add bellowing code in my B.fr, it doesn't help.
resource DirectiveList(1) {
{
{
IgnorePlugin
{
{
kMyAFirstMajorFormatNumber,
kMyAFirstMinorFormatNumber
},
kMyAPluginID
}
},
}
};
Did i miss anything?
I tried to set the plug-in A to be ignored in code, but the "Missing plug-ins" dialog appears before the responding kDuringOpenDocSignalResponderService, and in kBeforeOpenDocSignalResponderService, i can no nothing because IDocument* is nil at the monment.
It can be resolved by selecting the checkbox "Don't show again for these plug-ins" on the Missing plug-in dialog at the first time.Is there any i can do that in code?
Any suggestion to ignore the plug-in A in code?
---------------------------------------
PS: the IDML cannot help because there is some customize data in my plug-in B which will be lost if using IDML.
Thanks a lot,
AidySun
Thanks for your reply.
In the plug-in A, there are only some UI related things.
Classes:
kMyDialogBoss
kMyActionComponentBoss
Implements:
kMyActionComponentImpl
kMyDialogControllerImpl
kMyDialogObserverImpl
No other classes and implements, all of these don't have any ReadWrite().
Of couse i tried to add them in IgnoreTags, but it didn't help.
PS: the IDML cannot help because there is some customize data in my plug-in B which will be lost if using IDML.
@AidySun – I'm not a plug-in developer, but writing scripts in JavaScript, so I want to ask if you could implement something in plug-in B that would write the customized data of plug-in B to a string and inject it with the JavaScript method insertLabel("KeyString","ValueString") in the document.
This label information will be stored into IDML and is still present, if you open the IDML in InDesign. Then you could extract the string with the method extractLabel("KeyString") and maybe write it back to plug-in B.
Uwe
Thanks Laubender.
What you say can be a practical solution for many cases, but not suitable for my case. Because the data saved in my plug-in is not independent, it may relate to docboss, workspaceboss or some page items and so on.
The solution i want to find is one that is practical base on the current situation. Just remove the info/data of plug-in A in the document.
E.g. just do some code change in plug-in B and then it can open the document (saved before with both plug-ins A and B) without the missing plug-in dialog.
Thanks,
Aidy
North America
Europe, Middle East and Africa
Asia Pacific