InDesign version vs plugin compatibility

Explorer ,
Dec 12, 2021 Dec 12, 2021

Copy link to clipboard

Copied

Hi,

I would like to understand plugin compatibilty matrix for InDesign. Specifically, will a plugin compiled with 16.1 SDK work with InDesign 16.4?

Is there a documentation in general around this matrix?

 

Thanks,

 

TOPICS
How to , SDK

Views

121

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Dec 12, 2021 Dec 12, 2021

Copy link to clipboard

Copied

It depends on the versions.

Version 15 SDKs and plugins were almost totally interchangeable.

But there were a few compatibility gaps with version 16.

Plugins built with the 16.3 SDK will not run with lower versions of InDesign. 

For that reason our plugin requires ID 16.3 a least to be installed (https://www.qppstudio.net/webhelp_xv4/indesign-versions-support.htm)

When you download a new SDK, make sure to also download the corresponding "ID Mainline Installer - Release Notes.pdf" which usually contains a mention of all backward and forward incompatibilities,

Very best regards,

Olivier

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

Hi,

 

Thanks. Here is what I found in the help documentation. With that, I think it is safe to conclude that InDesign 16.4 would work with plugins that were build with 16.2.1 SDK.  Is that a fair conclusion?

InDesign plug-ins compatibility across versions

InDesign plug-ins need to be recompiled with the matching SDK for every major version. A plug-in that was built with the SDK corresponding to a specific major version of InDesign will not get loaded if dropped into an InDesign build with a different major version. This is because the public APIs offered by InDesign do keep evolving from release to release to support new product features as well as programming language features. Often the underlying compilers used to build the InDesign code base also change from version to version which may introduce incompatibilities. In most cases, you would find that a simple recompilation is all that is necessary. Sometimes at the time of some necessary architecture changes, deprecated OS API removal etc., the changes may be broader in nature.

When a minor update to InDesign is released, the API compatibility with the major version is maintained unless stated otherwise. Plug-ins built with the SDK of the major version should continue to work with the minor update without recompilation.

 

Thanks,

 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

Hi,

On Windows, it is safe to assume that a plugin compiled with a higher version number that the InDesign version installed, will work OK.

On Mac, it is a bit riskier as there are many breaking changes in MacOS updates, and the hardware it runs on. So some of the SDK builds are dependent on the MacOS version and hardware that your user has.

Very best regards,

Olivier

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

In general, I stick to the earliest SDK per major version, use the matching earliest debug build and ITK. Later minor versions are supposed to load those plug-ins, also according to the notes quoted below. Btw please describe the source for your quote.

 

Version 16 though is special in multiple regards.

The updates did not stay within the 16.0.x number range - that would be 16.0.1, 16.0.2 and so forth, but instead they would bump the middle "minor" number. Last time we had this was version 7.0.x CS5 => 7.5 CS5.5 which was definitely not compatible.

Besides to that optics, there are multiple technical reasons for incompatibility. InDesign SDK provides several more optional libraries that you can link with. One of them was boost regexp. SDK 16.0 came with boost 1.65, while SDK 16.1 came with boost 1.72. When your plug-in links to the InDesign provided copy of boost, you will have unresolved version specific symbols because they are missing from the InDesign-provided shared library - this is a safety feature by design of boost. Probably this change was an accident where someone just overlooked the consequences.

I think there was something similar later on, not sure about the library involved this time. Especially since 16.2 was short-lived.

The even bigger change with 16.3 though was the required compiler - needed for Apple Silicon / M1 support. With some luck your plug-ins compiled with the 16.1 compiler and the 16.1 SDK might run with later versions, but would miss the other CPU architecture so it would require InDesign to run in the x86 emulation "Rosetta". Also, the newer compiler comes with new operating system SDK requirements. This is not a trivial change, because when you link to a later OS SDK you may have subtle differences in program behavious - for example more security circus.

Regarding 16.3 vs 16.4, I remember some official claims that the 16.3 SDK is again compatible as it should, but I'd have to search for them. As I did not yet have the need to support version 16 at all, this is still theory to me and I stick to 16.0 for my own development needs.

 

The conclusion: provide a 16.1 version if you have to, using the officially documented compiler. In addition provide a 16.3 version with its different compiler, OS requirements and additional M1 CPU support. For Windows you might be lucky across all minor versions, or also run into that boost version trouble. I don't know. I just saw notes though (thanks Kris) to better not update VS 2019 - the trouble spot would involve "xlocnum".

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

Yes, a minor update to VS2019, from 16.10.1 to 16.10.2 (no installation of a new Windows SDK or runtime) cused the problem. The solution is to patch the "xlocnum_hack_vs2019.h" InDesign SDK file, as shown below (between the 2 "//Olivier" lines).

 

 

...
_Str.push_back(_Elem{});
_Str += _Punct_fac.truename(); // construct "\0false\0true"
// Olivier 1-july-2021: after VS2019 update,
// function _Getloctxt() now requires 5 parameters
_Case_sensitive _MATCHING = _Case_sensitive::_Yes; 
switch (_Getloctxt(_First, _Last, 2, _Str.c_str(), _MATCHING)) {
// Olivier - end
case 0:
...

 

 

Very best regards,

Olivier

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

LATEST

Thank you for the elabore explanation. We have shipped our plugins with 16.2.1 SDK (latest when we did the release). Now, we came to know that customers are using those plugins with InDesign 16.4.

 

I was hoping to understand if this is a supported scenario or should we be shipping updated plugins built with 16.3 SDK (as 16.4 SDK appears to never have been shipped).

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Dec 15, 2021 Dec 15, 2021

Copy link to clipboard

Copied

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines