Prior to v0.9 of the package server, each new .yak package uploaded represented a new version. Now, for a single version it’s possible to upload multiple “distributions” to target different Rhino versions and platforms. This information is encoded in a “distribution tag” that is appended to the filename of the package, e.g. example-1.0.0-rh7-win.yak .
The distribution tag consists of an “app” identifier and version, and a platform. Currently the only supported apps are
any – Grasshopper ships with Rhino so it doesn’t need its own identifier. Unless the app is
any , an app version must be included in the form
<major>_<minor> . The minor version is optional and is useful if a plug-in relies on an SDK change made in a service release. The platform can be
any (i.e. cross-platform).
A few examples…
rh7-win- Rhino 7 for Windows >= 7.0
rh6_14-mac- Rhino 6 for Mac >= 6.14
rh6_9-any- Rhino 6 (both platforms) >= 6.9
any-any- anything goes! (existing behaviour)
When installing packages, the server will check the version of Rhino and determine whether a compatible distribution exists for the requested version.
To test this out, please download the latest Rhino 7 WIP and try creating a Grasshopper or Rhino plug-in package. The distribution tag will be inferred from the version of Rhinocommon.dll, Grasshopper.dll or Rhino C++ SDK that you reference in your plug-in project, as well as the platform on which you perform the packaging process. You can always manually rename the .yak package file if you wish – for example, if you know that your package should be cross-platform, change the platform to
any. If you think the minimum Rhino version is wrong, please let me know! This functionality is available in Yak v0.9.1 and above (check with
A note on backwards-compatibility
The updated server works seamlessly with existing packages and old versions of Rhino. Pre-existing versions on the server (without distributions) will be treated as
any-any when installing. New package versions that do not include a distribution tag, e.g. those created by previous versions of the CLI, will also be treated as
any-any when publishing.
For more info, see the developer docs for Rhino 7 WIP.