Hi On Thu, 28 Nov 2024 at 11:38, Anil Sahoo <anil.sa...@enterprisedb.com> wrote:
> Hi Dave, > > I have mentioned the requirements for the deployment server to add > auto-update in macOs systems. > > > The frontend will request deployment server with Accept: application/json > and the current version of pgAdmin and the architecture of macOs system and > server will check if any update is available or not, if update available > then server responds with status code 200 OK and sends the below format > JSON response in the body. > > > Example of deployment url: > https://your-deployment-url.com/update/darwin/8.12 > > > Example of response: > > { > "url": "https://your-deployment-url.com/your-app-8.13-darwin.zip", > "name": "8.13", > "notes": "Theses are some release notes innit", > "pub_date": "2024-09-18T12:29:53+01:00" > } > > > Here url is mandatory and others are optional. > > Squirrel will request "url" with Accept: application/zip and only supports > installing ZIP updates. > > "pub_date" if present must be formatted according to ISO 8601. > > > If no update is required, the server must respond with a status code > of 204 No Content. > Ah, OK - so it's just the metadata. We can handle that pretty easily in the pgaweb code. > > > And for Windows systems, Electron recommended to use electron-winstaller > or electron forge as using these packages will use Squirrel.Windows for > creating windows installer and that will help in triggering custom launch > events and that can be handled by our application for proper setup. But > what I think is, as we are using Inno setup for creating our Windows > installer, we can try updating our application with existing way only, if > something does not work then we have the option to change our installer > creation process. > So one thing that springs to mind is that on Windows, this is only likely to work with per-user installations, however, generally the default is for machine-wide installations. Have you given that any thought? > > Thanks, > > Anil > > On Wed, Nov 27, 2024 at 10:34 PM Dave Page <dp...@pgadmin.org> wrote: > >> Hi! >> >> On Wed, 27 Nov 2024 at 07:58, Anil Sahoo <anil.sa...@enterprisedb.com> >> wrote: >> >>> Hi Dave/Team, >>> >>> I am currently working on the auto-update feature of pgAdmin 4 desktop >>> application, #5766 <https://github.com/pgadmin-org/pgadmin4/issues/5766> >>> . >>> >>> >>> As we are using Electron for shipping our desktop application, I have >>> gone through some possible ways we can implement the auto update of the >>> app. >>> >>> I found 2 most popular ways, that are >>> >>> 1. *Use builtin electron’s autoUpdater* (Uses the Squirrel framework >>> & Available for Mac, Windows) >>> 2. *Use electron-builder and electron-updater packages *(Available >>> for Mac, Windows and Linux systems) >>> >>> *Linux systems:* >>> >>> >>> - Builtin Electron’s autoUpdater support is not available. >>> - electron-builder and electron-updater can be used, but need to >>> change the whole build process. Also most apps like VS code, Chrome, etc >>> does not support auto-update of apps on linux systems. >>> >>> We should not try to auto-update on Linux, because we're using the >> platform native packaging and auto-updating will cause nasty problems with >> that. >> >> >>> *Mac systems:* >>> >>> - We can use the builtin Electron’s autoUpdater to add auto-update >>> feature to macOs systems, It is simple and easy to configure. We need a >>> minor modification in our build process i.e. as we are supporting Intel >>> and >>> Apple silicon chips, deployment url will have 2 zip files and each zip >>> file >>> will hold the build for arm64 and x86_64. >>> - electron-builder and electron-updater can be used. With this, we >>> have to change the whole build process. >>> >>> *Windows systems:* >>> >>> - We can use the builtin Electron’s autoUpdater to add auto-update >>> feature to windows systems, Here also we need to change our build >>> process. >>> Electron’s docs recommend using electron-winstaller or electron forge to >>> create the installer and some extra changes are needed in the deployment >>> server. >>> - electron-builder and electron-updater can be used. With this, we >>> have to change the whole build process. >>> >>> As Electron's builtin autoUpdater is easy to use so for now we can move >>> with the auto-update of the pgAdmin app on macOs systems as it requires >>> minimal changes. >>> >> >> That certainly sounds like the better option. A couple of questions: >> >> - What changes are required in the deployment server? We are very limited >> here, as we deploy through the postgresql.org infrastructure. >> >> - Whilst the docs (for Windows) recommend using electron-winstaller or >> electron forge, can you confirm one of them *must* be used? Our current >> installer is pretty standard in the way it works, so I'm curious to know if >> we would actually need to change technology for a specific reason. >> >> Thanks! >> >> -- >> Dave Page >> pgAdmin: https://www.pgadmin.org >> PostgreSQL: https://www.postgresql.org >> pgEdge: https://www.pgedge.com >> >> > > -- > > > *Anil Sahoo* > > Software Development Engineer II > > LinkedIn <https://www.linkedin.com/in/anilksahoo9/> || Blog > <https://www.enterprisedb.com/anil-sahoo> || *GitHub > <https://github.com/anilsahoo20>* > > enterprisedb.com > -- Dave Page pgAdmin: https://www.pgadmin.org PostgreSQL: https://www.postgresql.org pgEdge: https://www.pgedge.com