Skip to content
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鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Auto Update mechanism #265

Open
CHEF-KOCH opened this issue May 27, 2018 · 14 comments
Open

[Feature Request] Auto Update mechanism #265

CHEF-KOCH opened this issue May 27, 2018 · 14 comments

Comments

@CHEF-KOCH
Copy link

@CHEF-KOCH CHEF-KOCH commented May 27, 2018

Why isn't there an integrated (opt-in) toggle to check if there is an update available for the GUI client?

馃

@mattock

This comment has been minimized.

Copy link
Member

@mattock mattock commented May 28, 2018

Short answer: because nobody has implemented it.

Personally I would prefer spending that development effort on creating Chocolatey packages instead. The people who want to always use the latest openvpn-gui could stay updated very easily without any extra pop-up notifications. And this would apply to all applications installed via Chocolatey, not just openvpn-gui.

That said, I'm not opposed to having an opt-in update notifier in openvpn-gui, if somebody implements it.

@cron2

This comment has been minimized.

Copy link
Contributor

@cron2 cron2 commented May 28, 2018

@CHEF-KOCH

This comment has been minimized.

Copy link
Author

@CHEF-KOCH CHEF-KOCH commented May 28, 2018

Hey guys,
thanks for the feedback. Let's agree that everything is better than no notification because I see updating software as an important task.

About Chocolatey

That sounds good and is more as I'm asking for. My idea was simply to integrate a toogle which allows someone to check for updates or it automatically checks let's week or when you restart the GUI for an update then it offers you to download the latest versions which opens your Browser and points you to the changelog or directly to the download location. Classical like KeePass or other software.

However, I agree that there are more elegant solutions and it's 2018 and people might want to integrate the software into their OS or looking for a silent switch or advance stuff like that, then I think Chocolatey would be the best solution.

The general idea with this on paper looks good, however I think some people would be against it since Chocolatey is something you need to install on your own (because it's not integrated into Windows) so if something then this should be provided as opt-in solution.

@mattock

This comment has been minimized.

Copy link
Member

@mattock mattock commented May 28, 2018

Microsoft's OneGet is included in recent Windows versions and Chocolatey is one of the package providers. The last time I checked (and that was a while ago) the Chocolatey plugin was a bit outdated, but things may have changed. It seems that Microsoft has finally realized the need for global package management. But it will probably take a long while before it becomes really mainstream.

@CHEF-KOCH

This comment has been minimized.

Copy link
Author

@CHEF-KOCH CHEF-KOCH commented May 28, 2018

That's true, however, keep in mind that this solution requires Windows 10.

@EagleErwin

This comment has been minimized.

Copy link
Contributor

@EagleErwin EagleErwin commented May 28, 2018

While I think this would be a nice feature, I am wondering if the OpenVPN-GUI is guaranteed to be compatible with the installed OpenVPN version on the system. Normally, OpenVPN-GUI is bundled with the OpenVPN installer for Windows, which more or less guarantees that this set is compatible with each other.

If OpenVPN-GUI would have its own update-routine, there is a risk that the OpenVPN version itself is never updated by the user which at some point might lead to an incompatibility.

Maybe let the GUI also check for updates of OpenVPN and at least notify the end user if an update is needed, or update OpenVPN together with the OpenVPN-GUI.

@cron2

This comment has been minimized.

Copy link
Contributor

@cron2 cron2 commented May 28, 2018

@mattock

This comment has been minimized.

Copy link
Member

@mattock mattock commented May 29, 2018

Also note that Chocolatey itself works fine on all currently supported Windows versions, i.e. Windows 7 and above. Only OneGet, the generic package management framework, is Windows 10 and later.

@CHEF-KOCH

This comment has been minimized.

Copy link
Author

@CHEF-KOCH CHEF-KOCH commented May 29, 2018

I would make the following proposal:

  • Integration of an auto-update check mechanism (default enabled) but it can be disabled within the GUI.
    (optional) a /Silent switch which allows you to pre-configure the setup (sorry I'm not really involved into the project so I'm not sure if such thing is already integrated) which gets the -autoupdate=0/1 flag or something which pre-sets the user choice. If a silent switch isn't right now implemented or bundled within the installer then just forget what I said here.
  • The updater will check every week (that's enough I guess) or/and on every GUI "restart" for an update and informs you that there is an update avbl. by opening the changelog page with the default Browser.
  • Maybe an changelog integration (page?/text?) like we have with for example PIA's 'improved' VPN Manager application, which basically shows you an option to check the latest three versions in the changelog as a separate window, so this could also be used to show changes in the new version and everyone could decide if he likes to upgrade or not. However, this a heavy thing and I guess PIA or ProtonVPN uses node.js stuff to do this, I'm not really a fan of it just to show a changelog window because it makes the entire install setup twice as big as it is right now... A simple text file would be (for me) enough or as said, opening it into the Browser. Maybe a small popup 'update avbl. which prevents from opening your Browser without user consent is here the 'best' solution.

About Chocolatey VS. OneGet.

I think the entire additional thing like Chocolatey etc is something which isn't urgent right now, I think there still lots of Windows 7 folks out there which use the GUI application here so they don't need it, however, keep in mind that Windows 7 support will get soon or later EOL and in the meantime we have enough time to come to a final solution which satisfies everyone.

I'm whenever if it's possible for something which doesn't need to be installed. So I like to get some integration which (if possible) uses the Windows own mechanism/tools. In this case, nothing must additionally be downloaded which also reduces a possible attack scenarios via malware etc. and we shouldn't forget that not everyone likes to have software installed which is 'unrelated' to the main project or he simply not needs or wants to use it.

About the driver / bundle check

I think it's the best to check and verify the checksums and then also integrate a check if there is currently a tap driver installed or in the Windows Storage Folder, that should be more than enough so nothing gets 'overridden' without any user content. On the first driver installation, you also see the 'would you like to trust OpenVPN ...." dialogue to prevent such thing. As long as you uncheck the option and press yes every new driver installation will ask you again if you like to install the driver with the same dialogue.

@mattock

This comment has been minimized.

Copy link
Member

@mattock mattock commented May 29, 2018

@CHEF-KOCH and now to the big question: are willing and able to implement any of these features?

@selvanair

This comment has been minimized.

Copy link
Contributor

@selvanair selvanair commented May 29, 2018

Adding an update mechanism is rather easy if we use a third-party library like winsparkle (https://winsparkle.org/). I have been reluctant to do that as it will pull in dependency on wxWidgets and a few other things or be reliant on the binary distribution of winsparkle.

My preference is to brew something on our own, leaner and dependent only on plain win32 api. But to do that well, it's a lot of work: embedded html for changelog, rss parsing, additional logic and UI , all with win32 api is some effort to develop and maintain.

If dependency on winsparkle is something we can live with, I can provide a patch. The size of our binary release will go up by ~ 2.5 MB. That project is meant to be built with VS so we'll have to just use their binary distribution. Its a ~12 MB zip, but we only need to include one 2.5 MB dll in our release. It comes with MIT license, uses expat (MIT), wxWidgets (LGPL) and OpenSSL all statically linked [*] into one dll.

Alternatively, if anyone can provide a self-contained win32 api based implementation, that would be great.

[*] Static linking has some downsides -- we'll be dependent on winsparkle to release fixes when any of those statically linked libraries get security fixes.

@mattock

This comment has been minimized.

Copy link
Member

@mattock mattock commented May 30, 2018

Our current OpenVPN installer is 3.7 megabytes in size. Adding 2.5MB DLL just for automated updates is too much imho. Also, having more dependencies in the installer means more security patch releases and more hassle for us and our users. I would definitely lean towards a self-contained approach.

@CHEF-KOCH

This comment has been minimized.

Copy link
Author

@CHEF-KOCH CHEF-KOCH commented May 30, 2018

I definitely could help writing a PowerShell script, my idea was to release the binaries on GitGub under the Release tab and then grab and check it regularly. The changelog would be the given text within each new release. Another benefit would that in case the application ever gets it's way into Windows store you could easier upload the release.

About the text parsing, I'm not sure how big this would be but I can guarantee under 2 MB would be possible. I've seen other project which did a similar thing but give me some time I need to check and test it.

@rdiez

This comment has been minimized.

Copy link

@rdiez rdiez commented May 3, 2019

There is a Chocolatey package already:

https://chocolatey.org/packages/openvpn

It is not ideal, but it is better than nothing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can鈥檛 perform that action at this time.