GraphiteEditor / GraphiteEditor/Graphite

Release desktop builds for direct download with an installer and self-updater

Ouverte
#2,539 0 commentaires 2 réactions 0 personnes assignées Voir sur GitHub
Architecture Desktop Infrastructure
Langage dominant
Rust
Étoiles
27.2k
Forks
1.3k
Merge moyen
20 h 5 min
PR mergées (30 j)
57

Description

Our goal is to have Graphite update just as easily as apps like Chrome, Firefox, VS Code, and Discord.

### Windows

For `.msi` installers, we should probably use the open source installer generator, [Inno Setup](https://jrsoftware.org/isinfo.php), which is also notably used by VS Code and Git for Windows. And then probably roll our own auto-updater, which might use Inno Setup to install updates with the [`/SILENT`](https://jrsoftware.org/ishelp/index.php?topic=setupcmdline) flag. Some background research [here](https://www.reddit.com/r/csharp/comments/1oyxjkq/is_my_inno_setup_selfupgrade_check_logic/) and [here](https://stackoverflow.com/questions/53073973/how-to-automatically-update-an-application-installed-with-inno-setup). We can reference the 2.5k lines of Rust code in [Inno Updater](https://github.com/microsoft/inno-updater) written by Microsoft for updating VS Code. There is also this recent and very detailed [explanation](https://github.com/microsoft/vscode/issues/249239) about the flow and recent robustness improvements Microsoft made to it.

### Mac

TODO: Investigate how to create a `.dmg` installer, including custom background graphics to make the drag-into-Applications-folder process clear. We will probably need to roll our own auto-updater for this platform as well, hopefully with some code reuse. But [Squirrel](https://github.com/Squirrel/Squirrel.Mac), used by Electorn and VS Code, or [Sparkle](https://sparkle-project.org/), could be other options if they aren't complex to integrate in our Rust codebase and give enough flexibility so we can do our own update checks and UI. Investigation will be required to figure out how to self-update the contents of an app package.

### Linux

TODO: Distribute the [ELF](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format) file and dependencies in a `.zip`? Is there any other sort of self-unpacking installer besides a ZIP we can use instead? Can we roll an auto-updater for this too? This would be in addition to distribution through common package managers: #584.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par comparer les exigences de distribution pour Windows, Mac et Linux décrites ici, notamment Inno Setup, Inno Updater, Squirrel et Sparkle, et examinez le contexte existant des gestionnaires de paquets dans #584. La tâche est considérée comme terminée lorsque le projet dispose d’une distribution par téléchargement direct et d’un plan d’installeur ou de mise à jour automatique implémenté pour chaque plateforme de bureau.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust
Domaine
desktop, release
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.