Skip to main content
2 of 6
added 479 characters in body
Kuba
  • 137.7k
  • 13
  • 289
  • 751

Assuming all we want to use is GitHub, the best way does not exist but there are couple of alternatives used by folks around.

Regardless of the final installation method it is safe to say that it is beneficial to first have a .paclet file created (search around for PackPaclet) and, depending on the method, attached to a GitHub release.


TLDR I am using the last one (MPM)

1. install.m script

You can add an install.m script in your repository. User is supposed to call Import @ "url/to/install.m" and the installation procedure does whatever you want it to do.

Examples:

A variation of this way is presented in Szabolcs' MaTeX where the installation script is a ResourceFunction:

{todo: insert Sz. comment about his experience}

Pros:

  • flexible installation routine

Cons:

  • ugly url to type by the user: https://raw.githubusercontent.com/`username`/`pacletName`/master/install.m, sure it can be copied but the fewer steps the better.

  • author needs to write and maintain install.m. Make sure it works well and usually update the version specific urls which are inside.

2. GitHub hosted PacletSite

You just build .paclets to your repository and update PacletSite.info.

Example:

Pros:

  • once paclet site is added user can quickly check for updates etc.
  • all WRI built-in functions based deploy-release-install

Cons:

  • Adds a lot of weight to your repository since binary .paclets need to be kept there. For this reason probably not the best for large or frequently updated projects.

3. GitHub release with .paclet + 3rd party paclet installation manager

The idea is to install a 'paclet manager' once and it should handle standard Github released packages.

Examples

  • MPM`

    I created a simple installation manager MPM`: https://github.com/kubaPod/MPM

    Once you install it (using install.m :)) you can just call MPMInstall["szhorvat", "MaTeX"]. Check more examples in the GitHub wiki or this answer

  • PDInstallPaclet

Alternatively take a look at b3m2a1's PDInstallPaclet

Pros:

  • easy to use

Cons:

  • you need to trust the source of the manager like MPM (otoh with plain text .m it is easy to inspect)
  • unless standards are expadned it only does paclet install and any fancy setup needs to be run separately
Kuba
  • 137.7k
  • 13
  • 289
  • 751