|
1 | | -# [GitHub Desktop](https://desktop.github.com) |
| 1 | +# Conveyorized version of [GitHub Desktop](https://desktop.github.com) |
2 | 2 |
|
3 | | -[GitHub Desktop](https://desktop.github.com/) is an open source [Electron](https://www.electronjs.org/)-based |
4 | | -GitHub app. It is written in [TypeScript](https://www.typescriptlang.org) and |
5 | | -uses [React](https://reactjs.org/). |
| 3 | +This repository shows how to package a complex real world Electron app with [Conveyor](https://hydraulic.software/). It features: |
6 | 4 |
|
7 | | - |
| 5 | +- Automatic online updates, checked at each launch. |
| 6 | +- Files released via GitHub Releases. |
| 7 | +- The [generated download page](https://hydraulic-software.github.io/github-desktop/download.html) being hosted by GitHub pages. |
8 | 8 |
|
9 | | -## Where can I get it? |
| 9 | +Conveyor is a tool that makes distributing desktop apps easier. It builds, signs and notarizes self-updating |
| 10 | +packages for you and offers many useful features, like cross-building/signing of packages, different update modes (silent/background and |
| 11 | +update-at-launch), and [much more](https://conveyor.hydraulic.dev/). |
10 | 12 |
|
11 | | -Download the official installer for your operating system: |
| 13 | +## Packaging |
12 | 14 |
|
13 | | - - [macOS](https://central.github.com/deployments/desktop/desktop/latest/darwin) |
14 | | - - [macOS (Apple silicon)](https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64) |
15 | | - - [Windows](https://central.github.com/deployments/desktop/desktop/latest/win32) |
16 | | - - [Windows machine-wide install](https://central.github.com/deployments/desktop/desktop/latest/win32?format=msi) |
| 15 | +There are three parts. Let's look at them in turn. |
17 | 16 |
|
18 | | -You can install this alongside your existing GitHub Desktop for Mac or GitHub |
19 | | -Desktop for Windows application. |
| 17 | +Open [conveyor.conf](conveyor.conf) where there are extensive comments. The package can be built by installing Conveyor and |
| 18 | +then running: |
20 | 19 |
|
21 | | -Linux is not officially supported; however, you can find installers created for Linux from a fork of GitHub Desktop in the [Community Releases](https://github.com/desktop/desktop#community-releases) section. |
| 20 | +``` |
| 21 | +conveyor make site |
| 22 | +``` |
22 | 23 |
|
23 | | -**NOTE**: There is no current migration path to import your existing |
24 | | -repositories into the new application - you can drag-and-drop your repositories |
25 | | -from disk onto the application to get started. |
| 24 | +The output directory will now contain packages for Windows, Mac Intel and Mac ARM along with update repository metadata and a generated |
| 25 | +download page. |
26 | 26 |
|
| 27 | +The `conveyor.conf` file imports the raw files to package from the output of a [GitHub Actions CI job](.github/workflows/ci.yml). This is |
| 28 | +useful because even though GH Desktop is written in TypeScript the build system picks different node.js extensions and produces |
| 29 | +customized JS bundles depending on what OS you build it on. Conveyor can make packages for all supported OS' from whatever you choose to |
| 30 | +run it on, and it would be possible to extend the GH Desktop build system to support the same feature to allow arbitrary cross-builds. |
27 | 31 |
|
28 | | -### Beta Channel |
| 32 | +## Releasing |
29 | 33 |
|
30 | | -Want to test out new features and get fixes before everyone else? Install the |
31 | | -beta channel to get access to early builds of Desktop: |
| 34 | +To do a release: |
32 | 35 |
|
33 | | - - [macOS](https://central.github.com/deployments/desktop/desktop/latest/darwin?env=beta) |
34 | | - - [macOS (Apple silicon)](https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64?env=beta) |
35 | | - - [Windows](https://central.github.com/deployments/desktop/desktop/latest/win32?env=beta) |
36 | | - - [Windows (ARM64)](https://central.github.com/deployments/desktop/desktop/latest/win32-arm64?env=beta) |
| 36 | +* Run `conveyor make site --rerun=all`. |
| 37 | +* Put the output files into a new GitHub release, except for the `download.html`. |
| 38 | +* Put `download.html` into the `docs` subdirectory, commit and push. |
37 | 39 |
|
38 | | -The release notes for the latest beta versions are available [here](https://desktop.github.com/release-notes/?env=beta). |
| 40 | +## Packaging features used |
39 | 41 |
|
40 | | -### Community Releases |
| 42 | +This repo demos: |
41 | 43 |
|
42 | | -There are several community-supported package managers that can be used to |
43 | | -install GitHub Desktop: |
44 | | - - Windows users can install using [winget](https://docs.microsoft.com/en-us/windows/package-manager/winget/) `c:/> winget install github-desktop` or [Chocolatey](https://chocolatey.org/) `c:\> choco install github-desktop` |
45 | | - - macOS users can install using [Homebrew](https://brew.sh/) package manager: |
46 | | - `$ brew install --cask github` |
| 44 | +1. Importing `package.json` files to avoid redundant configuration. |
| 45 | +2. Downloading the results of GitHub Actions. |
| 46 | +3. Setting which operating systems and CPU architectures are supported. |
| 47 | +4. [Aggressive updates](https://conveyor.hydraulic.dev/5.0/configs/#update-modes), which makes these packages check for new versions on every launch. Try downloading the old Mac release and then |
| 48 | + running it to see the update in action (on Windows the installer EXE will always install the latest version). |
| 49 | +5. [Registering URL schemes](https://conveyor.hydraulic.dev/5.0/configs/os-integration/#url-handlers-deep-linking) for OAuth logins. |
| 50 | +6. Setting [custom metadata and entitlements](https://conveyor.hydraulic.dev/5.0/configs/os-integration/#custom-integrations) for Mac apps. |
47 | 51 |
|
48 | | -Installers for various Linux distributions can be found on the |
49 | | -[`shiftkey/desktop`](https://github.com/shiftkey/desktop) fork. |
| 52 | +These packages are code-signed but you can create self-signed projects if you want. |
50 | 53 |
|
51 | | -Arch Linux users can install the latest version from the |
52 | | -[AUR](https://aur.archlinux.org/packages/github-desktop-bin/). |
| 54 | +## Comparison to other tools |
53 | 55 |
|
54 | | -## Is GitHub Desktop right for me? What are the primary areas of focus? |
| 56 | +You can compare the config against the code needed to use other Electron packaging tools by reading the [script/build.ts] and [script/package.ts] files. |
| 57 | +The `packageApp()` function in `build.ts` and everything reachable from it could be deleted, along with the whole of `package.ts`. You could |
| 58 | +also delete all the code that sets up and instantiates the update manager, because Conveyor doesn't require you to do anything to initialize |
| 59 | +the update system. |
55 | 60 |
|
56 | | -[This document](https://github.com/desktop/desktop/blob/development/docs/process/what-is-desktop.md) describes the focus of GitHub Desktop and who the product is most useful for. |
| 61 | +There are some feature differences vs apps packaged using Electron Forge/Squirrel. On Windows: |
57 | 62 |
|
58 | | -And to see what the team is working on currently and in the near future, check out the [GitHub Desktop roadmap](https://github.com/desktop/desktop/blob/development/docs/process/roadmap.md). |
| 63 | +* Your app will update itself in the background even when not in use, using the same background transfer service Windows Update |
| 64 | + uses. As a consequence your app will be always up-to-date even if only used rarely. |
| 65 | +* There is no .NET dependency. |
| 66 | +* Enterprise rollouts are easier: |
| 67 | + * You don't need to do anything special for IT departments. The MSIX file Conveyor creates is sufficient to give them a good experience. |
| 68 | + * Your app doesn't install itself to the user's home directory, which can cause problems with profile roaming on managed networks. |
| 69 | +* Fractional rollouts aren't currently supported. You can have a beta channel though just by creating two different sites. |
59 | 70 |
|
60 | | -## I have a problem with GitHub Desktop |
61 | | - |
62 | | -Note: The [GitHub Desktop Code of Conduct](https://github.com/desktop/desktop/blob/development/CODE_OF_CONDUCT.md) applies in all interactions relating to the GitHub Desktop project. |
63 | | - |
64 | | -First, please search the [open issues](https://github.com/desktop/desktop/issues?q=is%3Aopen) |
65 | | -and [closed issues](https://github.com/desktop/desktop/issues?q=is%3Aclosed) |
66 | | -to see if your issue hasn't already been reported (it may also be fixed). |
67 | | - |
68 | | -There is also a list of [known issues](https://github.com/desktop/desktop/blob/development/docs/known-issues.md) |
69 | | -that are being tracked against Desktop, and some of these issues have workarounds. |
70 | | - |
71 | | -If you can't find an issue that matches what you're seeing, open a [new issue](https://github.com/desktop/desktop/issues/new/choose), |
72 | | -choose the right template and provide us with enough information to investigate |
73 | | -further. |
74 | | - |
75 | | -## The issue I reported isn't fixed yet. What can I do? |
76 | | - |
77 | | -If nobody has responded to your issue in a few days, you're welcome to respond to it with a friendly ping in the issue. Please do not respond more than a second time if nobody has responded. The GitHub Desktop maintainers are constrained in time and resources, and diagnosing individual configurations can be difficult and time consuming. While we'll try to at least get you pointed in the right direction, we can't guarantee we'll be able to dig too deeply into any one person's issue. |
78 | | - |
79 | | -## How can I contribute to GitHub Desktop? |
80 | | - |
81 | | -The [CONTRIBUTING.md](./.github/CONTRIBUTING.md) document will help you get setup and |
82 | | -familiar with the source. The [documentation](docs/) folder also contains more |
83 | | -resources relevant to the project. |
84 | | - |
85 | | -If you're looking for something to work on, check out the [help wanted](https://github.com/desktop/desktop/issues?q=is%3Aissue+is%3Aopen+label%3A%22help%20wanted%22) label. |
86 | | - |
87 | | -## Building Desktop |
88 | | - |
89 | | -To get your development environment set up for building Desktop, see [setup.md](./docs/contributing/setup.md). |
90 | | - |
91 | | -## More Resources |
92 | | - |
93 | | -See [desktop.github.com](https://desktop.github.com) for more product-oriented |
94 | | -information about GitHub Desktop. |
95 | | - |
96 | | - |
97 | | -See our [getting started documentation](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/overview/getting-started-with-github-desktop) for more information on how to set up, authenticate, and configure GitHub Desktop. |
| 71 | +On macOS the [Sparkle 2 framework](https://sparkle-project.org/) is used instead of Squirrel.Mac. |
98 | 72 |
|
99 | 73 | ## License |
100 | 74 |
|
|
0 commit comments