Commit Graph

72 Commits

Author SHA1 Message Date
derrod
aed8e2384d updater: Remove non-error logging from multithreaded code 2023-09-05 15:02:41 -04:00
derrod
028b3c12cf updater: Static analysis cleanups 2023-08-26 16:53:14 -07:00
derrod
014f7683cf updater: Pass through parameters to restarted OBS instance 2023-08-11 00:34:36 +02:00
Ryan Foster
64139a6bbd CI: Update to clang-format 16
This commit also modifies UI, libobs, and plugins.
2023-08-10 16:07:25 -04:00
derrod
d1dd7dd6d3 updater: Migrate to nlohmann JSON 2023-07-23 02:18:53 +02:00
derrod
bdc2da6e48 updater: Update installed version in registry 2023-07-22 16:33:19 -07:00
Richard Stanway
b7fddceb67 updater: Treat mapped file errors as a sharing violation
For whatever reason there exists a different error code if the file has
been opened as a mapped file, so we need to handle it.
2023-07-21 03:02:31 +02:00
derrod
46525f5175 updater: Fix updating without patch files 2023-07-07 12:50:02 -04:00
derrod
8983083cec updater: Refactor and cleanup 2023-06-11 02:17:28 +02:00
Lain
106c7aa61f Update copyrights/names 2023-05-20 01:31:18 -07:00
derrod
5fbe9cdb41 updater: Add workaround for broken CLI arguments 2023-03-29 02:08:46 +02:00
derrod
0ece23dff2 updater: Bump version 2023-03-07 15:34:27 -05:00
derrod
2790e1ab1b updater: Use native WinHTTP decompression (remove zlib) 2023-03-07 15:34:27 -05:00
derrod
fc5a84ed5d updater: Use zstd for patch manifest request 2023-03-07 15:34:27 -05:00
derrod
f29e1fdee4 updater: Switch to Zstandard for delta updates
zstd is faster, less resource intensive, and produces smaller
files than bsdiff + LZMA.

Overall, it's a significant improvement for our workflow.
2023-03-07 15:34:27 -05:00
derrod
787c5f67a8 updater: Add Zstandard for compressed downloads
Using zstd reduces the download size for updates by about 2/3.
2023-03-07 15:34:27 -05:00
derrod
8ba646c842 updater: Check if awaited instance matches current install
Also replaces any secondary usages of GetCurrentDirectory with cached
static variable.

Co-Authored-By: Richard Stanway <r1ch@r1ch.net>
2023-03-03 21:47:56 +00:00
derrod
08733a0e1a updater: Remove 32-bit Support 2023-03-01 20:18:03 -05:00
derrod
d15dce99d0 updater: Multi-threaded delta patching 2023-03-01 16:20:43 -05:00
Georges Basile Stavracas Neto
a1a98f9cfd plugins: Drop win-ivcam
Apparently this was a prototype from Intel that never really
properly launched. Remove the plugin.
2023-02-24 14:04:29 +01:00
derrod
cd78ecae50 updater: Deduplicate delta patch downloads 2023-01-29 02:24:55 -08:00
derrod
cbe3ef7e57 Revert "UI/updater: Fix files with similar hashes clashing"
This reverts commit 7396c211be.
2023-01-29 02:24:55 -08:00
derrod
778cf5a96a updater: Pass AppData path to elevated process 2023-01-25 12:32:41 -05:00
derrod
ffd7202168 updater: Add additional status messages 2023-01-24 20:14:40 -08:00
derrod
edcb80ae8b updater: Hash files with multiple threads 2023-01-22 23:58:56 +01:00
derrod
143877c8ff updater: Fix portable OBS not being relaunched correctly 2023-01-14 15:30:58 -08:00
derrod
807c0c386d updater: Deduplicate Downloads 2023-01-12 11:37:26 -08:00
derrod
9c2cccfbc7 updater: Bump to version 2.2 2022-12-03 15:03:28 -08:00
derrod
1617424466 updater: Add --branch/--portable command line arguments 2022-11-22 02:54:07 +01:00
Ryan Foster
7d853fb155 UI/updater: Only run updater on Windows 10+
OBS Studio 28 no longer supports Windows 7, 8, or 8.1, and Qt 6 will
fail to run on those versions. Users on those systems being offered the
update will end up in a state where OBS will not run if they install the
update. Let's prevent the updater executable from running on those
versions to avoid that scenario.
2022-09-02 18:03:17 -07:00
jp9000
7396c211be UI/updater: Fix files with similar hashes clashing
Do to multithreading the update process, files of the same hash can
sometimes collide due to race. Ensure the filenames are all unique by
appending an incremented value for each file.
2022-08-31 20:51:21 -07:00
jp9000
e87a97eb8c UI/updater: Fix silent failure on auto-update 2022-08-31 20:19:11 -07:00
Richard Stanway
31414d2d7a UI/updater: Fix wrong parameter order for MessageBox 2022-09-01 00:44:57 +02:00
Richard Stanway
854d75919f UI/updater: Use a unique temp path for patch files
Fixes a case where patches for the same destination file but different
source files would clobber each other and cause integrity check
failures.
2022-09-01 00:37:53 +02:00
derrod
9a5e094cb3 UI/updater: Delete files listed as removed in manifest 2022-08-30 00:22:22 -07:00
Richard Stanway
2678d351f5 UI/updater: Increase number of download workers
Request / response latency dominates the download time of small
files and patches, especially the locale files. Increasing this to
4 doesn't consume many more resources and basically doubles the
download speed, especially on higher latency connections.
2020-12-21 18:32:39 +01:00
Richard Stanway
f0ed8c337e UI/updater: Enable HTTP2 and TLS 1.3
Unfortunately WinHTTP doesn't support multiplexing with HTTP2, but there
is still some minor benefit to enabling it. Windows 10 21H1 will enable
TLS 1.3 client support in Schannel, so let's get ready for it.
2020-12-21 18:32:39 +01:00
Richard Stanway
9201390a46 UI/updater: Move in-use files away before writing
On a modern Windows OS, you can rename an in-use file despite not being
able to write to it. With the introduction of the virtual camera, it is
now quite common that users will have in-use files when updating. This
commit renames in-use files, allowing the new version to be installed.
Upon a reboot, the previously in-use file will be deleted.
2020-12-15 21:11:47 +01:00
Richard Stanway
c0d7602b64 UI/updater: Always clean up temporary files
If an update failed to install, it would leave a single temporary file
behind for that particular patch / file.
2020-12-15 21:11:35 +01:00
jp9000
580eecda01 UI: Fix installer/updater check for vs2019 32bit
VS2019 32bit redist does not have/use vcruntime140_1.dll, so remove
those checks from the installer and auto-updater.
2020-12-13 21:59:21 -08:00
jp9000
13ee86ab7f UI/updater: Fix dll check 2020-12-09 22:25:49 -08:00
jp9000
a01d3e77b1 UI: Remove jansson requirement from UI and updater
Use json11 instead.
2020-12-09 22:23:03 -08:00
jp9000
9cc5aa5629 UI/updater: Update redist checks to VS2019 2020-12-09 22:23:03 -08:00
jp9000
4a9bb86916 UI/updater: Fix cmd prompts popping up registering vcam
Fixes an issue where command prompts would pop up when registering the
virtual camera in the auto-updater
2020-09-29 04:36:32 -07:00
jp9000
a72a52fa38 UI: Add virtual camera to UI
Adds a virtual camera button to the main user interface.  If virtual
camera is not installed, it will not add the button.  On Windows, it
detects whether the virtual camera filters are properly registered, and
will only add the button if the virtual camera filter is confirmed
registered.

Also adds a virtual camera option to the auto-configuration wizard,
which will just simply set the user's resolution/scale to 1920x1080 at
30 FPS.
2020-07-07 06:09:59 -07:00
Richard Stanway
3c91fac18e UI/updater: Fix running updater as different user
If the elevated user was a different user account, the updater would
look in the wrong user's appdata for the manifest and fail.
2020-06-19 16:20:32 +02:00
Richard Stanway
f26941b566 UI/updater: Exit with error if elevation failed
In rare cases, "runas" would somehow launch the updater as a non-admin user
again, resulting in a loop where the updater constantly spawns processes.
Fixes https://github.com/obsproject/obs-studio/issues/2984
2020-06-19 16:20:32 +02:00
Richard Stanway
078ea5222d UI/updater: Fix launching OBS as admin post-update
A long standing lack of synchronization on the elevated process handle
made the non-elevated process always exit, so the updater would assume
it was started elevated and launch OBS from the elevated context.

Also applies the altered working directory to the non-elevated code
path so it can find the OBS executable properly.
2020-05-05 03:18:45 +02:00
Matthieu Cunzi
74acbd7ed0 win-capture: Add Vulkan capture
Co-authored-by: jp9000 <obs.jim@gmail.com>
Co-authored-by: jpark37 <jpark37@users.noreply.github.com>
2020-02-29 04:53:28 -08:00
jp9000
f53df7da64 clang-format: Apply formatting
Code submissions have continually suffered from formatting
inconsistencies that constantly have to be addressed.  Using
clang-format simplifies this by making code formatting more consistent,
and allows automation of the code formatting so that maintainers can
focus more on the code itself instead of code formatting.
2019-06-23 23:49:10 -07:00