- Added missing cultureinformation on some date/time strings
- Added a check if a file exists to avoid an exception when probing for datafolder files
- Fixed a string that should be a constant
- Fixed a dirseparator append
- Fixed places where the exception message was logged into the log message itself creating double data
When using the TrayIcon with no hosted server (i.e., connecting to a running server), it is now possible to save the password and url in the secret provider.
There is a checkbox that allows saving the settings, and if checked, will save the settings to the secret provider (using the OS default if none is specifically provided).
This fixes#6379
Added a password dialog to get the server password if not provided on the commandline.
This also allows overriding the server url.
This is related to #6379
This PR changes the termination signal to a `CancellationToken` instead of a `ManualResetEvent` as the former works better with async code.
With this change there is no longer a thread being captured during each long poll operation.
This fixes#6452
This PR changes the macOS TrayIcon to use template icons that change automatically based on the darkness of the desktop background.
Also updates AvaloniaUI to latest version.
This fixes#6021
This PR updates the probing logic to not try the database if a password is supplied on the commandline.
It also fixes a crash that could happen at an unwanted place, if the user does not have write access to the supplied data folder. After this, the application will still crash due to not having a place to write information, but it does not crash in the preloader logic. This also prevents creating the folder while probing for the database.
This PR also fixes a case where the database could become encrypted, if the ServerUtil was providing an encryption key to an unencrypted database. Before this fix, the database would be encrypted with the key provided to ServerUtil, which would most likely cause the Server/TrayIcon to fail starting and perhaps crash.
This fixes#6377
If the secret provider is used to supply arguments only used by the TrayIcon it does not work.
The secret provider is applied in the Server part, so any settings passed through are correctly resolved, but for the few options that apply directly to the TrayIcon this was not resolved.
With this PR, the secret provider is applied to TrayIcon options as well.
This applies to:
- `--hosturl`
- `--browser-command`
- `--host-cert-hash`
- `--webservice-password`
This updates VSS to default use Vanara in favor of AlphaVSS which is no longer maintained.
The build for Vanara requires targeting `net8.0-windows7.0`, which will cause significant build overhead and complexity for cross platform builds.
To counter this, the setup is to have a single project, `Duplicati.Library.WindowsModules`, that is targeting `net8.0-windows7.0`.
The output from this project is then hoisted into the TrayIcon project for Windows builds so the files are available when debugging on Windows.
A top-level dummy executable project is added to ensure the project always builds.
The built modules are then loaded with reflection when requested.
With the use of Vanara there is now also support for using BackupRead to read files without making a VSS snapshot.
With BackupRead, it is possible to read locked files, but it still requires the SeBackupPrivilege as VSS does as well.
Unfortunately, the `vssapi.dll` file is not shipped for Arm64 on Windows, so even with Vanara this will not work, and only WMIC is supported on Arm64.
A workaround is to run Duplicati with x64 emulation if more advanced VSS features are needed (HyperV and MSSQL support).
This PR also updates options and filters out unsupported options for each operating system, so options that are not supported by the current OS are not reported and will give warnings if they are used, as opposed to just being ignored.
The release builder project has been updated to exclude the unused project, and purge unwanted outputs.
Improvement on AvaloniaRunner, HttpServerConnection, and HostedInstanceKeeper to prevent race conditions during shutdown.
Adds cancellation tokens and locking mechanisms to ensure that operations are properly stopped and resources are released in a controlled manner.
Also handles a NullReferenceException during Avalonia shutdown, and avoids invoking `InstanceShutdown` or `ConnectionClosed` multiple times.
This addresses [Issue](https://github.com/duplicati/duplicati/issues/6114).
Whenever in non-write context, the permissions of the folder are not set.
Changing pattern from static constructor execution.
This adds support for starting the trayicon even if there is no server.
The trayicon will start up in a disconnected state and stay like that until it manages to connect.
This fixes Support TrayIcon running with no connection #5993
It should be noted that I was unable to completely remove IPv4 on Windows 11 to a state where it would not provide the 127.0.0.1 loopback, even when disabling Ipv4 in various ways, including with registry flags.
On ubuntu/linux, after completely disabling ipv4 the ipv6 loopback was returned.
Implemented support for disconneted state with TrayIcon.
Added some notification support (Windows and Linux).
Changed some logic to prevent hangs on clicks.