SyncTrayzor: Windows host for Syncthing. Installer, auto-start, built-in browser, tray icon, folder watcher, and more

(Antony Male) #81

Ongoing, fairly sparse, discussions at the moment. I’d be up for it, but it’s on the say-so of the powers that be.

(Jared Thirsk) #82

I came across another option, “Squirrel for Windows” smoothest install and update experience on Windows that I have ever seen! Mac-like.

Potential drawbacks:

  • No UAC (by design)
  • That means program gets installed to %LocalAppData%

Advantages for end-users:

  • Double click the installer, and bam, it installs, puts a link in Start Menu, and runs, with no wizard, no next button, no UAC.
  • Close and reopen the app, and it will be updated! Or, reboot the computer, and it will be updated!
  • User never gets asked about updating (like Chrome). It just magically gets better.

Nice things for devs:

  • Package your app into a nuget. There are tool(s) to do this.
  • Updater calculates deltas to minimize bandwidth use. Uses some sort of Windows OS delta mechanism. (Not totally optimal in current version, but maybe soon.)
  • Deployment: copy all the package files/deltas to some HTTP(S) server!
    • (No server implementation)
  • [optional] There is some sort of built-in way of getting HTML formatted release notes (that you enter in markdown.)


  • Code sign the app to get around Anti-viruses. (Comodo is one company that does this. You have to prove you are a real business. Might cost around $99.)

(Antony Male) #83

Thanks for the link! Looks interesting. I’m fundamentally opposed to installing applications in localappdata: UAC exists for a good reason, and I like to back up my appdata folders (to preserve application settings), but I have to specifically exclude all the applications that have decided to install there.

However I’m rapidly being convinced that we need the option for silent updates! I’m thinking of taking the Firefox approach of having an update service, which runs the inno setup installer in unattended mode.

(Jared Thirsk) #84

I’m fundamentally opposed to installing applications in localappdata: UAC exists for a good reason, and I like to back up my appdata folders (to preserve application settings), but I have to specifically exclude all the applications that have decided to install there.

I guess the squirrel thing isn’t for you then. I’m the same way, and as I mentioned, installed Cryptoprevent to block programs from running there (since that’s where syncthing got installed to. Or was that AppData?) My stance may be a bit mushy though. I love to make things easy for users.

However I’m rapidly being convinced that we need the option for silent updates! I’m thinking of taking the Firefox approach of having an update service, which runs the inno setup installer in unattended mode

Does this stay running in the background? The quicktime/java/etc. updaters that run in the background and do nothing are a pet peeve of mine and I imagine any other people. I’m not sure how Firefox’s approach works though.

(Antony Male) #85

I’ve no idea what the java one actually does, since it still seems to always put up a UAC prompt!

Mozilla’s approach is to leave the update service stopped most of the time. They set up permissions so that a normal user can start the service, then it’s kicked off when an update needs to be applied. More info here:

The other option I’m playing with is to present a custom toast message from the tray icon, which has a button to kick off installation of an update.

There are pros and cons to each approach. I’ll open an issue with a braindump of my findings and thoughts next week when I have a computer.

(Michael) #86

I haven’t seen this mentioned (may have missed it) but I’m not sure what browser resources Trayzor is using? Those seeing high memory usage, like princejosuah, may have huge plug-ins/add-ons for their browser (like AdBlock Plus which is huge).

For me, it loads plenty quickly and task manager shows around 50MB. This is on a low-end Celeron laptop Win 7 x64 v 1.0.9 and 0.10.29.

@Cydron I don’t think modern .NET has many problems with memory leaks. I have .NET apps (such as Windows Firewall Control) that run 7/24 on PCs that get re-booted perhaps twice a year with zero memory issues. If SyncTrayzor had a significant memory leak most of us would be seeing high usage.

Also, SyncTrayzor updated itself yesterday and I did not receive a UAC dialog. It’s possible, however, I started it with “run as admin” which might be the easiest solution for now to that issue? I wouldn’t sweat the update issue for now. Lots of apps run into UAC issues and sometimes the “cure” is worse than the problem. Firefox got flack for their method for silently updating for example.

Overall I want to thank Canton7 and other contributors for SyncTrayzor. It so far has “just worked” for me and made setting up Syncthing painless.

(Antony Male) #87

It uses CEF, which is basically embedded Chromium. It should work independently to any other browser setup on your computer, so things like plugins/addons are a non-issue.

That depends! The built-in WebBrowser control leaks unmanaged memory like nobody’s business - I was subjecting people to a 20MB memory increase each time they minimized SyncTrayzor to the tray and restored it! Another time I was losing a few MB per close-to-tray/restore because an binding was rooting the entire visual tree, when I wanted it to be destroyed. There are still things that can catch you out :wink:

I’ve spent days running SyncTrayzor in a profiler doing everything I can think of over and over and haven’t managed to trigger any other leaks, so I’m reasonably confident it’s all working as it should, but I’m very interested to hear if people have found ways of making it behave otherwise.

That will be Syncthing auto-updating, not SyncTrayzor. SyncTrayzor does not currently auto-update: it will display a prompt on start-up saying “hey, there’s a new version” and link you to the Github downloads page, but it’s up to you to download and run the new version’s installer. I’m in two minds as to whether we need to go completely silent on the updates (I’ll braindump into a Github issue later today, hopefully), but I agree we need to be better than we currently are.


(Antony Male) #88

This should be fixed in v1.0.10

(Urza) #89

Hey guys. Seeing today’s update of SyncTrayzor and what is new - just wanted to thank you. Good job. You are doing syncthing much more usable for regular windows user. Really appreciate.

I am also C#/WPF developer so I am offering my help if you would need anything. One thing I am missing is better and faster information about what files where synced into my computer. When a friend of mine sends me a file to our dropbox shared folder, dropbox shows me this in bubble from systray just after the file is synced. I was thinking about a small popup window next to systray showing last synced files for each repo… similar to the UI dropbox has on windows… maybe with some quick actions right there and button to open full GUI window. What do you think?

I am attaching the dropbox popup in case you are not familiar with it.

(Antony Male) #90

Thanks :smile:

Awesome! If you see an open issue you’d like to tackle, please lay claim to it then go to town. contains the details.

Agreed. The Github issue is:

The caveat is that we can only display information for downloaded files; the good news is that we can get all the information we want about downloaded files. Creating the UI for this should be pretty easy: the main challenge is figuring out exactly what we want to display and how we want to display it.

This and better auto-updates are the two main chunks of work on the roadmap.

(Antony Male) #91

From Problems syncing with NAS + very low LAN sync speed, it looks like you were still having memory issues? There’s an issue open where we’re slowly figuring out what’s going on:


Hello ! Sorry for replying late (i’m not getting mail notifications anymore, kind of bizarre…).

There were files with quite long names (nested in many many subfolders) in a repo. Deleting them on the PC didn’t reflect on the NAS who adds them back, so Syncthing kept trying to sync them forever. I’ve finally zipped and deleted a bunch of those files, and since then I get a reasonable memory usage from SyncTrayzor (currently @ 42 MB).

Issue closed for me, as this improvement is persistent over a few days.

A big thank you, both for the software and the support.

(David Rimmer) #93

I installed Sync Trayzor todayand find it works well.

However, I do have a little niggle because of the way I run syncthing.

I installed syncthing earlier, and start it 10 minutes after logon via the task scheduler.

This is so that this background task doesn’t slow me down at logon.

Now Trazor has an option to start at logon with a nested option to start minimised.

I changed the task to start Trayzor rather than syncthing and re-booted.

10 minutes after logging on, Trazor started up with its window shoved in my face.

The simple solution would be to allow start minimised when not starting automatically at login.

Alternatively, a configurable delay could be specified in the settings.

So, this is really a feature request rather than a niggle. :wink:

Just hope this doesn’t get buried in this long thread.

(Antony Male) #94

Start it with the -minimized flag, e.g. "C:\Program Files\SyncTrayzor\SyncTrayzor.exe" -minimized :smile:. That’s all the “Start Minimized” checkbox does.

(David Rimmer) #95

Thanks. :smile: Doh! :blush:

(Antony Male) #96

To be fair, it’s not documented anywhere. You’d have to tell SyncTrayzor to auto-start minimized, then go and look at the registry key it created (the location of which is documented).

(David Rimmer) #97

Since we’re being nice, I’d like to compliment you on the quality and simplicity of your documentation. :smile:

(Antony Male) #98

aka lack of! Hey, it’s a GUI application. I save my documentation sprees for libraries :stuck_out_tongue_closed_eyes:

(David Rimmer) #99

No irony. Sincere compliment. I prefer quality to quantity. :pensive:

(Lucas Pchara) #100

This is amazing, I can only ask one thing? One option in settings to show / hide the dialog bar.