Compare commits

...

113 Commits

Author SHA1 Message Date
Chocobo1
a5b5ba2065 GHA CI: improve manageability for boost version
Adopted suggestion from: https://github.com/qbittorrent/qBittorrent/pull/23631#discussion_r2637707057

PR #23671.
2025-12-30 21:59:40 +08:00
Chocobo1
14d2db185a WebUI: simplify code for filtering nodes
Now it use object property to store visited information instead of an array.
Also prefix temporary properties with underscore.
There are no user visible changes.

PR #23670.
2025-12-30 21:50:09 +08:00
Chocobo1
351b065553 Migrate away from old libtorrent setting
The setting has been renamed from `peer_tos` to `peer_dscp` and the default value has changed
from `0x04` to `0x01`.
Note that in WebAPI and qbt config, the previous name is retained to avoid disruption to user.

Upstream PR:
https://github.com/arvidn/libtorrent/pull/6822
https://github.com/arvidn/libtorrent/pull/8072

PR #23669.
2025-12-30 21:17:37 +08:00
Vladimir Golovnev
52a6e7229b Refresh announce status if trackers were removed or replaced
PR #23668.
2025-12-29 11:50:58 +03:00
xavier2k6
be12be2b79 GHA CI: Bump pandoc version
https://github.com/jgm/pandoc/releases/

PR #23638.
2025-12-27 23:02:46 +08:00
Vladimir Golovnev
0bba3f342e Fix incorrect save path when torrent is added from watched folder
PR #23656.
Closes #23302.
2025-12-27 09:04:06 +03:00
Chocobo1
ae7cc7445b Enable strict type checking for Pyright
Doc: https://github.com/microsoft/pyright/blob/main/docs/configuration.md#type-check-diagnostics-settings

PR #23634.
2025-12-22 12:14:38 +08:00
Chocobo1
e79be5853e Enforce Python to run in UTF-8 mode
When running Python via QProcess on Windows, the output code page will be set to the system default instead of UTF-8.
This commit enforces that UTF-8 will be used unconditionally.

Supersedes #23629.
PR #23633.
2025-12-22 12:00:27 +08:00
Chocobo1
b718cc52fa GHA CI: separate Boost version for different libtorrent branches
PR #23631.
2025-12-22 11:20:33 +08:00
Vladimir Golovnev
57c99b54c8 Move torrents to parent category when category is removed
PR #23620.
2025-12-21 19:49:29 +03:00
Vladimir Golovnev
25224f6050 Remove indentation if no subcategory exists
PR #23619.
2025-12-21 19:49:02 +03:00
Vladimir Golovnev
b5d16dfeee Allow to set torrent share limits per category
PR #23577.
2025-12-21 19:48:31 +03:00
Tom Piccirello
1c231ce014 WebUI: keep preferences window open after unsuccessful save
This gives the user another opportunity to save their changes.

PR #23549.
2025-12-20 17:21:26 +08:00
Vladimir Golovnev
93470f2080 Use subcategories unconditionally
PR #23585.
2025-12-16 21:56:15 +03:00
Andrei Stepanov
260563d340 NSIS: Update Russian translation
PR #23602.
2025-12-15 16:40:17 +08:00
Burak Yavuz
b792ecede5 NSIS: Update Turkish translation
PR #23434.
2025-12-15 16:34:24 +08:00
John Veness
19ebf67c74 Use consistent text for "Do not download" priority
To match priority setting in menu.

PR #23593.
2025-12-15 16:28:19 +08:00
xavier2k6
56cd98e06e GHA CI: Bump Boost dependency in coverity-scan workflow
* Bumped Boost to `1.90.0`
https://www.boost.org/releases/1.90.0/

PR #23591.
2025-12-15 16:21:34 +08:00
Mark Yu
c25bd6aaea GHA CI: Include all image format plugins in Windows installer
Add support for WebP in the RSS viewer

Closes #23169.
Closes #23573.
PR #23590.
2025-12-15 16:14:49 +08:00
tehcneko
26e42abf32 WebUI: Clean up duplicated codes in dynamic table
Call class super methods.

PR #23576.
2025-12-15 16:07:35 +08:00
Chocobo1
5abf458e69 Calculate torrent pieces asynchronously
So the GUI won't hang when the calculation took a long time.
Note that it is not possible to cancel the calculation so it will always run until finish in the background.

Supersedes #23497.
PR #23584.
2025-12-13 14:22:20 +08:00
dependabot[bot]
7451552e6a GHA CI: Bump actions version
PR #23566.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 14:13:34 +08:00
Vladimir Golovnev
96161627d6 Fix invalid index
PR #23586.
2025-12-10 16:26:39 +03:00
xavier2k6
0f80d3a74a GHA CI: Bump Qt version
* Bump `Qt` version to `6.10.1` for (Windows, macOS, coverity-scan)

PR #23563.
2025-12-07 18:45:10 +08:00
sledgehammer999
73c15e1f00 Revert "NSIS: Create a mutex to ensure only one installer is running" (#23540)
This reverts commit 530c7d1bbd.
The installer uses the `UAC` plugin which creates two instances of the
installer when launched. One runs with admin privileges while the other
with user privileges. Creating a mutex in the first instance stops the
other one from continuing.

PR #23540
2025-12-06 11:08:30 +02:00
Vladimir Golovnev
a59238f4ea Correctly detect whether option is actually changed
PR #23574.
2025-12-06 11:02:31 +03:00
Vladimir Golovnev
d918c43aba Fix Trackerless row is removed when it becomes zero
PR #23571.
2025-12-06 11:01:50 +03:00
Vladimir Golovnev
c45dfb6662 Implement separate (advanced) "Tracker status" filter
PR #23452.
2025-12-03 10:09:35 +03:00
Chocobo1
f68bc3fef9 Raise 'torrent share ratio' maximum limit
The default from Qt was `99.99` which could be too small for some.
The new limit is `INT_MAX` (not `DOUBLE_MAX`) as to hide the rounding/approximation errors from the user.

PR #23559.
2025-11-30 21:00:16 +08:00
Chocobo1
ed9a8687ad NSIS: set appropriate error code on error
PR #23557.
2025-11-30 19:51:17 +08:00
Chocobo1
6a4b1b9727 GHA CI: enable ccache by default on forked repository
This change only affects forked repository.
Previously ccache was only enabled on `master` branch regardless of the owner of the repository.
This is not ideal for forked repository where the owner (mostly) wants to run the GHA CI to
create binary for their own use and ccache couldn't be utilized. This change will enable
ccache by default for all non-official repositories.

PR #23558.
2025-11-30 19:37:26 +08:00
Vasiliy Kostin
f2f4676824 Add reboot option when downloads complete
This commit implements a new "Reboot System" option that allows users to automatically reboot the computer when all downloads are complete, similar to the existing shutdown, suspend, and hibernate options.

Closes #10774.
PR #23525.
2025-11-30 19:16:48 +08:00
Mark Yu
8b9064a33c WebUI: Do not hide context menu if the click target has submenu
Add check if the click event occurs in the menu item and if the menu item has a submenu, do not close the context menu.

Closes #23532.
PR #23534.
2025-11-30 19:15:23 +08:00
tehcneko
296c90d688 WebUI: Fix row selection by Shift key with virtual list enabled
Fixes #23336.
PR #23543.
2025-11-30 19:14:30 +08:00
tehcneko
564afc975f WebUI: Fix row collapsing with virtual list enabled
Fixes https://github.com/qbittorrent/qBittorrent/issues/23241#issuecomment-3295352816.
PR #23542.
2025-11-30 19:13:10 +08:00
Vladimir Golovnev
a77b17e6da Allow to configure style and color scheme on all platforms
PR #23522.
2025-11-24 09:04:28 +03:00
Hanabishi
4a3922d152 Make the active torrents filter reflect actual transfers
PR #23431.
Closes #23121.
2025-11-24 09:03:20 +03:00
Chocobo1
1b96a48266 GHA CI: test built binary
This would ensure the built binary is able to start up and rule out compiler or library linking
issues.

PR #23529.
2025-11-24 02:51:46 +08:00
Chocobo1
1f6e7519a0 Raise connection max limits
And remove a few redundant properties as they are the same as the default value (or they have the same effect as using the default value).

Closes #23465.
PR #23528.
2025-11-24 02:38:21 +08:00
sledgehammer999
46cc3a358e Temporarily lower Qt version deprecation
Static builds of Qt fail when deprecating up to 6.6
[QTBUG-141994](https://bugreports.qt.io/browse/QTBUG-141994)

PR #23499
2025-11-16 13:24:48 +02:00
Orgad Shaneh
9c654b8a73 Fix link on mingw cross-compilation
Library names are all lower-case.

PR #23472.
2025-11-14 21:41:32 +08:00
Chocobo1
e036781b36 NSIS: use proper data type when invoking dll functions
Also migrate away from unsupported function `SHGetSpecialFolderPath()` to `SHGetKnownFolderPath()`.

Ref:
https://nsis.sourceforge.io/Docs/System/System.html#callfuncs
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath

PR #23471.
2025-11-14 21:35:00 +08:00
Orgad Shaneh
ffbd01eb81 Fix MinGW compiler warnings
Cross-compiling with mxe on linux.

PR #23470.
2025-11-14 21:26:35 +08:00
namoen0301
530c7d1bbd NSIS: Create a mutex to ensure only one installer is running
PR #23450.
2025-11-14 21:20:02 +08:00
namoen0301
fec4e01aeb NSIS: add ManifestDPIAwareness function
* This PR added an undocumented function `ManifestDPIAwareness` and enable `PerMonitorV2` support (requires Win10 1703+)
  691211035c/Docs/src/attributes.but (L290-L292)
* Remove `XPStyle` because this function do nothing on NSIS 3.x

PR #23426.
2025-11-14 21:09:12 +08:00
Chocobo1
4541044c42 GHA CI: ensure AppRun hook folder exists
Upstream made some changes and it won't create the AppRun hook folder
anymore, so we create it ourselves.
Upstream PR: https://github.com/linuxdeploy/linuxdeploy-plugin-qt/pull/206

PR #23474.
2025-11-11 15:02:54 +08:00
sledgehammer999
b819b9b7a6 Sync translations from Transifex and run lupdate 2025-11-08 00:29:09 +02:00
dependabot[bot]
6b3519f4eb GHA CI: Bump Github Actions versions
PR #23444.
2025-11-03 13:35:20 +08:00
Chocobo1
33e7cff3b0 Update expected-lite to v0.9.0
* Update expected-lite to v0.9.0
  https://github.com/nonstd-lite/expected-lite/releases/tag/v0.9.0
* Add error messages for various RSS processing error
* Preserve CRLF endings for expected-lite
  So that we can verify the hash matches upstream easily.

PR #23440.
Closes #22950.
2025-11-03 13:03:41 +08:00
Halbast
516f2ef6ec NSIS: Update Kurdish translation
PR #22801.
2025-11-03 12:53:30 +08:00
Vladimir Golovnev
85f1c774f6 Improve search results filtering implementation
PR #23430.
Closes #23396.
2025-11-02 14:47:39 +03:00
Vladimir Golovnev
1be4e646e1 WebAPI: Use native separators for path autofill suggestions
PR #23439.
Closes #23432.
2025-11-02 14:43:57 +03:00
Chocobo1
ee62dd3cda Do not allow orphan processes
If a process is an orphan (without a parent) then the process won't exit when qbt exits and
the process will be still running. This is unwanted behavior.

PR #23422.
2025-10-31 14:19:52 +08:00
Vladimir Golovnev
bc22e8929c Fix incorrect initial state of checkbox
PR #23428.
2025-10-28 17:08:25 +03:00
dyseg
e5026e4b19 WebUI: fix opening "Add torrent" window with double click on RSS feed item
Restores the ability to open the "Add torrent" dialogue, when double clicking on an RSS feed item.
Broke in: 02892d1250 as part of #21645.

PR #23413.
2025-10-26 22:12:36 +08:00
Ramon López i Cros
f7fbd61db0 NSIS: Add Catalan translation
All strings have been translated by a native Catalan speaker.

PR #23346.
2025-10-26 21:55:17 +08:00
Chocobo1
0c17d91d63 Use Permanent Cookie
Previously, WebUI was using a HTTP Session Cookie. This type of cookie is tend to be dropped by
the browser on mobile platforms and gives a bad experience on the WebUI. Now the cookie is a
permanent one and is guaranteed to be persisted between browser restarts.

Closes #20993.
PR #23392.
2025-10-25 03:37:46 +08:00
Marcus Järrud
60feb3cce2 WebUI: Redesign login form
Make the Web UI login more mobile friendly.
The main action is moving to a column layout for the logo and form. This way it's easier for mobile to view the page but it doesn't affect the desktop experience much.

Secondary it set the input font size to be default text size, this in turn makes it so the mobile ui doesn't zoom in when you focus the inputs. [You can read more about it here](https://wsform.com/knowledgebase/why-forms-zoom-on-some-mobile-devices-and-browsers-and-how-to-control-it/).

PR #23360.
2025-10-25 00:23:18 +08:00
Tom Piccirello
a8e9e800b3 Support deleting API key
PR #23388.
2025-10-22 11:05:51 +03:00
Chocobo1
9ce5463d9d Avoid container detachments
PR #23393.
2025-10-20 17:20:42 +08:00
Vaida
5f9918cad4 Improve icons for macOS
macOS 26 uses new design for app icons, with a different corner radius for app icons, making the previous icon unfit for the new version. Hence I created a new icon with the project folder attached (AppIcon.icon).

I also updated the document icon to give it a more modern style. And an icon for temp files (!qB files), and I have edited the info.plist accordingly.

PR #23365.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-10-20 16:56:47 +08:00
namoen0301
df2998c7a9 NSIS: add support for Windows ARM64 build
Qt >=6.8 can native compile on Windows ARM64 machine, and GitHub also provides windows-11-arm runner. so I think It's time to add support.

I've tested from my branch and Snapdragon 8cx gen3 computer. all ci build passed.

Closes #11465
PR #23328.
2025-10-20 16:43:44 +08:00
Andrew Johnson
d67163269b Improve tab key focus in hidable tab bar widget
PR #23379.
2025-10-19 10:08:28 +03:00
Tom Piccirello
312e914adb WebAPI: Add support for authenticating via API key
PR #23212.
Closes #13201.
2025-10-16 14:50:59 +03:00
Andrew Johnson
bb97817f35 Fix screen reader accessibility in torrent list
PR #23359.
Closes #20393.
2025-10-15 11:10:53 +03:00
Vladimir Golovnev
d41012a285 Fix "Save as .torrent file" button is visible before metadata retrieved
PR #23375.
2025-10-14 13:02:53 +03:00
Vladimir Golovnev
fb71c814ca Don't change the processing order of alerts of different types
PR #23373.
Closes #23319.
2025-10-14 13:00:48 +03:00
Chocobo1
62b5619bc1 Migrate away from deprecated Qt methods
PR #23370.
Closes #23354.
2025-10-13 06:57:58 +08:00
xavier2k6
518fd7cc1b Use appropriate icon for "error" status in search tab
PR #23351.
2025-10-10 16:17:15 +03:00
Vladimir Golovnev
9a68a03f53 Make the Smart filter to reject articles with an unrecognized episode number
PR #23340.
Closes #23313.
2025-10-08 12:51:21 +03:00
tehcneko
d5c173be16 WebUI: Fix path input layout in torrent creator
PR #23345.
2025-10-07 02:35:47 +08:00
Chocobo1
e78b392c7b Avoid spawning another temporary event loop
And redirect stderr messages to console.

PR #23344.
2025-10-07 02:27:19 +08:00
Chocobo1
34ad55bb29 Avoid duplicate lookup
In C++20 `std::views::transform()` followed by `std::views::filter()` has a nasty effect of
invoking transformation function twice.
Note that there will be a `std::views::cache_latest()` in C++26 to
address this issue.

Ref:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2760r1.html#cache_last
https://stackoverflow.com/questions/64199664/why-c-ranges-transform-filter-calls-transform-twice-for-values-that-match

PR #23343.
2025-10-07 02:12:27 +08:00
Chocobo1
d5d690cace Utilize algorithms from std::ranges
The result is shorter code and improves readability.
Note that `asConst()` is still required for non-const containers, otherwise the container will
detach.

PR #23342.
2025-10-07 01:56:08 +08:00
dependabot[bot]
4181a10542 GHA CI: Bump Github Actions versions
PR #23332.

---

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-05 18:30:51 +08:00
Samuel Lachance
ee881d4889 Allow to filter RSS by simple string
Adds a search bar for RSS items. It supports plain text search (no regex), applies only to the selected tab, updates results as you type, and shows all items when the field is empty.

PR #23278.
Resolves #14719, resolves #15538, resolves #18444, resolves #18183, resolves #22570.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-10-04 08:12:26 +08:00
Chocobo1
eed0e56d1a Use proper return type
`count()`, `length()`, `size()`, `indexOf()` and `lastIndexOf()` were
returning `int` in Qt5. In Qt6 they return `qsizetype`.

PR #23317.
2025-09-29 03:08:02 +08:00
Chocobo1
01ac8c012c Improve parsing HTTP request line
Now the parsing is done with Views and the conversion to `QString` is
only done in the last step.

PR #23316.
2025-09-29 02:56:09 +08:00
cocopaw
2d6d9ab792 Add Torrent Creator toolbar button
PR #23305.
Closes #21489.
2025-09-29 02:36:30 +08:00
Tom Piccirello
4fb54d3da0 WebUI: fix adding torrent when using virtual tables
When using virtual tables we can't rely on fetching the values from the DOM. We should always fetch values directly from the file tree.

PR #23263.
Closes #23241.
2025-09-29 02:19:07 +08:00
Vladimir Golovnev
84224c1bbf Don't fail because of existing files when exporting torrent files
PR #23315.
Closes #23017.
2025-09-28 21:08:00 +03:00
nn
42786b2afc Restore default drag behavior in Torrent Content widget
Multi-selection for default LMB action, as before 5.1 update.
Adds option to select grab as the default behavior, for users who don't have the Alt key available.
Holding the Alt key toggles between grab/multi-selection.

PR #23180.
Closes #22686.
2025-09-29 01:58:46 +08:00
Vladimir Golovnev
222d265eec Log a critical error before aborting the app
PR #23303.
2025-09-27 20:22:38 +03:00
Chocobo1
d02b01c733 WebUI: don't send HTTP Referer header to other servers
`same-origin`
> Sends the full URL (stripped of parameters) for same-origin requests. Cross-origin requests will contain no referrer header.

This would be helpful for 3rd party WebUI that were forked from the
official one. The official WebUI is not affect by this change since the
request is blocked by CSP.

PR #23294.
2025-09-27 15:54:49 +08:00
Chocobo1
10b879bdaf Propagate error messages from search engine
This will be useful for development and debugging issues. The messages will be outputted to both console and qbt logger.
Note that having stderr messages does not always mean the operation failed but there might be some (non-fatal) issues.

PR #23293.
Closes #6553. Closes #22381. Closes #23052.
2025-09-27 15:42:51 +08:00
Vladimir Golovnev
3de2a9f486 Don't create lock file in internal data folders
PR #23279.
2025-09-22 20:09:21 +03:00
Tom Piccirello
3b744c3dba WebUI: fix lint errors
PR #23277.
2025-09-22 10:35:21 +08:00
cocopaw
9696c99dbd Block invalid file names when renaming torrent content
Relevant issues: #22426, #21899,#16906,#16834, #16271, #11276, #9085, #11340, #14728, #20412, #20337, #17049, #17752, #17469, #15378, #15227, #14908.
PR #23060.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-09-20 14:42:30 +08:00
Tom Piccirello
753fb80e9b WebAPI: Append port to session cookie name
PR #23228.
Closes #21651.
2025-09-19 08:29:46 +03:00
Chocobo1
c075097acd Allow to run CI checks locally
Now the developer is able to run the checks easily and locally (by
following the instructions in nova3/README.md).

PR #23262.
2025-09-14 22:17:23 +08:00
Chocobo1
b0148ef36c WebUI: enforce coding style
* WebUI: prefer `classList.toggle()` over other pattern
  Addresses: https://github.com/qbittorrent/qBittorrent/pull/23231#discussion_r2328647152
* WebUI: prefer using built-in objects Constructor
* WebUI: combine function calls

PR #23261.
2025-09-14 22:11:23 +08:00
Mark Yu
5edaf2cf10 Use class instead of struct
PR #23255.
2025-09-14 17:18:44 +08:00
Mark Yu
fcaa95101d Allow equals character in the command line value
The CLI options should allow the `=` (equals) char as value so doing `--save-path="/home/test/mydir = somedir"` should parse properly with the `value` method returning `"/home/test/mydir = somedir"`.

Closes #23248.
PR #23251.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-09-14 16:54:14 +08:00
Mark Yu
8e14541236 Allow to copy content paths of selected torrents
Closes #23227.
PR #23239.

---------

Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2025-09-14 16:42:59 +08:00
xavier2k6
919520b4c3 GHA CI: Install NSIS via third party action on Windows
* Install `NSIS` via https://github.com/repolevedavaj/install-nsis
* `NSIS` is no longer installed on GitHub provided Runner Image as of `windows-2025`
* `NSIS: 3.10` was only available on `windows-2019 / windows-2022`
* We can use newer release now eg. `NSIS: 3.11`.

PR #23249.
2025-09-14 16:33:24 +08:00
Thomas (Tom) Piccirello
df9e2bb155 Run all WebUI CI checks regardless of failure
This fixes an annoyance I've hit with the WebUI CI checks. If the linter fails, the GH Action immediately exits before the formatter has run. This can mean fixing the lint error and pushing up a change, only for the GH Action to then fail due to the formatter check.
This PR makes it so that all checks always run, with the job still failing if any of the checks failed. It should allow for a quicker feedback loop. For an example, see #23199
GitHub Action docs: https://docs.github.com/en/actions/reference/workflows-and-actions/contexts#steps-context

PR #23198.
2025-09-13 01:53:10 +08:00
Thomas (Tom) Piccirello
7ddbf58a3b WebAPI: Respond with more detailed info
* WebAPI: return error message when endpoint not found
* WebAPI: send appropriate status code when logging in
* WebAPI: return more info when adding torrents

PR #23202.
Closes #375.
Closes #10688.
Closes #10747.
Closes #11464.
2025-09-12 17:53:48 +03:00
Thomas (Tom) Piccirello
69b2d7a53e WebAPI: Support persisting WebUI client preferences
This provides a mechanism for persisting WebUI client preferences that are distinct from the broader qBittorrent preferences. These preferences apply exclusively to the WebUI.

PR #23088.
2025-09-12 17:47:32 +03:00
Chocobo1
94ef038f3a Improve abstraction of search plugin
To make intentions clear and avoid misuse.
Now it should be possible to inherit `Engine` class and create an usable subclass from it.

PR #23232.
2025-09-07 17:50:39 +08:00
Chocobo1
5c0010ac6c WebUI: prefer for loop over Array.forEach method
These were missed in 6ac0c5a8b8.
Also refactor the code a bit.

PR #23231.
2025-09-07 16:16:31 +08:00
Chocobo1
0a9316382a WebUI: fix invalid method
The FileList type has no `entries()` method. Use the generic function from `Array` instead.
Addresses https://github.com/qbittorrent/qBittorrent/pull/23182#discussion_r2319408410

Closes #23224.
2025-09-07 16:14:40 +08:00
dependabot[bot]
463ac253fd GHA CI: Bump actions version
PR #23208.

---
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 16:11:02 +08:00
Thomas (Tom) Piccirello
4ad93bafb2 Update Piccirello's copyright email
PR #23197.
2025-09-07 16:10:07 +08:00
Thomas (Tom) Piccirello
f651a311a4 WebUI: Fix add torrent spinner in Firefox
Firefox seems to have an issue where svgs loaded via background-url are not animated. Loading the svg directly as an img fixes this.

Related: #23074.
PR #23195.
2025-09-07 16:02:32 +08:00
Userdocs
3146a3c2f9 Fix compilation in C++23 mode
This adds c++23 support. In my testing it works for nox and desktop.

PR #23193.
2025-09-07 15:49:50 +08:00
Thomas (Tom) Piccirello
93a72673d4 WebAPI: send names of missing required params
Small quality of life improvement.

PR #23192.
2025-09-05 20:46:47 +08:00
anikey
56277d5e2b WebUI: add I2P peers to peer list
The WebUI part of the changes for #23061. Now qBittorrent will display I2P peers in WebUI peers tab.
Fixes the second part of #19794 ("i2p peer list does not show in GUI").

PR #23185.
2025-09-05 20:40:25 +08:00
Thomas (Tom) Piccirello
ac31fe52e9 WebUI: Continue polling after network error
These `fetch` calls properly handle 4xx and 5xx errors, but don't handle network errors. In all cases, I've used the same logic as the `!response.ok` branch of each individual fetch function. This should ensure consistent behavior.

PR #23164.
2025-09-05 20:32:43 +08:00
Thomas (Tom) Piccirello
4fa433a728 WebUI/WebAPI: Support downloading torrent via search plugin
This adds support for downloading a torrent via a search plugin's `download_torrent` function. This primarily affects torrents that use a private tracker requiring a login.

Closes #18334.
PR #23163.
2025-09-05 20:24:15 +08:00
Chocobo1
becfd19e34 Enable full type checking on search engine
Now it utilize type stub for PySocks library and all search engine python code are properly
type checked.

Note that a `cast` is required because there isn't enough hints in PySocks to let the type
checker understand that the classes are supposed to be compatible.

PR #23183.
2025-08-31 22:10:30 +08:00
Chocobo1
dffd27a879 WebUI: prefer range based for loop
Using `entries()` can also save the work of manually handling the index variable.

PR #23182.
2025-08-31 21:54:48 +08:00
Chocobo1
b851caa6b9 WebUI: use local preference class locally 2025-08-31 21:45:48 +08:00
Chocobo1
07f2afc4ac WebUI: move variable into proper scope 2025-08-31 21:45:48 +08:00
403 changed files with 133523 additions and 83830 deletions

3
.gitattributes vendored
View File

@@ -8,3 +8,6 @@ core.eol=lf
dist/windows/license.txt text eol=crlf
test/testdata/crlf.txt text eol=crlf
# disable line endings conversions
src/base/3rdparty/expected.hpp -text

View File

@@ -16,12 +16,12 @@ jobs:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "*"
@@ -31,12 +31,13 @@ jobs:
- name: Check doc
env:
pandoc_path: "${{ github.workspace }}/../pandoc"
pandoc_version: "3.8.3"
run: |
# install pandoc
curl \
-L \
-o "${{ runner.temp }}/pandoc.tar.gz" \
"https://github.com/jgm/pandoc/releases/download/3.7.0.2/pandoc-3.7.0.2-linux-amd64.tar.gz"
"https://github.com/jgm/pandoc/releases/download/${{ env.pandoc_version }}/pandoc-${{ env.pandoc_version }}-linux-amd64.tar.gz"
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
# run pandoc
@@ -65,7 +66,7 @@ jobs:
> "${{ runner.temp }}/zizmor_results.sarif"
- name: Upload zizmor results
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@v4
with:
category: zizmor
sarif_file: "${{ runner.temp }}/zizmor_results.sarif"

View File

@@ -18,9 +18,17 @@ jobs:
strategy:
fail-fast: false
matrix:
libt_version: ["2.0.11", "1.2.20"]
libtorrent:
- version: "2.0.11"
boost_major_version: "1"
boost_minor_version: "90"
boost_patch_version: "0"
- version: "1.2.20"
boost_major_version: "1"
boost_minor_version: "86"
boost_patch_version: "0"
qbt_gui: ["GUI=ON", "GUI=OFF"]
qt_version: ["6.9.1"]
qt_version: ["6.10.1"]
env:
boost_path: "${{ github.workspace }}/../boost"
@@ -28,7 +36,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
@@ -49,19 +57,15 @@ jobs:
- name: Setup ccache
uses: Chocobo1/setup-ccache-action@v1
with:
store_cache: ${{ github.ref == 'refs/heads/master' }}
store_cache: ${{ (github.repository != 'qbittorrent/qBittorrent') || (github.ref == 'refs/heads/master') }}
update_packager_index: false
ccache_options: |
max_size=1G
- name: Install boost
env:
BOOST_MAJOR_VERSION: "1"
BOOST_MINOR_VERSION: "86"
BOOST_PATCH_VERSION: "0"
run: |
boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url="https://archives.boost.io/release/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/source/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
set +e
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
@@ -79,13 +83,14 @@ jobs:
with:
version: ${{ matrix.qt_version }}
archives: qtbase qtdeclarative qtsvg qttools
modules: qtimageformats
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
cache: true
- name: Install libtorrent
run: |
git clone \
--branch v${{ matrix.libt_version }} \
--branch v${{ matrix.libtorrent.version }} \
--depth 1 \
--recurse-submodules \
https://github.com/arvidn/libtorrent.git \
@@ -119,6 +124,11 @@ jobs:
cmake --build build --target qbt_update_translations
cmake --build build
cmake --build build --target check
if [ "${{ matrix.qbt_gui }}" = "GUI=ON" ]; then
build/qbittorrent.app/Contents/MacOS/qbittorrent -v
else
build/qbittorrent-nox.app/Contents/MacOS/qbittorrent-nox -v
fi
- name: Prepare build artifacts
run: |
@@ -156,7 +166,7 @@ jobs:
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
- name: Upload build artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libtorrent.version }}_Qt-${{ matrix.qt_version }}
path: upload

View File

@@ -15,12 +15,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup python (auxiliary scripts)
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3' # use default version
@@ -54,46 +54,30 @@ jobs:
python -m compileall $PY_FILES
- name: Setup python (search engine)
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.9'
- name: Install tools (search engine)
run: pip install bandit isort mypy pycodestyle pyflakes pyright
- name: Gather files (search engine)
working-directory: src/searchengine/nova3
run: |
export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')"
echo $PY_FILES
echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV"
pip install uv
uv sync
- name: Check typings (search engine)
run: |
MYPYPATH="src/searchengine/nova3" \
mypy \
--follow-imports skip \
--strict \
$PY_FILES
pyright \
$PY_FILES
working-directory: src/searchengine/nova3
run: uv run just check
- name: Lint code (search engine)
run: |
pyflakes $PY_FILES
bandit --skip B110,B310,B314,B405 $PY_FILES
working-directory: src/searchengine/nova3
run: uv run just lint
- name: Format code (search engine)
working-directory: src/searchengine/nova3
run: |
pycodestyle \
--ignore=E265,E402 \
--max-line-length=1000 \
--statistics \
$PY_FILES
isort \
--check \
--diff \
$PY_FILES
uv run just format
git diff --exit-code
- name: Build code (search engine)
run: |
python -m compileall $PY_FILES
working-directory: src/searchengine/nova3
run: uv run just build

View File

@@ -19,7 +19,15 @@ jobs:
strategy:
fail-fast: false
matrix:
libt_version: ["2.0.11", "1.2.20"]
libtorrent:
- version: "2.0.11"
boost_major_version: "1"
boost_minor_version: "77"
boost_patch_version: "0"
- version: "1.2.20"
boost_major_version: "1"
boost_minor_version: "77"
boost_patch_version: "0"
qbt_gui: ["GUI=ON", "GUI=OFF"]
qt_version: ["6.6.3"]
@@ -30,7 +38,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
@@ -39,24 +47,20 @@ jobs:
sudo apt update
sudo apt install \
build-essential cmake ninja-build \
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
libssl-dev zlib1g-dev
- name: Setup ccache
uses: Chocobo1/setup-ccache-action@v1
with:
store_cache: ${{ github.ref == 'refs/heads/master' }}
store_cache: ${{ (github.repository != 'qbittorrent/qBittorrent') || (github.ref == 'refs/heads/master') }}
update_packager_index: false
ccache_options: |
max_size=1G
- name: Install boost
env:
BOOST_MAJOR_VERSION: "1"
BOOST_MINOR_VERSION: "77"
BOOST_PATCH_VERSION: "0"
run: |
boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url="https://archives.boost.io/release/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/source/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
set +e
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
@@ -74,12 +78,13 @@ jobs:
with:
version: ${{ matrix.qt_version }}
archives: icu qtbase qtdeclarative qtsvg qttools
modules: qtimageformats
cache: true
- name: Install libtorrent
run: |
git clone \
--branch v${{ matrix.libt_version }} \
--branch v${{ matrix.libtorrent.version }} \
--depth 1 \
--recurse-submodules \
https://github.com/arvidn/libtorrent.git \
@@ -100,8 +105,8 @@ jobs:
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
uses: github/codeql-action/init@v4
if: startsWith(matrix.libtorrent.version, 2) && (matrix.qbt_gui == 'GUI=ON')
with:
config-file: ./.github/workflows/helper/codeql/cpp.yaml
languages: cpp
@@ -123,11 +128,16 @@ jobs:
cmake --build build --target qbt_update_translations
cmake --build build
cmake --build build --target check
if [ "${{ matrix.qbt_gui }}" = "GUI=ON" ]; then
QT_QPA_PLATFORM=offscreen build/qbittorrent -v
else
build/qbittorrent-nox -v
fi
DESTDIR="qbittorrent" cmake --install build
- name: Run CodeQL analysis
uses: github/codeql-action/analyze@v3
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
uses: github/codeql-action/analyze@v4
if: startsWith(matrix.libtorrent.version, 2) && (matrix.qbt_gui == 'GUI=ON')
with:
category: ${{ github.base_ref || github.ref_name }}
@@ -164,14 +174,15 @@ jobs:
run: |
rm -f "${{ runner.workspace }}/Qt/${{ matrix.qt_version }}/gcc_64/plugins/sqldrivers/libqsqlmimer.so"
./linuxdeploy-x86_64.AppImage --appdir qbittorrent --plugin qt
rm qbittorrent/apprun-hooks/*
mkdir -p qbittorrent/apprun-hooks
rm -f qbittorrent/apprun-hooks/*
cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh
NO_APPSTREAM=1 \
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
./linuxdeploy-x86_64.AppImage --appdir qbittorrent --output appimage
- name: Upload build artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libtorrent.version }}_Qt-${{ matrix.qt_version }}
path: upload

View File

@@ -21,12 +21,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup nodejs
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 'lts/*'
@@ -42,18 +42,22 @@ jobs:
run: npm test
- name: Lint code
if: ${{ !cancelled() }}
run: npm run lint
- name: Format code
if: ${{ !cancelled() }}
run: |
npm run format
git diff --exit-code
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
if: ${{ !cancelled() }}
with:
config-file: .github/workflows/helper/codeql/js.yaml
languages: javascript
- name: Run CodeQL analysis
uses: github/codeql-action/analyze@v3
if: ${{ !cancelled() }}
uses: github/codeql-action/analyze@v4

View File

@@ -10,15 +10,27 @@ concurrency:
jobs:
ci:
name: Build
runs-on: windows-latest
name: Build (${{ matrix.libtorrent.version }}, ${{ matrix.config.arch }})
runs-on: ${{ matrix.config.os }}
permissions:
actions: write
strategy:
fail-fast: false
matrix:
libt_version: ["2.0.11", "1.2.20"]
libtorrent:
- version: "2.0.11"
boost_major_version: "1"
boost_minor_version: "90"
boost_patch_version: "0"
- version: "1.2.20"
boost_major_version: "1"
boost_minor_version: "86"
boost_patch_version: "0"
config:
- os: windows-latest
arch: x64
qt_arch: win64_msvc2022_64
env:
boost_path: "${{ github.workspace }}/../boost"
@@ -27,12 +39,14 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup devcmd
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.config.arch }}
- name: Install build tools
run: |
@@ -45,7 +59,7 @@ jobs:
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
- name: Set variables for vcpkg
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
@@ -57,19 +71,19 @@ jobs:
New-Item `
-Force `
-ItemType File `
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
-Path "${{ env.vcpkg_path }}/triplets_overlay/${{ matrix.config.arch }}-windows-static-md-release.cmake"
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
Add-Content `
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
-Path "${{ env.vcpkg_path }}/triplets_overlay/${{ matrix.config.arch }}-windows-static-md-release.cmake" `
-Value @("set(VCPKG_TARGET_ARCHITECTURE ${{ matrix.config.arch }})",
"set(VCPKG_LIBRARY_LINKAGE static)",
"set(VCPKG_CRT_LINKAGE dynamic)",
"set(VCPKG_BUILD_TYPE release)")
# clear buildtrees after each package installation to reduce disk space requirements
$packages = `
"boost-build:x64-windows-static-md-release",
"openssl:x64-windows-static-md-release",
"zlib:x64-windows-static-md-release"
"boost-build:${{ matrix.config.arch }}-windows-static-md-release",
"openssl:${{ matrix.config.arch }}-windows-static-md-release",
"zlib:${{ matrix.config.arch }}-windows-static-md-release"
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
--no-dry-run `
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
@@ -80,13 +94,9 @@ jobs:
$packages
- name: Install boost
env:
BOOST_MAJOR_VERSION: "1"
BOOST_MINOR_VERSION: "86"
BOOST_PATCH_VERSION: "0"
run: |
$boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
$boost_url="https://archives.boost.io/release/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/source/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
if ($LastExitCode -ne 0)
@@ -97,7 +107,7 @@ jobs:
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
cd "${{ env.boost_path }}"
#.\bootstrap.bat
${{ env.vcpkg_path }}/installed/x64-windows-static-md-release/tools/boost-build/b2.exe `
${{ env.vcpkg_path }}/installed/${{ matrix.config.arch }}-windows-static-md-release/tools/boost-build/b2.exe `
stage `
toolset=msvc `
--stagedir=.\ `
@@ -106,15 +116,16 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: "6.9.1"
arch: win64_msvc2022_64
version: "6.10.1"
arch: ${{ matrix.config.qt_arch }}
archives: qtbase qtsvg qttools
modules: qtimageformats
cache: true
- name: Install libtorrent
run: |
git clone `
--branch v${{ matrix.libt_version }} `
--branch v${{ matrix.libtorrent.version }} `
--depth 1 `
--recurse-submodules `
https://github.com/arvidn/libtorrent.git `
@@ -134,7 +145,7 @@ jobs:
-DBUILD_SHARED_LIBS=OFF `
-Ddeprecated-functions=OFF `
-Dstatic_runtime=OFF `
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
-DVCPKG_TARGET_TRIPLET=${{ matrix.config.arch }}-windows-static-md-release
cmake --build build
cmake --install build
@@ -151,7 +162,7 @@ jobs:
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
-DMSVC_RUNTIME_DYNAMIC=ON `
-DTESTING=ON `
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
-DVCPKG_TARGET_TRIPLET=${{ matrix.config.arch }}-windows-static-md-release `
-DVERBOSE_CONFIGURE=ON `
--graphviz=build/target_graph.dot
cmake --build build --target qbt_update_translations
@@ -176,8 +187,16 @@ jobs:
mkdir upload/qBittorrent/plugins/iconengines
copy "${{ env.Qt_ROOT_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines
mkdir upload/qBittorrent/plugins/imageformats
# include all imageformats dlls since CI (dev) build links dynamically
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qgif.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qicns.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qjpeg.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qtga.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qtiff.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qwbmp.dll" upload/qBittorrent/plugins/imageformats
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qwebp.dll" upload/qBittorrent/plugins/imageformats
mkdir upload/qBittorrent/plugins/platforms
copy "${{ env.Qt_ROOT_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms
mkdir upload/qBittorrent/plugins/sqldrivers
@@ -194,18 +213,23 @@ jobs:
copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
- name: Upload build artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
name: qBittorrent-CI_Windows-${{ matrix.config.arch }}_libtorrent-${{ matrix.libtorrent.version }}
path: upload
- name: Install NSIS
uses: repolevedavaj/install-nsis@a55ed92772254d1e51d880f85ce9b5719f907801 # v1.1.0
with:
nsis-version: '3.11'
- name: Create installer
run: |
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
makensis /DQBT_CPU_ARCH="${{ matrix.config.arch }}" /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
- name: Upload installer
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
name: qBittorrent-CI_Windows-${{ matrix.config.arch }}_libtorrent-${{ matrix.libtorrent.version }}-setup
path: dist/windows/qbittorrent_*_setup.exe

View File

@@ -14,9 +14,13 @@ jobs:
strategy:
matrix:
libt_version: ["2.0.11"]
libtorrent:
- version: "2.0.11"
boost_major_version: "1"
boost_minor_version: "90"
boost_patch_version: "0"
qbt_gui: ["GUI=ON"]
qt_version: ["6.9.1"]
qt_version: ["6.10.1"]
env:
boost_path: "${{ github.workspace }}/../boost"
@@ -25,7 +29,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
persist-credentials: false
@@ -37,13 +41,9 @@ jobs:
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
- name: Install boost
env:
BOOST_MAJOR_VERSION: "1"
BOOST_MINOR_VERSION: "88"
BOOST_PATCH_VERSION: "0"
run: |
boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
boost_url="https://archives.boost.io/release/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/source/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ matrix.libtorrent.boost_major_version }}.${{ matrix.libtorrent.boost_minor_version }}.${{ matrix.libtorrent.boost_patch_version }}/boost_${{ matrix.libtorrent.boost_major_version }}_${{ matrix.libtorrent.boost_minor_version }}_${{ matrix.libtorrent.boost_patch_version }}.tar.gz"
set +e
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
@@ -66,7 +66,7 @@ jobs:
- name: Install libtorrent
run: |
git clone \
--branch v${{ matrix.libt_version }} \
--branch v${{ matrix.libtorrent.version }} \
--depth 1 \
--recurse-submodules \
https://github.com/arvidn/libtorrent.git \

View File

@@ -13,7 +13,7 @@ jobs:
pull-requests: write
steps:
- name: Mark and close stale PRs
uses: actions/stale@v9
uses: actions/stale@v10
with:
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."

2
.gitignore vendored
View File

@@ -1,4 +1,5 @@
.vscode/
src/gui/geoip/GeoIP.dat
src/gui/geoip/GeoIP.dat.gz
src/qbittorrent
@@ -10,7 +11,6 @@ CMakeLists.txt.user*
qbittorrent.pro.user*
conf.pri
Makefile*
*.pyc
*.log
# Compiled object files

View File

@@ -39,6 +39,7 @@ repos:
args: ["--fix=lf"]
exclude: |
(?x)^(
src/base/3rdparty/expected.hpp |
src/webui/www/private/css/lib/.* |
src/webui/www/private/scripts/lib/.* |
dist/windows/license.txt |

View File

@@ -1,5 +1,26 @@
# WebAPI Changelog
## 2.14.1
* [#23212](https://github.com/qbittorrent/qBittorrent/pull/23212)
* Add `app/rotateAPIKey` endpoint for generating, and rotating, the WebAPI API key
* [#23388](https://github.com/qbittorrent/qBittorrent/pull/23388)
* Add `app/deleteAPIKey` endpoint for deleting the existing WebAPI API key
## 2.14.0
* [#23202](https://github.com/qbittorrent/qBittorrent/pull/23202)
* WebAPI responds with the error message "Endpoint does not exist" when the endpoint does not exist, to better differentiate from unrelated Not Found (i.e. 404) responses
* `auth/login` endpoint responds to invalid credentials with a 401
* `torrents/add` endpoint responds with `success_count`, `pending_count`, `failure_count`, and `added_torrent_ids`
* When `pending_count` is non-zero, response code 202 is used
* When all torrents fail to be added, response code 409 is used
## 2.13.1
* [#23163](https://github.com/qbittorrent/qBittorrent/pull/23163)
* `torrents/add` endpoint now supports downloading from a search plugin via the `downloader` parameter
* `torrents/fetchMetadata` endpoint now supports fetching from a search plugin via the `downloader` parameter
* [#23088](https://github.com/qbittorrent/qBittorrent/pull/23088)
* Add `clientdata/load` and `clientdata/store` endpoints for managing WebUI-specific client settings and other shared data
## 2.13.0
* [#23045](https://github.com/qbittorrent/qBittorrent/pull/23045)
* `torrents/trackers` returns three new fields: `next_announce`, `min_announce` and `endpoints`

View File

@@ -20,7 +20,7 @@ target_compile_features(qbt_common_cfg INTERFACE
)
target_compile_definitions(qbt_common_cfg INTERFACE
QT_DISABLE_DEPRECATED_UP_TO=0x060600
QT_DISABLE_DEPRECATED_UP_TO=0x060500
QT_NO_CAST_FROM_ASCII
QT_NO_CAST_TO_ASCII
QT_NO_CAST_FROM_BYTEARRAY

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="971.698" height="960.373" viewBox="0 0 971.698 960.373"><title>e</title><defs><linearGradient id="a" x1="23.194%" x2="68.845%" y1="2.524%" y2="83.377%"><stop offset="0%" stop-color="#72b3f4"/><stop offset="100%" stop-color="#346ebf"/></linearGradient></defs><path fill="url(#a)" fill-rule="nonzero" d="M971.698 299.1c0-11.402 0-22.804-.066-34.206-.058-9.605-.17-19.207-.434-28.807-.57-20.925-1.82-42.028-5.585-62.72-3.818-20.989-10.054-40.524-19.88-59.595a200.5 200.5 0 0 0-37.336-50.768 202.8 202.8 0 0 0-51.386-36.876C837.695 16.414 817.91 10.253 796.65 6.48 775.71 2.765 754.353 1.533 733.182.967c-9.72-.26-19.44-.37-29.164-.429-11.542-.07-23.084-.064-34.627-.064L535.373 0H435.138L303.492.474c-11.565 0-23.13-.005-34.694.064-9.743.06-19.481.17-29.22.43-21.221.565-42.628 1.798-63.615 5.518-21.288 3.772-41.104 9.93-60.446 19.637a203.2 203.2 0 0 0-51.495 36.881c-15.083 14.87-27.725 32.019-37.403 50.76-9.854 19.08-16.101 38.627-19.93 59.628-3.768 20.683-5.017 41.78-5.591 62.695-.262 9.6-.375 19.203-.434 28.807C.594 276.297 0 290.462 0 301.864V530.3l.6 131.036c0 11.417-.006 22.834.064 34.251.059 9.618.172 19.233.435 28.848.573 20.95 1.824 42.084 5.597 62.804 3.826 21.017 10.073 40.58 19.918 59.675 9.68 18.772 22.324 35.947 37.408 50.838a203.3 203.3 0 0 0 51.485 36.928c19.354 9.727 39.18 15.896 60.481 19.673 20.978 3.722 42.377 4.956 63.59 5.521 9.739.26 19.478.37 29.22.43 11.565.068 23.13.068 34.694.068h365.9c11.542 0 23.084 0 34.626-.069 9.723-.058 19.444-.169 29.164-.429 21.18-.566 42.545-1.802 63.491-5.525 21.248-3.778 41.025-9.944 60.33-19.666a202.8 202.8 0 0 0 51.394-36.93 200.8 200.8 0 0 0 37.332-50.83c9.832-19.105 16.068-38.678 19.889-59.709 3.762-20.71 5.01-41.837 5.581-62.78.263-9.615.375-19.23.433-28.847.066-11.417.066-22.834.066-34.251V299.099"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1047.033" height="1035.033" viewBox="0 0 1047.033 1035.033"><title>Icon-Shape</title><path fill="none" fill-rule="evenodd" stroke="#daefff" stroke-width="75.033" d="M1009.517 647.83c0 13.352 0 26.702-.08 40.055-.066 11.246-.197 22.49-.505 33.734-.673 24.5-2.133 49.213-6.542 73.44-4.474 24.58-11.774 47.455-23.284 69.786-11.311 21.95-26.093 42.035-43.725 59.45a237.5 237.5 0 0 1-60.194 43.187c-22.61 11.367-45.771 18.577-70.657 22.996-24.532 4.354-49.553 5.796-74.36 6.461-11.384.305-22.769.434-34.156.499-13.52.079-27.036.079-40.556.079H391.575c-13.52 0-27.036 0-40.556-.08-11.387-.064-22.772-.193-34.156-.498-24.806-.665-49.828-2.107-74.359-6.461-24.886-4.419-48.047-11.629-70.658-22.996a237.5 237.5 0 0 1-60.193-43.187c-17.633-17.415-32.413-37.5-43.726-59.45-11.509-22.331-18.81-45.206-23.283-69.785-4.41-24.228-5.87-48.942-6.542-73.441-.31-11.244-.44-22.488-.506-33.734-.08-13.353-.08-26.703-.08-40.056V387.204c0-13.353 0-26.703.08-40.055.066-11.247.197-22.491.506-33.735.672-24.5 2.132-49.213 6.542-73.44 4.473-24.58 11.774-47.455 23.283-69.786 11.313-21.949 26.093-42.035 43.726-59.45a237.5 237.5 0 0 1 60.193-43.187c22.61-11.366 45.772-18.577 70.658-22.995 24.53-4.355 49.553-5.797 74.36-6.462 11.383-.305 22.768-.434 34.155-.499 13.52-.078 27.036-.078 40.556-.078h263.883c13.52 0 27.037 0 40.556.078 11.387.065 22.772.194 34.156.5 24.807.664 49.828 2.106 74.36 6.461 24.886 4.418 48.047 11.63 70.657 22.995a237.5 237.5 0 0 1 60.194 43.187c17.632 17.415 32.414 37.501 43.725 59.45 11.51 22.331 18.81 45.206 23.284 69.786 4.409 24.227 5.869 48.94 6.542 73.44.308 11.244.44 22.488.505 33.735.08 13.352.08 26.702.08 40.055z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

1
dist/mac/AppIcon.icon/Assets/qb.svg vendored Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="609" height="557" viewBox="0 0 609 557"><title>Untitled</title><defs><path id="a" d="M971.698 299.1c0-11.402 0-22.804-.066-34.206-.058-9.605-.17-19.207-.434-28.807-.57-20.925-1.82-42.028-5.585-62.72-3.818-20.989-10.054-40.524-19.88-59.595a200.5 200.5 0 0 0-37.336-50.768 202.8 202.8 0 0 0-51.386-36.876C837.695 16.414 817.91 10.253 796.65 6.48 775.71 2.765 754.353 1.533 733.182.967c-9.72-.26-19.44-.37-29.164-.429-11.542-.07-23.084-.064-34.627-.064L535.373 0H435.138L303.492.474c-11.565 0-23.13-.005-34.694.064-9.743.06-19.481.17-29.22.43-21.221.565-42.628 1.798-63.615 5.518-21.288 3.772-41.104 9.93-60.446 19.637a203.2 203.2 0 0 0-51.495 36.881c-15.083 14.87-27.725 32.019-37.403 50.76-9.854 19.08-16.101 38.627-19.93 59.628-3.768 20.683-5.017 41.78-5.591 62.695-.262 9.6-.375 19.203-.434 28.807C.594 276.297 0 290.462 0 301.864V530.3l.6 131.036c0 11.417-.006 22.834.064 34.251.059 9.618.172 19.233.435 28.848.573 20.95 1.824 42.084 5.597 62.804 3.826 21.017 10.073 40.58 19.918 59.675 9.68 18.772 22.324 35.947 37.408 50.838a203.3 203.3 0 0 0 51.485 36.928c19.354 9.727 39.18 15.896 60.481 19.673 20.978 3.722 42.377 4.956 63.59 5.521 9.739.26 19.478.37 29.22.43 11.565.068 23.13.068 34.694.068h365.9c11.542 0 23.084 0 34.626-.069 9.723-.058 19.444-.169 29.164-.429 21.18-.566 42.545-1.802 63.491-5.525 21.248-3.778 41.025-9.944 60.33-19.666a202.8 202.8 0 0 0 51.394-36.93 200.8 200.8 0 0 0 37.332-50.83c9.832-19.105 16.068-38.678 19.889-59.709 3.762-20.71 5.01-41.837 5.581-62.78.263-9.615.375-19.23.433-28.847.066-11.417.066-22.834.066-34.251V299.099"/></defs><g fill="none" fill-rule="evenodd" transform="translate(-181.849 -202.014)"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g fill-rule="nonzero" mask="url(#b)"><path fill="#fff" d="M658.72 359.301q-46.71 0-67.317 26.613-20.608 26.343-20.608 89.073 0 62.731 21.157 89.888 21.157 26.884 67.866 26.884 42.04 0 62.648-30.144 20.606-30.414 20.606-87.17 0-58.116-20.606-86.63-20.609-28.514-63.746-28.514m6.594-37.746q59.35 0 92.047 40.19 32.97 39.92 32.97 113.242t-33.246 114.057q-32.97 40.463-91.771 40.462-29.4 0-53.854-10.59-24.18-10.863-40.665-33.131h-3.297l-9.616 38.29h-32.7V201.524h45.613v102.652q0 34.487-2.198 61.916h2.199q31.872-44.538 94.518-44.537"/><path fill="#c8e8ff" d="M306.189 629.506q-58.25 0-90.947-40.461-32.697-40.465-32.697-112.972 0-73.05 32.972-114.056 32.97-41.005 91.772-41.005 61.82 0 95.068 46.164h2.473l6.594-40.734h35.995v431.242h-45.612V630.32q0-27.156 3.023-46.166h-3.572q-31.598 45.352-95.07 45.351m6.87-37.746q45.61 0 66.493-24.17 20.881-24.168 22.255-81.468v-10.049q0-62.458-21.43-89.887-21.432-27.427-67.868-27.428-40.116 0-61.548 30.959-21.157 30.686-21.157 86.9t20.883 85.813q21.156 29.33 62.371 29.33"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

70
dist/mac/AppIcon.icon/icon.json vendored Normal file
View File

@@ -0,0 +1,70 @@
{
"fill" : "automatic",
"groups" : [
{
"blur-material" : null,
"layers" : [
{
"hidden" : false,
"image-name" : "qb.svg",
"name" : "qb"
}
],
"shadow" : {
"kind" : "layer-color",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : true,
"value" : 0.5
}
},
{
"hidden" : false,
"layers" : [
{
"glass" : false,
"image-name" : "border.svg",
"name" : "border",
"position" : {
"scale" : 1.05,
"translation-in-points" : [
0,
0
]
}
},
{
"fill" : "automatic",
"glass" : false,
"image-name" : "background.svg",
"name" : "background",
"position" : {
"scale" : 1.46,
"translation-in-points" : [
0,
0
]
}
}
],
"lighting" : "individual",
"shadow" : {
"kind" : "none",
"opacity" : 0.5
},
"specular" : false,
"translucency" : {
"enabled" : false,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}

44
dist/mac/Info.plist vendored
View File

@@ -32,6 +32,30 @@
<key>LSIsAppleDefaultForType</key>
<true/>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>!qB</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>qBitTorrentIncompleteData</string>
<key>CFBundleTypeName</key>
<string>qBitTorrent Incomplete Data</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>org.qbittorrent.qBittorrent.incompletedata</string>
</array>
<key>NSExportableTypes</key>
<array>
<string>org.qbittorrent.qBittorrent.incompletedata</string>
</array>
<key>LSIsAppleDefaultForType</key>
<true/>
</dict>
</array>
<key>CFBundleURLTypes</key>
<array>
@@ -101,6 +125,26 @@
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.item</string>
</array>
<key>UTTypeDescription</key>
<string>qBitTorrent Incomplete Data</string>
<key>UTTypeIconFile</key>
<string>qBitTorrentIncompleteData</string>
<key>UTTypeIdentifier</key>
<string>org.qbittorrent.qBittorrent.incompletedata</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>!qB</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>

Binary file not shown.

BIN
dist/mac/qBitTorrentIncompleteData.icns vendored Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -161,8 +161,8 @@ Name[ta]=qBittorrent
GenericName[te]=క్యు బిట్ టొరెంట్ క్లయింట్
Comment[te]=క్యు బిట్ టొరెంట్ తో ఫైల్స్ దిగుమతి చేసుకోండి , పంచుకోండి
Name[te]=qBittorrent
GenericName[th]=ไคลเอนต์บิทอร์เรนต์
Comment[th]=ดาวน์โหลดและแชร์ไฟล์ผ่านบิตทอร์เรนต์
GenericName[th]=ไคลเอนต์บิทอร์เรนต์
Comment[th]=ดาวน์โหลดและแบ่งปันไฟล์ผ่านไฟล์บิตทอร์เรนต์
Name[th]=qBittorrent
GenericName[tr]=BitTorrent istemcisi
Comment[tr]=Dosyaları BitTorrent üzerinden indirin ve paylaşın

View File

@@ -35,12 +35,15 @@
;End of user configurable options
;==============================================================================
; QBT_CPU_ARCH (x64 or arm64)
!define /ifndef QBT_CPU_ARCH "x64"
!ifndef QBT_INSTALLER_WINDOWNAME | QBT_INSTALLER_FILENAME
; The name of the installer
!define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} x64"
!define QBT_INSTALLER_WINDOWNAME "${QBT_VERSION} ${QBT_CPU_ARCH}"
; The file to write
!define QBT_INSTALLER_FILENAME "${QBT_VERSION}_x64"
!define QBT_INSTALLER_FILENAME "${QBT_VERSION}_${QBT_CPU_ARCH}"
!endif
!define /ifndef QBT_DIST_DIR "qBittorrent"
@@ -48,6 +51,8 @@
Unicode true
ManifestDPIAware true
; add an undocumented function in NSIS, PMv2 requires Win10 1703+
ManifestDPIAwareness "PerMonitorV2,System"
!ifdef USE_UPX
!packhdr "$%TEMP%\exehead.tmp" 'upx.exe -9 --best --ultra-brute "$%TEMP%\exehead.tmp"'
@@ -56,7 +61,6 @@ ManifestDPIAware true
;Setting the compression
SetCompressor /SOLID LZMA
SetCompressorDictSize 64
XPStyle on
!include "MUI2.nsh"
!include "UAC.nsh"
@@ -70,8 +74,8 @@ XPStyle on
!define SHCNF_IDLIST 0
;For special folder detection
!define CSIDL_APPDATA '0x1A' ;Application Data path
!define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path
!define FOLDERID_RoamingAppData {3EB685DB-65F9-4CF6-A03A-E3EF65729F3D} ; %APPDATA% (%USERPROFILE%\AppData\Roaming)
!define FOLDERID_LocalAppData {F1B32785-6FBA-4FCF-9D55-7B8E7F157091} ; %LOCALAPPDATA% (%USERPROFILE%\AppData\Local)
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
@@ -153,16 +157,20 @@ ${Case} 0
${IfThen} $3 <> 0 ${|} ${Break} ${|} ;we are admin, let the show go on
${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0
SetErrorLevel 1314 # WinError.h: `ERROR_PRIVILEGE_NOT_HELD`
${EndIf}
;fall-through and die
${Case} 1223
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This ${thing} requires admin privileges, aborting!"
SetErrorLevel 1223 # WinError.h: `ERROR_CANCELLED`
Quit
${Case} 1062
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Logon service not running, aborting!"
SetErrorLevel 1062 # WinError.h: `ERROR_SERVICE_NOT_ACTIVE`
Quit
${Default}
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Unable to elevate , error $0"
SetErrorLevel 1603 # WinError.h: `ERROR_INSTALL_FAILURE`
Quit
${EndSwitch}

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_AFRIKAANS} "This installer works only in 6
LangString inst_requires_win10 ${LANG_AFRIKAANS} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_AFRIKAANS} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_AFRIKAANS} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_AFRIKAANS} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -34,6 +34,11 @@ LangString inst_requires_win7 ${LANG_ALBANIAN} "This qBittorrent version require
LangString inst_requires_win10 ${LANG_ALBANIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ALBANIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ALBANIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ALBANIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_ARABIC} "هذا المثبت يعمل فق
LangString inst_requires_win10 ${LANG_ARABIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ARABIC} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ARABIC} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ARABIC} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_BASQUE} "This installer works only in 64-b
LangString inst_requires_win10 ${LANG_BASQUE} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_BASQUE} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_BASQUE} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_BASQUE} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_BELARUSIAN} "This installer works only in
LangString inst_requires_win10 ${LANG_BELARUSIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_BELARUSIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_BELARUSIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_BELARUSIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_BOSNIAN} "This installer works only in 64-
LangString inst_requires_win10 ${LANG_BOSNIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_BOSNIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_BOSNIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_BOSNIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_BRETON} "This installer works only in 64-b
LangString inst_requires_win10 ${LANG_BRETON} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_BRETON} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_BRETON} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_BRETON} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_BULGARIAN} "This installer works only in 6
LangString inst_requires_win10 ${LANG_BULGARIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_BULGARIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_BULGARIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_BULGARIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -1,60 +1,65 @@
;Installer strings
;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)"
LangString inst_qbt_req ${LANG_CATALAN} "qBittorrent (required)"
LangString inst_qbt_req ${LANG_CATALAN} "qBittorrent (requerit)"
;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut"
LangString inst_desktop ${LANG_CATALAN} "Create Desktop Shortcut"
LangString inst_desktop ${LANG_CATALAN} "Crea una drecera a l'escriptori"
;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut"
LangString inst_startmenu ${LANG_CATALAN} "Create Start Menu Shortcut"
LangString inst_startmenu ${LANG_CATALAN} "Crea una drecera al menú d'inici"
;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up"
LangString inst_startup ${LANG_CATALAN} "Start qBittorrent on Windows start up"
LangString inst_startup ${LANG_CATALAN} "Inicia qBittorrent en iniciar Windows"
;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent"
LangString inst_torrent ${LANG_CATALAN} "Open .torrent files with qBittorrent"
LangString inst_torrent ${LANG_CATALAN} "Obre els fitxers .torrent amb qBittorrent"
;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent"
LangString inst_magnet ${LANG_CATALAN} "Open magnet links with qBittorrent"
LangString inst_magnet ${LANG_CATALAN} "Obre els enllaços magnètics amb qBittorrent"
;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule"
LangString inst_firewall ${LANG_CATALAN} "Add Windows Firewall rule"
LangString inst_firewall ${LANG_CATALAN} "Afegir la regla del tallafoc del Windows"
;LangString inst_pathlimit ${LANG_ENGLISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
LangString inst_pathlimit ${LANG_CATALAN} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
LangString inst_pathlimit ${LANG_CATALAN} "Deshabilita el límit de longitud del path de Windows (260 caràcters de limitació MAX_PATH, requereix Windows 10 1607 o posterior)"
;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule"
LangString inst_firewallinfo ${LANG_CATALAN} "Adding Windows Firewall rule"
LangString inst_firewallinfo ${LANG_CATALAN} "S'està afegint la regla del tallafoc del Windows"
;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing."
LangString inst_warning ${LANG_CATALAN} "qBittorrent is running. Please close the application before installing."
LangString inst_warning ${LANG_CATALAN} "qBittorrent s'està executant. Tanqueu l'aplicació abans d'instal·lar."
;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact."
LangString inst_uninstall_question ${LANG_CATALAN} "Current version will be uninstalled. User settings and torrents will remain intact."
LangString inst_uninstall_question ${LANG_CATALAN} "La versió actual es desinstal·larà. La configuració de l'usuari i els torrents es mantindran intactes."
;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
LangString inst_unist ${LANG_CATALAN} "Uninstalling previous version."
LangString inst_unist ${LANG_CATALAN} "Desinstal·lant la versió anterior."
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
LangString launch_qbt ${LANG_CATALAN} "Launch qBittorrent."
LangString launch_qbt ${LANG_CATALAN} "Executa qBittorrent."
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
LangString inst_requires_64bit ${LANG_CATALAN} "This installer works only in 64-bit Windows versions."
LangString inst_requires_64bit ${LANG_CATALAN} "Aquest instal·lador només funciona en versions Windows de 64 bits."
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
LangString inst_requires_win10 ${LANG_CATALAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
LangString inst_requires_win10 ${LANG_CATALAN} "Aquest instal·lador requereix almenys Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_CATALAN} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_CATALAN} "Desinstal·lar qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_CATALAN} "Aquesta versió x64 de qBittorrent no pot funcionar en sistemes ARM64. Siusplau, descarrega l'instal·lador ARM64."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_CATALAN} "Aquesta versió ARM64 de qBittorrent no pot funcionar en sistemes x64. Siusplau, descarrega l'instal·lador x64."
;------------------------------------
;Uninstaller strings
;LangString remove_files ${LANG_ENGLISH} "Remove files"
LangString remove_files ${LANG_CATALAN} "Remove files"
LangString remove_files ${LANG_CATALAN} "Elimina els fitxers"
;LangString remove_shortcuts ${LANG_ENGLISH} "Remove shortcuts"
LangString remove_shortcuts ${LANG_CATALAN} "Remove shortcuts"
LangString remove_shortcuts ${LANG_CATALAN} "Elimina les draceres"
;LangString remove_associations ${LANG_ENGLISH} "Remove file associations"
LangString remove_associations ${LANG_CATALAN} "Remove file associations"
LangString remove_associations ${LANG_CATALAN} "Elimina les associacions de fitxers"
;LangString remove_registry ${LANG_ENGLISH} "Remove registry keys"
LangString remove_registry ${LANG_CATALAN} "Remove registry keys"
LangString remove_registry ${LANG_CATALAN} "Elimina les claus del registre"
;LangString remove_conf ${LANG_ENGLISH} "Remove configuration files"
LangString remove_conf ${LANG_CATALAN} "Remove configuration files"
LangString remove_conf ${LANG_CATALAN} "Elimina els fitxers de configuració"
;LangString remove_firewall ${LANG_ENGLISH} "Remove Windows Firewall rule"
LangString remove_firewall ${LANG_CATALAN} "Remove Windows Firewall rule"
LangString remove_firewall ${LANG_CATALAN} "Elimina la regla del tallafoc del Windows"
;LangString remove_firewallinfo ${LANG_ENGLISH} "Removing Windows Firewall rule"
LangString remove_firewallinfo ${LANG_CATALAN} "Removing Windows Firewall rule"
LangString remove_firewallinfo ${LANG_CATALAN} "Eliminant la regla del tallafoc del Windows"
;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data"
LangString remove_cache ${LANG_CATALAN} "Remove torrents and cached data"
LangString remove_cache ${LANG_CATALAN} "Elimina els torrents i les dades de la memòria cau"
;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling."
LangString uninst_warning ${LANG_CATALAN} "qBittorrent is running. Please close the application before uninstalling."
LangString uninst_warning ${LANG_CATALAN} "qBittorrent s'està executant. Tanca l'aplicació abans de desinstal·lar-la."
;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:"
LangString uninst_tor_warn ${LANG_CATALAN} "Not removing .torrent association. It is associated with:"
LangString uninst_tor_warn ${LANG_CATALAN} "No s'està eliminant l'associació .torrent. Està associat a:"
;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:"
LangString uninst_mag_warn ${LANG_CATALAN} "Not removing magnet association. It is associated with:"
LangString uninst_mag_warn ${LANG_CATALAN} "No s'està eliminant l'associació magnètica. Està associat a:"

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_CROATIAN} "This installer works only in 64
LangString inst_requires_win10 ${LANG_CROATIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_CROATIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_CROATIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_CROATIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_CZECH} "Tento instalátor funguje pouze v
LangString inst_requires_win10 ${LANG_CZECH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_CZECH} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_CZECH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_CZECH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_DANISH} "Installationsprogrammet virker ku
LangString inst_requires_win10 ${LANG_DANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_DANISH} "Afinstaller qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_DANISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_DANISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_DUTCH} "Dit installatieprogramma werkt all
LangString inst_requires_win10 ${LANG_DUTCH} "Dit installatieprogramma vereist ten minste Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_DUTCH} "qBittorrent verwijderen"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_DUTCH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_DUTCH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-
LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_ESPERANTO} "This installer works only in 6
LangString inst_requires_win10 ${LANG_ESPERANTO} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ESPERANTO} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ESPERANTO} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ESPERANTO} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_ESTONIAN} "See installer töötab ainult 6
LangString inst_requires_win10 ${LANG_ESTONIAN} "Selle installeri jaoks on vajalik vähemalt Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ESTONIAN} "Desinstalli qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ESTONIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ESTONIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_FARSI} "This installer works only in 64-bi
LangString inst_requires_win10 ${LANG_FARSI} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_FARSI} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_FARSI} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_FARSI} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_FINNISH} "Tämä asennusohjelma toimii vai
LangString inst_requires_win10 ${LANG_FINNISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_FINNISH} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_FINNISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_FINNISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_FRENCH} "Cet installateur ne fonctionne qu
LangString inst_requires_win10 ${LANG_FRENCH} "Cet installateur nécessite au moins Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_FRENCH} "Désinstaller qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_FRENCH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_FRENCH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_GALICIAN} "This installer works only in 64
LangString inst_requires_win10 ${LANG_GALICIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_GALICIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_GALICIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_GALICIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_GERMAN} "Diese Installation funktioniert n
LangString inst_requires_win10 ${LANG_GERMAN} "Diese Installation erfordert mindestens Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_GERMAN} "qBittorrent deinstallieren"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_GERMAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_GERMAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_GREEK} "Αυτό το αρχείο εγκ
LangString inst_requires_win10 ${LANG_GREEK} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_GREEK} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_GREEK} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_GREEK} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_HEBREW} "התקנה זו עובדת רק
LangString inst_requires_win10 ${LANG_HEBREW} "התקנה זו דורשת לפחות Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_HEBREW} "הסר את ההתקנה של qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_HEBREW} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_HEBREW} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_HUNGARIAN} "A telepítő csak 64-bites Win
LangString inst_requires_win10 ${LANG_HUNGARIAN} "A telepítéshez minimum Windows 10 (1809) / Windows Server 2019 szükséges."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_HUNGARIAN} "qBittorrent eltávolítása"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_HUNGARIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_HUNGARIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_ICELANDIC} "This installer works only in 6
LangString inst_requires_win10 ${LANG_ICELANDIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ICELANDIC} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ICELANDIC} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ICELANDIC} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_INDONESIAN} "Aplikasi ini hanya berjalan p
LangString inst_requires_win10 ${LANG_INDONESIAN} "Penginstal ini membutuhkan setidaknya Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_INDONESIAN} "Hapus qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_INDONESIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_INDONESIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_IRISH} "This installer works only in 64-bi
LangString inst_requires_win10 ${LANG_IRISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_IRISH} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_IRISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_IRISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_ITALIAN} "Questo installer funziona solo c
LangString inst_requires_win10 ${LANG_ITALIAN} "Questo installer richiede almeno Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ITALIAN} "Disinstalla qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ITALIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ITALIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_JAPANESE} "このインストーラは 64
LangString inst_requires_win10 ${LANG_JAPANESE} "このインストーラの実行には Windows 10 (1809) / Windows Server 2019 以降が必要です。"
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_JAPANESE} "qBittorrent をアンインストール"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_JAPANESE} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_JAPANESE} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_KOREAN} "이 설치 프로그램은 64비
LangString inst_requires_win10 ${LANG_KOREAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_KOREAN} "qBittorrent 제거"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_KOREAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_KOREAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -1,60 +1,64 @@
;Installer strings
;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)"
LangString inst_qbt_req ${LANG_KURDISH} "qBittorrent (required)"
LangString inst_qbt_req ${LANG_KURDISH} "کیووبیتتۆرێنت (پێویستە)"
;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut"
LangString inst_desktop ${LANG_KURDISH} "Create Desktop Shortcut"
LangString inst_desktop ${LANG_KURDISH} "قەدبڕێک دروست بکە لەسەر دێسکتۆپ"
;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut"
LangString inst_startmenu ${LANG_KURDISH} "Create Start Menu Shortcut"
LangString inst_startmenu ${LANG_KURDISH} "قەدبڕێک دروست بکە لەسەر پێڕستی دەتپێک"
;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up"
LangString inst_startup ${LANG_KURDISH} "Start qBittorrent on Windows start up"
LangString inst_startup ${LANG_KURDISH} "لەگەڵ هەڵبوونی کۆمپیوتەرەکە کیووبیتتۆرێنت بکەرەوە"
;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent"
LangString inst_torrent ${LANG_KURDISH} "Open .torrent files with qBittorrent"
LangString inst_torrent ${LANG_KURDISH} "پەڕگەکانی .torrent بە کیووبیتتۆرێنت بکەرەوە"
;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent"
LangString inst_magnet ${LANG_KURDISH} "Open magnet links with qBittorrent"
LangString inst_magnet ${LANG_KURDISH} "بەسەرە موگناتیسییەکان بە کیووبیتتۆرێنت بکەرەوە"
;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule"
LangString inst_firewall ${LANG_KURDISH} "Add Windows Firewall rule"
LangString inst_firewall ${LANG_KURDISH} "یاسای فایەروۆڵی ویندۆز زیاد بکە"
;LangString inst_pathlimit ${LANG_ENGLISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
LangString inst_pathlimit ${LANG_KURDISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
LangString inst_pathlimit ${LANG_KURDISH} "سنووری درێژیی ڕێڕەوی ویندۆز ناچالاک بکە (سنووری ٢٦٠ پیتی، پێویستی بە ویندۆزی ١٠ و دواتر هەیە)"
;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule"
LangString inst_firewallinfo ${LANG_KURDISH} "Adding Windows Firewall rule"
LangString inst_firewallinfo ${LANG_KURDISH} "یاسای فایەروۆڵی ویندۆز زیاد دەبێت"
;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing."
LangString inst_warning ${LANG_KURDISH} "qBittorrent is running. Please close the application before installing."
LangString inst_warning ${LANG_KURDISH} "کیووبیتتۆرێنت کارایە. تکایە بەرنامەکە دابخەرەوە پێش دامەزراندن."
;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact."
LangString inst_uninstall_question ${LANG_KURDISH} "Current version will be uninstalled. User settings and torrents will remain intact."
LangString inst_uninstall_question ${LANG_KURDISH} "ئەم وەشانەی ئێستا دەسڕدرێتەوە. ڕێکخستنەکانی بەکارهێنەر و تۆرێنتەکان وەک خۆیان دەمێننەوە."
;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
LangString inst_unist ${LANG_KURDISH} "Uninstalling previous version."
LangString inst_unist ${LANG_KURDISH} "وەشانی پێشوو دەسڕدرێتەوە."
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
LangString launch_qbt ${LANG_KURDISH} "Launch qBittorrent."
LangString launch_qbt ${LANG_KURDISH} "کیووبیتتۆرێنت کارا بکە."
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
LangString inst_requires_64bit ${LANG_KURDISH} "This installer works only in 64-bit Windows versions."
LangString inst_requires_64bit ${LANG_KURDISH} "ئەم دامەزرێنەرە تەنیا لەسەر وەشانی ٦٤ بیتی ویندۆز کار دەکات."
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
LangString inst_requires_win10 ${LANG_KURDISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
LangString inst_requires_win10 ${LANG_KURDISH} "ئەم دامەزرێنەرە لانیکەم پێویستی بە ویندۆزی ١٠ یان ویندۆز سێرڤەری ٢٠١٩ هەیە."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_KURDISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_KURDISH} "کیووبیتتۆرێنت بسڕەوە"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_KURDISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_KURDISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings
;LangString remove_files ${LANG_ENGLISH} "Remove files"
LangString remove_files ${LANG_KURDISH} "Remove files"
LangString remove_files ${LANG_KURDISH} "پەڕگەکان بسڕەوە"
;LangString remove_shortcuts ${LANG_ENGLISH} "Remove shortcuts"
LangString remove_shortcuts ${LANG_KURDISH} "Remove shortcuts"
LangString remove_shortcuts ${LANG_KURDISH} "قەدبڕەکان بسڕەوە"
;LangString remove_associations ${LANG_ENGLISH} "Remove file associations"
LangString remove_associations ${LANG_KURDISH} "Remove file associations"
LangString remove_associations ${LANG_KURDISH} "پەیوەندیی پەڕگەکان بسڕەوە"
;LangString remove_registry ${LANG_ENGLISH} "Remove registry keys"
LangString remove_registry ${LANG_KURDISH} "Remove registry keys"
LangString remove_registry ${LANG_KURDISH} "کلیلەکانی تۆمار بسڕەوە"
;LangString remove_conf ${LANG_ENGLISH} "Remove configuration files"
LangString remove_conf ${LANG_KURDISH} "Remove configuration files"
LangString remove_conf ${LANG_KURDISH} "پەڕگەکانی شێوەپێدان بسڕەوە"
;LangString remove_firewall ${LANG_ENGLISH} "Remove Windows Firewall rule"
LangString remove_firewall ${LANG_KURDISH} "Remove Windows Firewall rule"
LangString remove_firewall ${LANG_KURDISH} "یاسای فایەروۆڵی ویندۆز بسڕەوە"
;LangString remove_firewallinfo ${LANG_ENGLISH} "Removing Windows Firewall rule"
LangString remove_firewallinfo ${LANG_KURDISH} "Removing Windows Firewall rule"
LangString remove_firewallinfo ${LANG_KURDISH} "یاسای فایەروۆڵی ویندۆز دەسڕێتەوە"
;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data"
LangString remove_cache ${LANG_KURDISH} "Remove torrents and cached data"
LangString remove_cache ${LANG_KURDISH} "تۆرێنت و داتای کاشکراو بسڕەوە"
;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling."
LangString uninst_warning ${LANG_KURDISH} "qBittorrent is running. Please close the application before uninstalling."
LangString uninst_warning ${LANG_KURDISH} "کیووبیتتۆرێنت کارایە. تکایە بەرنامەکە دابخە پێش سڕینەوەی."
;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:"
LangString uninst_tor_warn ${LANG_KURDISH} "Not removing .torrent association. It is associated with:"
LangString uninst_tor_warn ${LANG_KURDISH} "پەیوەندیی .torrent ناسڕێتەوە. پەیوەندیی هەیە بە:"
;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:"
LangString uninst_mag_warn ${LANG_KURDISH} "Not removing magnet association. It is associated with:"
LangString uninst_mag_warn ${LANG_KURDISH} "پەیوەندیی موگناتیسی ناسڕێتەوە. پەیوەیندیی هەیە بە:"

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_LATVIAN} "Šī instalēšanas programma da
LangString inst_requires_win10 ${LANG_LATVIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_LATVIAN} "Atinstalēt qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_LATVIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_LATVIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_LITHUANIAN} "Šis įdiegėjas veikia tik s
LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Pašalinti qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_LITHUANIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_LITHUANIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_LUXEMBOURGISH} "Dësen Installateur funkti
LangString inst_requires_win10 ${LANG_LUXEMBOURGISH} "Dësen Installateur erfuerdert mindestens Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_LUXEMBOURGISH} "qBittorrent deinstalléieren"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_LUXEMBOURGISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_LUXEMBOURGISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_MACEDONIAN} "This installer works only in
LangString inst_requires_win10 ${LANG_MACEDONIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_MACEDONIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_MACEDONIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_MACEDONIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_MALAY} "This installer works only in 64-bi
LangString inst_requires_win10 ${LANG_MALAY} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_MALAY} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_MALAY} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_MALAY} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_MONGOLIAN} "This installer works only in 6
LangString inst_requires_win10 ${LANG_MONGOLIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_MONGOLIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_MONGOLIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_MONGOLIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_NORWEGIAN} "This installer works only in 6
LangString inst_requires_win10 ${LANG_NORWEGIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_NORWEGIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_NORWEGIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_NORWEGIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_NORWEGIANNYNORSK} "This installer works on
LangString inst_requires_win10 ${LANG_NORWEGIANNYNORSK} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_NORWEGIANNYNORSK} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_NORWEGIANNYNORSK} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_NORWEGIANNYNORSK} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_POLISH} "Ten instalator działa tylko w 64
LangString inst_requires_win10 ${LANG_POLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_POLISH} "Odinstaluj qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_POLISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_POLISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_PORTUGUESE} "Este instalador funciona apen
LangString inst_requires_win10 ${LANG_PORTUGUESE} "Este instalador requer, pelo menos, o Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_PORTUGUESE} "Desinstalar qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_PORTUGUESE} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_PORTUGUESE} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_PORTUGUESEBR} "Este instalador só funcion
LangString inst_requires_win10 ${LANG_PORTUGUESEBR} "Este instalador requer no mínimo o Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_PORTUGUESEBR} "Desinstalar o qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_PORTUGUESEBR} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_PORTUGUESEBR} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_ROMANIAN} "Acest program de instalare func
LangString inst_requires_win10 ${LANG_ROMANIAN} "Acest program de instalare necesită cel puțin Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_ROMANIAN} "Dezinstalați qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ROMANIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ROMANIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_RUSSIAN} "Этот установщик р
LangString inst_requires_win10 ${LANG_RUSSIAN} "Для работы этого установщика требуется Windows 10 (1809) / Windows Server 2019 или выше."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_RUSSIAN} "Удалить qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_RUSSIAN} "Эта версия qBittorrent для x64 не может работать на системах ARM64. Пожалуйста, скачайте установщик для ARM64."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_RUSSIAN} "Эта версия qBittorrent для ARM64 не может работать на системах x64. Пожалуйста, скачайте установщик для x64."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SERBIAN} "This installer works only in 64-
LangString inst_requires_win10 ${LANG_SERBIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SERBIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SERBIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SERBIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SERBIANLATIN} "This installer works only i
LangString inst_requires_win10 ${LANG_SERBIANLATIN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SERBIANLATIN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SERBIANLATIN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SERBIANLATIN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SIMPCHINESE} "此安装程序仅支持 64
LangString inst_requires_win10 ${LANG_SIMPCHINESE} "此安装程序仅支持 Windows 10 (1809) / Windows Server 2019 或更新的系统。"
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SIMPCHINESE} "卸载 qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SIMPCHINESE} "X64 版本的 qBittorrent 不能运行在 ARM64 系统上。请下载 ARM64 安装程序。"
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SIMPCHINESE} "ARM64 版本的 qBittorrent 不能运行在 X64 系统上。请下载 X64 安装程序。"
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SLOVAK} "Táto inštalácia funguje iba na
LangString inst_requires_win10 ${LANG_SLOVAK} "Tento inštalátor vyžaduje aspoň Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SLOVAK} "Odinštalovať qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SLOVAK} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SLOVAK} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SLOVENIAN} "This installer works only in 6
LangString inst_requires_win10 ${LANG_SLOVENIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SLOVENIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SLOVENIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SLOVENIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SPANISH} "Este instalador solo funciona en
LangString inst_requires_win10 ${LANG_SPANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SPANISH} "Desinstalar qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SPANISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SPANISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SPANISHINTERNATIONAL} "Este instalador sol
LangString inst_requires_win10 ${LANG_SPANISHINTERNATIONAL} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SPANISHINTERNATIONAL} "Desinstalar qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SPANISHINTERNATIONAL} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SPANISHINTERNATIONAL} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_SWEDISH} "Det här installationsprogrammet
LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_SWEDISH} "Avinstallera qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_SWEDISH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_SWEDISH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_THAI} "This installer works only in 64-bit
LangString inst_requires_win10 ${LANG_THAI} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_THAI} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_THAI} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_THAI} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_TRADCHINESE} "此安裝程式僅支援 64
LangString inst_requires_win10 ${LANG_TRADCHINESE} "此安裝程式僅支援 Windows 10 (1809) / Windows Server 2019 以上的系統。"
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_TRADCHINESE} "移除 qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_TRADCHINESE} "X64 版本的 qBittorrent 無法在 ARM64 系統上執行。請下載 ARM64 安裝程式。"
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_TRADCHINESE} "ARM64 版本的 qBittorrent 無法在 X64 系統上執行。請下載 X64 安裝程式。"
;------------------------------------
;Uninstaller strings

View File

@@ -21,7 +21,7 @@ LangString inst_firewallinfo ${LANG_TURKISH} "Windows Güvenlik Duvarı kuralı
;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing."
LangString inst_warning ${LANG_TURKISH} "qBittorrent çalışıyor. Lütfen yüklemeden önce uygulamayı kapatın."
;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact."
LangString inst_uninstall_question ${LANG_TURKISH} "Şu anki sürüm kaldırılacaktır. Kullanıcı ayarları ve torrent'ler bozulmadan kalacaktır."
LangString inst_uninstall_question ${LANG_TURKISH} "Şu anki sürüm kaldırılacak. Kullanıcı ayarları ve torrent'ler bozulmadan kalacaktır."
;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
LangString inst_unist ${LANG_TURKISH} "Önceki sürüm kaldırılıyor."
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_TURKISH} "Bu yükleyici sadece 64-bit Wind
LangString inst_requires_win10 ${LANG_TURKISH} "Bu yükleyici en az Windows 10 (1809) / Windows Server 2019 gerektirir."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_TURKISH} "qBittorrent'i kaldır"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_TURKISH} "qBittorrent'in bu x64 sürümü ARM64 sistemlerde çalışamaz. Lütfen ARM64 yükleyicisini indirin."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_TURKISH} "qBittorrent'in bu ARM64 sürümü x64 sistemlerde çalışamaz. Lütfen x64 yükleyicisini indirin."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,10 @@ LangString inst_requires_64bit ${LANG_UKRAINIAN} "Ця програма уста
LangString inst_requires_win10 ${LANG_UKRAINIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_UKRAINIAN} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_UKRAINIAN} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_UKRAINIAN} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_UZBEK} "Bu oʻrnatuvchi faqat Windows 64-b
LangString inst_requires_win10 ${LANG_UZBEK} "Bu oʻrnatuvchi kamida Windows 10 (1809) / Windows Server 2019 talab qiladi."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_UZBEK} "qBittorrent oʻchirilsin"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_UZBEK} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_UZBEK} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -32,6 +32,11 @@ LangString inst_requires_64bit ${LANG_WELSH} "This installer works only in 64-bi
LangString inst_requires_win10 ${LANG_WELSH} "This installer requires at least Windows 10 (1809) / Windows Server 2019."
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
LangString inst_uninstall_link_description ${LANG_WELSH} "Uninstall qBittorrent"
;LangString inst_arch_mismatch_x64_on_arm64 ${LANG_ENGLISH} "Error: This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
LangString inst_arch_mismatch_x64_on_arm64 ${LANG_WELSH} "This x64 version of qBittorrent cannot run on ARM64 systems. Please download the ARM64 installer."
;LangString inst_arch_mismatch_arm64_on_x64 ${LANG_ENGLISH} "Error: This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
LangString inst_arch_mismatch_arm64_on_x64 ${LANG_WELSH} "This ARM64 version of qBittorrent cannot run on x64 systems. Please download the x64 installer."
;------------------------------------
;Uninstaller strings

View File

@@ -51,7 +51,7 @@ Section $(inst_qbt_req) ;"qBittorrent (required)"
WriteRegStr HKLM "Software\Classes\magnet" "Content Type" "application/x-magnet"
WriteRegStr HKLM "Software\Classes\magnet" "URL Protocol" ""
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, p 0, p 0)'
System::Call 'shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, p 0, p 0)'
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\qBittorrent" "DisplayName" "qBittorrent"
@@ -128,6 +128,19 @@ Function .onInit
Abort
${EndIf}
; check installer and current system architecture
${If} "${QBT_CPU_ARCH}" == "x64"
${AndIf} ${IsNativeARM64} ;x64 use arm64 installer
MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_arch_mismatch_x64_on_arm64) /SD IDOK
SetErrorLevel 1654 # WinError.h: `ERROR_INSTALL_REJECTED`
Abort
${ElseIf} "${QBT_CPU_ARCH}" == "arm64"
${AndIf} ${IsNativeAMD64} ;arm64 use x64 installer
MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_arch_mismatch_arm64_on_x64) /SD IDOK
SetErrorLevel 1654 # WinError.h: `ERROR_INSTALL_REJECTED`
Abort
${EndIf}
;Search if qBittorrent is already installed.
FindFirst $0 $1 "$INSTDIR\uninst.exe"
FindClose $0

View File

@@ -27,7 +27,7 @@ Section "un.$(remove_registry)" ;"un.Remove registry keys"
; Remove ProgIDs
DeleteRegKey HKLM "Software\Classes\qBittorrent.File.Torrent"
DeleteRegKey HKLM "Software\Classes\qBittorrent.Url.Magnet"
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, p 0, p 0)'
System::Call 'shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, p 0, p 0)'
SectionEnd
Section "un.$(remove_firewall)" ;
@@ -45,8 +45,9 @@ SectionEnd
Function un.remove_conf_user
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_APPDATA}, i0)i.r0'
System::Call 'shell32::SHGetKnownFolderPath(g "${FOLDERID_RoamingAppData}", i 0, p 0, *w . r1) i . r0'
RMDir /r "$1\qBittorrent"
System::Call 'ole32::CoTaskMemFree(p r1)'
FunctionEnd
@@ -58,8 +59,9 @@ SectionEnd
Function un.remove_cache_user
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_LOCALAPPDATA}, i0)i.r0'
RMDir /r "$1\qBittorrent\"
System::Call 'shell32::SHGetKnownFolderPath(g "${FOLDERID_LocalAppData}", i 0, p 0, *w . r1) i . r0'
RMDir /r "$1\qBittorrent"
System::Call 'ole32::CoTaskMemFree(p r1)'
FunctionEnd

View File

@@ -82,6 +82,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set_source_files_properties(
"${qBittorrent_SOURCE_DIR}/dist/mac/qt.conf"
"${qBittorrent_SOURCE_DIR}/dist/mac/qBitTorrentDocument.icns"
"${qBittorrent_SOURCE_DIR}/dist/mac/qBitTorrentIncompleteData.icns"
"${qBittorrent_SOURCE_DIR}/dist/mac/qbittorrent_mac.icns"
PROPERTIES
MACOSX_PACKAGE_LOCATION Resources
@@ -112,6 +113,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
${QT_TRANSLATIONS}
${qBittorrent_SOURCE_DIR}/dist/mac/qt.conf
${qBittorrent_SOURCE_DIR}/dist/mac/qBitTorrentDocument.icns
${qBittorrent_SOURCE_DIR}/dist/mac/qBitTorrentIncompleteData.icns
${qBittorrent_SOURCE_DIR}/dist/mac/qbittorrent_mac.icns
)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")

View File

@@ -543,7 +543,7 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo
const auto replaceVariables = [torrent](QString str) -> QString
{
for (int i = (str.length() - 2); i >= 0; --i)
for (qsizetype i = (str.length() - 2); i >= 0; --i)
{
if (str[i] != u'%')
continue;
@@ -776,8 +776,9 @@ void Application::allTorrentsFinished()
bool isShutdown = pref->shutdownWhenDownloadsComplete();
bool isSuspend = pref->suspendWhenDownloadsComplete();
bool isHibernate = pref->hibernateWhenDownloadsComplete();
bool isReboot = pref->rebootWhenDownloadsComplete();
bool haveAction = isExit || isShutdown || isSuspend || isHibernate;
const bool haveAction = isExit || isShutdown || isSuspend || isHibernate || isReboot;
if (!haveAction) return;
ShutdownDialogAction action = ShutdownDialogAction::Exit;
@@ -787,6 +788,8 @@ void Application::allTorrentsFinished()
action = ShutdownDialogAction::Hibernate;
else if (isShutdown)
action = ShutdownDialogAction::Shutdown;
else if (isReboot)
action = ShutdownDialogAction::Reboot;
#ifndef DISABLE_GUI
// ask confirm
@@ -808,6 +811,7 @@ void Application::allTorrentsFinished()
pref->setShutdownWhenDownloadsComplete(false);
pref->setSuspendWhenDownloadsComplete(false);
pref->setHibernateWhenDownloadsComplete(false);
pref->setRebootWhenDownloadsComplete(false);
// Make sure preferences are synced before exiting
m_shutdownAct = action;
}
@@ -957,7 +961,7 @@ int Application::exec()
const auto *pref = Preferences::instance();
const QString tempPassword = pref->getWebUIPassword().isEmpty()
? Utils::Password::generate() : QString();
? Utils::Password::generate(9) : QString();
m_webui = new WebUI(this, (!tempPassword.isEmpty() ? Utils::Password::PBKDF2::generate(tempPassword) : QByteArray()));
connect(m_webui, &WebUI::error, this, [](const QString &message)
{
@@ -996,7 +1000,7 @@ int Application::exec()
#endif // DISABLE_WEBUI
m_isProcessingParamsAllowed = true;
for (const QBtCommandLineParameters &params : m_paramsQueue)
for (const QBtCommandLineParameters &params : asConst(m_paramsQueue))
processParams(params);
m_paramsQueue.clear();
});

View File

@@ -137,7 +137,7 @@ namespace
};
// Option with string value. May not have a shortcut
struct StringOption : protected Option
class StringOption : protected Option
{
public:
explicit constexpr StringOption(const QStringView name)
@@ -147,12 +147,14 @@ namespace
QString value(const QString &arg) const
{
QStringList parts = arg.split(u'=');
if (parts.size() == 2)
return Utils::String::unquote(parts[1], u"'\""_s);
throw CommandLineParameterError(QCoreApplication::translate("CMD Options", "Parameter '%1' must follow syntax '%1=%2'",
const qsizetype index = arg.indexOf(u'=');
if (index == -1)
throw CommandLineParameterError(QCoreApplication::translate("CMD Options", "Parameter '%1' must follow syntax '%1=%2'",
"e.g. Parameter '--webui-port' must follow syntax '--webui-port=value'")
.arg(fullParameter(), u"<value>"_s));
const QStringView val = QStringView(arg).sliced(index + 1);
return Utils::String::unquote(val, u"'\""_s).toString();
}
QString value(const QProcessEnvironment &env, const QString &defaultValue = {}) const
@@ -168,7 +170,7 @@ namespace
friend bool operator==(const StringOption &option, const QString &arg)
{
return arg.startsWith(option.parameterAssignment());
return (arg == option.fullParameter()) || arg.startsWith(option.parameterAssignment());
}
private:
@@ -354,7 +356,7 @@ QBtCommandLineParameters parseCommandLine(const QStringList &args)
{
QBtCommandLineParameters result {QProcessEnvironment::systemEnvironment()};
for (int i = 1; i < args.count(); ++i)
for (qsizetype i = 1; i < args.count(); ++i)
{
const QString &arg = args[i];

View File

@@ -127,10 +127,12 @@ namespace
#endif
}
#if !defined(Q_OS_WIN) || defined(DISABLE_GUI)
void displayVersion()
{
printf("%s %s\n", qUtf8Printable(qApp->applicationName()), QBT_VERSION);
}
#endif
#ifndef DISABLE_GUI
void showSplashScreen()

View File

@@ -87,7 +87,7 @@ namespace
void normalExitHandler(const int signum)
{
const char *msgs[] = {"Catching signal: ", sysSigName[signum], "\nExiting cleanly\n"};
std::for_each(std::begin(msgs), std::end(msgs), safePrint);
std::ranges::for_each(msgs, safePrint);
signal(signum, SIG_DFL);
QMetaObject::invokeMethod(qApp, [] { QCoreApplication::exit(); }, Qt::QueuedConnection); // unsafe, but exit anyway
}
@@ -103,7 +103,7 @@ namespace
const std::string stacktrace = getStacktrace();
const char *msgs[] = {msg, sigName, "\n```\n", stacktrace.c_str(), "```\n\n"};
std::for_each(std::begin(msgs), std::end(msgs), safePrint);
std::ranges::for_each(msgs, safePrint);
#ifndef DISABLE_GUI
StacktraceDialog dlg; // unsafe

View File

@@ -32,7 +32,7 @@
#include <QCoreApplication>
#include <QMetaEnum>
#include "base/bittorrent/sharelimitaction.h"
#include "base/bittorrent/sharelimits.h"
#include "base/bittorrent/torrentcontentlayout.h"
#include "base/global.h"
#include "base/logger.h"

File diff suppressed because it is too large Load Diff

View File

@@ -34,10 +34,11 @@ add_library(qbt_base STATIC
bittorrent/session.h
bittorrent/sessionimpl.h
bittorrent/sessionstatus.h
bittorrent/sharelimitaction.h
bittorrent/sharelimits.h
bittorrent/speedmonitor.h
bittorrent/sslparameters.h
bittorrent/torrent.h
bittorrent/torrentannouncestatus.h
bittorrent/torrentcontenthandler.h
bittorrent/torrentcontentlayout.h
bittorrent/torrentcontentremoveoption.h
@@ -103,6 +104,7 @@ add_library(qbt_base STATIC
torrentfilter.h
types.h
unicodestrings.h
utils/apikey.h
utils/bytearray.h
utils/compare.h
utils/datetime.h
@@ -200,6 +202,7 @@ add_library(qbt_base STATIC
torrentfileguard.cpp
torrentfileswatcher.cpp
torrentfilter.cpp
utils/apikey.cpp
utils/bytearray.cpp
utils/compare.cpp
utils/datetime.cpp
@@ -245,7 +248,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
${IOKit_LIBRARY}
)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows")
target_link_libraries(qbt_base PRIVATE Iphlpapi PowrProf)
target_link_libraries(qbt_base PRIVATE iphlpapi powrprof)
endif()
if (NOT GUI)

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2017-2024 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2017-2025 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -31,56 +31,24 @@
#include <QDebug>
#include <QMetaObject>
#include "base/logger.h"
#include "base/utils/fs.h"
#include "base/utils/io.h"
QHash<Path, std::weak_ptr<QFile>> AsyncFileStorage::m_reservedPaths;
QReadWriteLock AsyncFileStorage::m_reservedPathsLock;
AsyncFileStorage::AsyncFileStorage(const Path &storageFolderPath, QObject *parent)
: QObject(parent)
, m_storageDir(storageFolderPath)
{
Q_ASSERT(m_storageDir.isAbsolute());
const Path lockFilePath = m_storageDir / Path(u"storage.lock"_s);
if (!Utils::Fs::mkpath(m_storageDir))
{
const QReadLocker readLocker {&m_reservedPathsLock};
m_lockFile = m_reservedPaths.value(lockFilePath).lock();
}
if (!m_lockFile)
{
const QWriteLocker writeLocker {&m_reservedPathsLock};
if (std::weak_ptr<QFile> &lockFile = m_reservedPaths[lockFilePath]; lockFile.expired()) [[likely]]
{
if (!Utils::Fs::mkpath(m_storageDir))
throw AsyncFileStorageError(tr("Could not create directory '%1'.").arg(m_storageDir.toString()));
auto lockFileDeleter = [](QFile *file)
{
file->close();
file->remove();
delete file;
};
m_lockFile = std::shared_ptr<QFile>(new QFile(lockFilePath.data()), std::move(lockFileDeleter));
// TODO: This folder locking approach does not work for UNIX systems. Implement it.
if (!m_lockFile->open(QFile::WriteOnly))
throw AsyncFileStorageError(m_lockFile->errorString());
lockFile = m_lockFile;
}
else
{
m_lockFile = lockFile.lock();
}
const QString errorMessage = tr("Could not create directory '%1'.").arg(m_storageDir.toString());
LogMsg(errorMessage, Log::CRITICAL);
qFatal() << errorMessage;
}
}
AsyncFileStorage::~AsyncFileStorage() = default;
void AsyncFileStorage::store(const Path &filePath, const QByteArray &data)
{
QMetaObject::invokeMethod(this, [this, data, filePath] { store_impl(filePath, data); }, Qt::QueuedConnection);

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2017-2024 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2017-2025 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -28,22 +28,10 @@
#pragma once
#include <memory>
#include <QFile>
#include <QHash>
#include <QObject>
#include <QReadWriteLock>
#include "base/exceptions.h"
#include "base/path.h"
class AsyncFileStorageError final : public RuntimeError
{
public:
using RuntimeError::RuntimeError;
};
class AsyncFileStorage final : public QObject
{
Q_OBJECT
@@ -51,7 +39,6 @@ class AsyncFileStorage final : public QObject
public:
explicit AsyncFileStorage(const Path &storageFolderPath, QObject *parent = nullptr);
~AsyncFileStorage() override;
void store(const Path &filePath, const QByteArray &data);
@@ -64,8 +51,4 @@ private:
Q_INVOKABLE void store_impl(const Path &fileName, const QByteArray &data);
Path m_storageDir;
std::shared_ptr<QFile> m_lockFile;
static QHash<Path, std::weak_ptr<QFile>> m_reservedPaths;
static QReadWriteLock m_reservedPathsLock;
};

View File

@@ -125,9 +125,9 @@ BitTorrent::AddTorrentParams BitTorrent::parseAddTorrentParams(const QJsonObject
.useAutoTMM = getOptionalBool(jsonObj, PARAM_AUTOTMM),
.uploadLimit = jsonObj.value(PARAM_UPLOADLIMIT).toInt(-1),
.downloadLimit = jsonObj.value(PARAM_DOWNLOADLIMIT).toInt(-1),
.seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_SEEDING_TIME),
.inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME),
.ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(Torrent::USE_GLOBAL_RATIO),
.seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(DEFAULT_SEEDING_TIME_LIMIT),
.inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(DEFAULT_SEEDING_TIME_LIMIT),
.ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(DEFAULT_RATIO_LIMIT),
.shareLimitAction = getEnum<ShareLimitAction>(jsonObj, PARAM_SHARELIMITACTION, ShareLimitAction::Default),
.sslParameters =
{

View File

@@ -36,7 +36,7 @@
#include "base/path.h"
#include "base/tagset.h"
#include "sharelimitaction.h"
#include "sharelimits.h"
#include "sslparameters.h"
#include "torrent.h"
#include "torrentcontentlayout.h"
@@ -68,9 +68,9 @@ namespace BitTorrent
std::optional<bool> useAutoTMM;
int uploadLimit = -1;
int downloadLimit = -1;
int seedingTimeLimit = Torrent::USE_GLOBAL_SEEDING_TIME;
int inactiveSeedingTimeLimit = Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME;
qreal ratioLimit = Torrent::USE_GLOBAL_RATIO;
int seedingTimeLimit = DEFAULT_SEEDING_TIME_LIMIT;
int inactiveSeedingTimeLimit = DEFAULT_SEEDING_TIME_LIMIT;
qreal ratioLimit = DEFAULT_RATIO_LIMIT;
ShareLimitAction shareLimitAction = ShareLimitAction::Default;
SSLParameters sslParameters;

View File

@@ -239,8 +239,8 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre
torrentParams.comment = fromLTString(resumeDataRoot.dict_find_string_value("qBt-comment"));
torrentParams.hasFinishedStatus = resumeDataRoot.dict_find_int_value("qBt-seedStatus");
torrentParams.firstLastPiecePriority = resumeDataRoot.dict_find_int_value("qBt-firstLastPiecePriority");
torrentParams.seedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-seedingTimeLimit", Torrent::USE_GLOBAL_SEEDING_TIME);
torrentParams.inactiveSeedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-inactiveSeedingTimeLimit", Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME);
torrentParams.seedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-seedingTimeLimit", DEFAULT_SEEDING_TIME_LIMIT);
torrentParams.inactiveSeedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-inactiveSeedingTimeLimit", DEFAULT_SEEDING_TIME_LIMIT);
torrentParams.shareLimitAction = Utils::String::toEnum(
fromLTString(resumeDataRoot.dict_find_string_value("qBt-shareLimitAction")), ShareLimitAction::Default);
@@ -283,7 +283,7 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre
const lt::string_view ratioLimitString = resumeDataRoot.dict_find_string_value("qBt-ratioLimit");
if (ratioLimitString.empty())
torrentParams.ratioLimit = resumeDataRoot.dict_find_int_value("qBt-ratioLimit", Torrent::USE_GLOBAL_RATIO * 1000) / 1000.0;
torrentParams.ratioLimit = resumeDataRoot.dict_find_int_value("qBt-ratioLimit", DEFAULT_RATIO_LIMIT * 1000) / 1000.0;
else
torrentParams.ratioLimit = fromLTString(ratioLimitString).toDouble();

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2021-2023 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2021-2025 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -32,10 +32,16 @@
#include <QJsonValue>
#include "base/global.h"
#include "base/utils/string.h"
const QString OPTION_SAVEPATH = u"save_path"_s;
const QString OPTION_DOWNLOADPATH = u"download_path"_s;
const QString OPTION_RATIOLIMIT = u"ratio_limit"_s;
const QString OPTION_SEEDINGTIMELIMIT = u"seeding_time_limit"_s;
const QString OPTION_INACTIVESEEDINGTIMELIMIT = u"inactive_seeding_time_limit"_s;
const QString OPTION_SHARELIMITACTION = u"share_limit_action"_s;
BitTorrent::CategoryOptions BitTorrent::CategoryOptions::fromJSON(const QJsonObject &jsonObj)
{
CategoryOptions options;
@@ -47,6 +53,11 @@ BitTorrent::CategoryOptions BitTorrent::CategoryOptions::fromJSON(const QJsonObj
else if (downloadPathValue.isString())
options.downloadPath = {true, Path(downloadPathValue.toString())};
options.ratioLimit = jsonObj.value(OPTION_RATIOLIMIT).toDouble(DEFAULT_RATIO_LIMIT);
options.seedingTimeLimit = jsonObj.value(OPTION_SEEDINGTIMELIMIT).toInt(DEFAULT_SEEDING_TIME_LIMIT);
options.inactiveSeedingTimeLimit = jsonObj.value(OPTION_INACTIVESEEDINGTIMELIMIT).toInt(DEFAULT_SEEDING_TIME_LIMIT);
options.shareLimitAction = Utils::String::toEnum<ShareLimitAction>(jsonObj.value(OPTION_SHARELIMITACTION).toString(), ShareLimitAction::Default);
return options;
}
@@ -63,12 +74,10 @@ QJsonObject BitTorrent::CategoryOptions::toJSON() const
return {
{OPTION_SAVEPATH, savePath.data()},
{OPTION_DOWNLOADPATH, downloadPathValue}
{OPTION_DOWNLOADPATH, downloadPathValue},
{OPTION_RATIOLIMIT, ratioLimit},
{OPTION_SEEDINGTIMELIMIT, seedingTimeLimit},
{OPTION_INACTIVESEEDINGTIMELIMIT, inactiveSeedingTimeLimit},
{OPTION_SHARELIMITACTION, Utils::String::fromEnum(shareLimitAction)}
};
}
bool BitTorrent::operator==(const BitTorrent::CategoryOptions &left, const BitTorrent::CategoryOptions &right)
{
return ((left.savePath == right.savePath)
&& (left.downloadPath == right.downloadPath));
}

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2021-2023 Vladimir Golovnev <glassez@yandex.ru>
* Copyright (C) 2021-2025 Vladimir Golovnev <glassez@yandex.ru>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -34,6 +34,7 @@
#include "base/path.h"
#include "downloadpathoption.h"
#include "sharelimits.h"
class QJsonObject;
@@ -44,9 +45,14 @@ namespace BitTorrent
Path savePath;
std::optional<DownloadPathOption> downloadPath;
qreal ratioLimit = DEFAULT_RATIO_LIMIT;
int seedingTimeLimit = DEFAULT_SEEDING_TIME_LIMIT;
int inactiveSeedingTimeLimit = DEFAULT_SEEDING_TIME_LIMIT;
ShareLimitAction shareLimitAction = ShareLimitAction::Default;
static CategoryOptions fromJSON(const QJsonObject &jsonObj);
QJsonObject toJSON() const;
};
bool operator==(const CategoryOptions &left, const CategoryOptions &right);
friend bool operator==(const CategoryOptions &, const CategoryOptions &) = default;
};
}

View File

@@ -170,8 +170,8 @@ namespace
std::pair<QString, QString> joinColumns(const QList<Column> &columns)
{
int namesSize = columns.size();
int valuesSize = columns.size();
qsizetype namesSize = columns.size();
qsizetype valuesSize = columns.size();
for (const Column &column : columns)
{
namesSize += column.name.size() + 2;

View File

@@ -1,6 +1,6 @@
/*
* Bittorrent Client using Qt and libtorrent.
* Copyright (C) 2018 Thomas Piccirello <thomas.piccirello@gmail.com>
* Copyright (C) 2018 Thomas Piccirello <thomas@piccirello.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License

Some files were not shown because too many files have changed in this diff Show More