Skip to content

Use Briefcase as an installer backend #967

@mhsmith

Description

@mhsmith

Checklist

  • I added a descriptive title
  • I searched open requests and couldn't find a duplicate

What is the idea?

This issue is a summary of some recent discussions between the BeeWare and Conda teams. We're posting it in public to get feedback from the larger community.

Briefcase (part of the BeeWare project) is an open-source packaging tool which has some overlap with Constructor's functionality. It's a mature and well-tested tool that supports building Mac, Linux and Windows installers in multiple formats, including signing and notarization.

Briefcase currently combines two functions: creating a directory tree containing a Python app, and packaging it into an installer. If it had an option to use the packaging step independently, then it could create installers with arbitrary content. In this mode, Briefcase’s own Python app functionality would not be involved.

Constructor could then use Briefcase to build installers, with the following division of responsibility:

  • Briefcase provides non-conda-specific installer mechanisms.
  • Constructor uses those mechanisms to implement conda-specific functionality.

From the Constructor user’s point of view, very little would change: they would continue to use Constructor’s existing CLI and configuration file format. The fact that Constructor used Briefcase to build installers would only be an implementation detail.

Constructor could start using Briefcase incrementally, one installer format at a time, without disturbing the others.

Why is this needed?

As described in #646, for several years the Constructor developers have wanted to stop using NSIS because of its developer-unfriendliness. However, the effort required to produce an entirely new Windows backend has so far been too much to face.

Briefcase has an actively-maintained Windows installer implementation based on the modern WiX toolkit. Reusing this via Briefcase's high-level interface should be significantly easier than creating a WiX backend from scratch.

Longer term, Briefcase could also be used to build installers in other formats, e.g. .pkg installers for macOS, which would relieve the Constructor project of even more maintenance burden.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type::featurerequest for a new feature or capability

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions