-
Notifications
You must be signed in to change notification settings - Fork 15.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Squirrel.Windows is no longer maintained #17722
Comments
We are aware of the situation and are currently assessing the courses of actions we could take 😄 |
@MarshallOfSound Excuse me, I would like to ask if there is a phased conclusion on the discussion of the official upgrade plan of Electron. |
Just wanted to bump this issue to point to a discussion about rebooting Squirrel.Windows to keep the project going Squirrel/Squirrel.Windows#1470 - we'd love others to help get involved... |
So it's been a year now since this issue was first brought to light. In that time it seems there's been no real activity on Squirrel. But let's put that aside and say squirrel has enough attention and the few hopefuls with full-time jobs who want to contribute actually pull through - the necessity of having a release server is a big barrier to many who would like a cost-effective, secure, and easily maintainable update solution. None of the release servers officially documented are well-maintained This means that anybody who...
literally has no option but to go the route of adopting a non-official update route provided by electron-builder which allows for serverless updates with a well-maintained installation solution. I am by no means a domain expert and am just presenting some observations and a few weeks of struggle with the current state of the ecosystem. My two cents is that the electron team needs to give a hard look at this critical piece of the picture and its valid pain points and provide a solution that gives its users confidence. |
Just a noob electron dev checking in. What's the meta these days? Electron builder or forge? And squirrel or NSIS for windows? |
I'm new too and completely lost on my first build too. Have no idea what path to follow. |
Hi |
It seems that Squirrel.Windows is dying. There have been an vulnerbility[0] for in one of the dependencies, discovered on september 12th, 2019, that can be fixed by merely releasing a new version with updated dependency. It's a trivial task, yet it wasn't done. Also it seems that there was an attempt[1], but that didn't really find new maintainers. electron consider the project as not maintained[2] 0: GHSA-fxh6-w476-hgr4 1: Squirrel/Squirrel.Windows#1470 2: electron/electron#17722
In case anyone here is interested, I have been working on a fork of Squirrel for the last year, am actively maintaining it, and have improved hundreds of things and fixed most of the existing bugs. Notably, it's now much faster, dependency free (no longer requires the net framework), among many other things. It's already been picked up by a few very big projects. I'd be willing to discuss and work with people here if there is any interest in adopting it as a replacement in electron for Squirrel.Windows. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
@Christilut Let's take it to the Conveyor forum (see link above). Our comments are being marked off-topic here. |
Pinging this back up. @MarshallOfSound judging from your comments over the years you seem to have some beef with What should we use? NSIS or Squirrel? And why? In this comment here: electron/forge#485 (comment) you suggest Squirrel is alive and well and is recommended. Then in the discussion here I used I began my app from scratch recently and saw the big "Forge 6" announcement. I jumped in because it is the "official tooling". Build the whole app and now when its time to publish I realized Forge doesnt support NSIS, doesnt support AppImage, auto-updates come with caveats and require instantiating a server if app isn't open source github release, etc. So after putting all this work into the "new official electron packaging pipeline" I realize that So, @MarshallOfSound, all many of us want to know is a direct answer to the following questions - so it would be really awesome if you can shine a light on this:
Apologies about the rant but attempting to inform myself about what the best course of action has been quite frustrating and I just want to ship my app. |
Just to point out the obvious, those comments are a year apart? 🙃 The first comment is still my stance though 😄 Read below for the "what did you assess" I guess.
Because the majority of the big Electron apps use Squirrel or some variant there-of. Using a different technology that "just works" is fine and good until people come running to us saying "why did this break", "how do I fix this", "how does this work" which happens more than you'd realize and their have been several historical issues specifically with NSIS and the There is also a lot of incorrect information out there about stuff to do with Squirrel. For instance even in your comment:
This is simply fundamentally incorrect. Both Squirrel.Mac and Squirrel.Windows can update from any static storage solution like S3 or GCS or whatever you might want to use. In fact The popularity of NSIS in builder was a forcing function of the builder maintainers declaring the squirrel windows target "deprecated" and that has never been the official stance of the electron maintainers. It is still our preferred installation / distribution technology on windows and there is no reason for that to change currently. This is partially on us as our documentation (although massively improved in the last few months) still has several key gaps including probably a doc that would have saved you here "Auto updaters with Forge and S3" or something 😀
No, because those issues haven't had any meaningful impact on Electron or the ecosystem if they even exist. Squirrel is relatively stable and hasn't required any changes recently, if it came to it the Electron team is more than willing to do what is required to ensure the ecosystems continued usage of Squirrel.Windows is viable or provide a valid path to an alternative. Don't forget as I mentioned above most of the biggest Electron apps are using Squirrel, you'd be on the same side as the engineering teams at msft, slack, etc.
This also technically isn't correct, the whole point of forge is it's extensible, pluggable and anyone can do anything if compatible tools are built. For the two you listed builder publishes interop layers for forge to expose their nsis and appimage targets amonst others.
Forge doesn't support appimage directly because (a) as mentioned above, it's already supported via a community maker and (b) alternatives are tangibly better, for instance snap. Has a store, is fully isolated, and you don't need to worry about an updater at all because the store manages it all for you. |
Per comment above and elsewhere, Squirrel.Windows isn't going anywhere right now. The Electron team is always discussing key things like our updater technology and if their are any changes in this area the first place you'll hear about them is probably our blog. Folks should continue using Squirrel.Windows like the rest of us 😄 |
@MarshallOfSound Thank you very much for your quick response. I was really stuck as to how to move forward and your response has given me more confidence to just stick with forge. Informed by your response what I will do is use auto-update with nucleus for mac/windows squirrel updates and the snap store for linux. (btw the auto-update documentation of using a static storage is not clear as it only mentions nucleus,nuts,hazel,etc for auto-updates). Apologies my comment was heated. Thank you for taking the time to answer and thank you for you work on the project. |
For sure, I've made a note of this and hopefully will get some better documentation on this out soon. You should be able to just use |
Thank you! Please also consider adding information for people who are deploying to internal enterprise networks like a network share. We can't have any public s3 buckets so s3 is out of the question. In the end we're deploying it to a local network share, but that isn't talked about anywhere. It also doesn't explain how to handle structuring your updates directory when the I've had to spend many hours reading through the source code of forge, electron-winstaller, squirrel, autoUpdater, etc. to figure out how all of this exactly works together. The documentation lacks a lot of details or examples showing how everything interacts. It's very confusing if you aren't on the happy path. Stuff like #17722 (comment) should be noted in the docs. Far too often do I finally find the details I'm looking for after hours of reading through issue threads. Tangentially related, I had to eject from forge after hours of struggle getting things to work correctly. I'm using electron-vite for the build so I have a separate build directory. Forge provides little to no info regarding what to do in a situation like this. Eventually I just wrote my own build scripts using electron-packager and electron-winstaller directly and had a much easier time. Sorry for the rant, had to vent a bit of frustration from the past few weeks. I really appreciate the amazing work y'all do and I'm happy to see things are improving. Now I'm trying to set up a way to handle multiple release channels. |
Yeah using things like
Hm, this is tricky because although Squirrel.Windows supports The docs / explanation for how the S3 uploader is going to work in the future should hopefully paint a much clearer picture for folks wanting to publish and update using a different static storage provider.
This is changing soon --> electron/forge#3108 Hopefully you'll see these docs / improvements before the end of the year, but if not they'll definitely coming flying in hot early next year when everyone is back from their respective breaks |
The fork https://github.com/clowd/Clowd.Squirrel could be switched to in case there's any need in the future. |
Hi, I've been using squirrel and for some small percentage of users the installer never terminates (though the app is installed successfully). It's hard to know the root cause but it may be a race condition when several squirrel (electron) apps are auto-updating simultaneously (if you have discord and teams installed for instance). I just want to note that for me squirrel+electron hasn't been a positive experience and I would like to move away from it. I'm investigating both msi and nsis but both are difficult with forge unfortunately. |
@nkallen If you want to stop using Squirrel entirely, there is a new section of the Electron website that discusses alternative tools: https://www.electronjs.org/docs/latest/tutorial/forge-overview (expand the expando). The second tool* is independent of Squirrel and will automatically integrate MSIX on Windows and Sparkle on macOS. *disclosure: I made it |
Unfortunately that was not my experience, for the past two weeks I've had to refactor my Electron app due to a lack of understanding on configuring webpacks to work with Electron so I've had to rely on Electron boilerplates with different toolings, and one of the boilerplates that I've spent the last 15 hours on was using Electron-Forge. The initial experience of me implementing Electron Builder for my app was alright - there were a few issues here and there but most of the things work within my expectations and I could quickly find solutions.
Yes but what about just Github itself?
Large enterprises tend to choose the tools with lots of supports because it’s a safe bet and they can afford it. This does not imply those tools are well-designed or robust, and vice versa.
I've been searching everywhere for an example of how to use the nsis maker in Forge, I've seen others asking the same thing as well, yet the nsis page that you mentioned had already been pointing to Electron Builder's repo. (and yes, I do realize it's been almost a year since your last comment, I suppose it just shows how much things have changed) I applogize for my rant. I am certain there are things about Electron Forge that I’ve missed and may have made unfair calls due to my ignorance. I’m keen to hear your thoughts. |
Switching from builder to forge is not as easy as we'd like it to be, but that isn't the green path forge has been optimized for. If you started your app with forge from the beginning things like webpack would Just Work ™️.
Simple, github releases are behind the github api rate limit. If you want your updates to not work because the user has hit the github api more than 60 times an hour, sure, static files on github releases work just fine. But we don't want to do that, so instead we provide an open source free proxy that arguably works better than the direct approach 🤷 If you have specific issues with forge please raise issues or ask in the discord, folks will try our best to help you out.
That looks like you aren't changing the default installer gif? Not sure why it would be getting stuck but the squirrel install log would tell you. |
Hi, Yes I'm not changing the default installer gif, (unlikely that's the issue). The squirrel logs have nothing useful (I've had about a dozen users send me them at this point). The only suggestive evidence I have is that users have reported it failing while Discord was updating itself during an install. Could be a red herring though. Let me put it like this though: it is basically impossible to debug this and squirrel is basically unmaintained so there's no support to look towards either. Let me provide an example. Here is a recent install on a test machine that failed. It's a reinstall. From Squirrel-Install [global squirrel log]
From Squirrel-Shortcut [my app's squirrel log]
The squirrel global log didn't complete the install process; it would normally continue with entries like this:
I have briefly looked at the squirrel source code, I've asked for support in the forge discord three times... but this is still an unsolved problem |
https://github.com/Squirrel/Squirrel.Windows is no longer being maintained.
so electron updater for windows will give a plan? still use squirrel or another update tech?
or use updater like electron-builder built-in updater ?
The text was updated successfully, but these errors were encountered: