What does the merge request do?
Adds a workaround for the Windows command-line length limit that prevents extensions from running on very large selections. When the accumulated --id= and --selected-nodes= arguments would overflow the limit, Script::_change_extension now spills them into a temp file and passes a single --arg-file=<path> argument in their place. The companion change in inkex (extensions!724) parses the file as an arguments file.
Together with extensions!724, closes #2627.
Implementation notes
The spill is Windows only. Even though the character limit is 32,767, a threshold of 28,000 is used since what is counted does not include the full command. The temp file is created via Inkscape::IO::TempFilename, which also handles cleanup. Note that this MR requires the corresponding update to Inkex; without it, Inkex cannot handle the --arg-file=<path> argument. (Currently, it just fails silently when the command line length limit is exceeded.)
Also, two new typelibs were added to GI introspection to prevent errors on certain extensions (similar to !7746, which was never merged due to the Windows pipeline failures).
This works on a local build, but an Inkscape member will be needed to get CI to pass (see discussion here). I am also not sure what is needed to get it to pull in a new version of Inkex, as I tested that aspect by manually overwriting Inkex's base.py.
Summary for release notes
Fixed a bug where running an extension (e.g. one that operates on every selected object) on a very large selection of objects on Windows would silently fail to launch with an "Invalid argument" error. Extensions can now be run on selections of arbitrary size on all platforms.






















