Commit Graph

716 Commits

Author SHA1 Message Date
Jyrki Gadinger
7cbff2fbee fix(appimage): move VFS plugins to AppDir
This allows the AppImage build to find and load the experimental VFS
plugins, and not crash with:

    [ critical plugins /home/user/src/common/vfs.cpp:250 ]: Could not load plugin: not existent or bad metadata "nextclouddevsync_vfs_suffix"
    [ fatal default /home/user/src/gui/folderman.cpp:326 ]: Could not load plugin
    [1]    72936 IOT instruction (core dumped)  ./nextclouddev-master-x86_64.AppImage

Fixes #7135
Fixes #7194
Fixes #7465

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-30 09:41:04 +02:00
Jyrki Gadinger
be50bb499a feat(msi): do not schedule reboots ourselves
let's have the MSI RestartManager take care of that

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>

[skip ci]
2025-05-30 09:40:29 +02:00
Jyrki Gadinger
b7af3c7083 fix(msi): force termination of stuck processes
Stopping the Windows Explorer process does not always work.  Per default
the MSI Restart Manager will display a warning message after a timeout,
and not attempt to restart Explorer afterwards -- resulting in a black
screen if no other window is open.

Setting the property `MSIRMSHUTDOWN` to `1` will force the termination
of the process when the timeout is reached, which finally allows the
Explorer to be restarted.

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-30 09:40:29 +02:00
Jyrki Gadinger
b9f57fd254 fix(msi): do not completely remove the previous installation when updating
The MSIs we distribute perform so-called "major upgrades".

From the Microsoft docs, we learn that...

> A typical major upgrade **removes a previous version** of an
> application and installs a new version.

Indeed that was the case -- the previous version is uninstalled
completely before the new version gets installed.  Since we install an
extension that's loaded by explorer, the installer will ask the user to
restart Windows Explorer during the uninstallation of the previous
version (and restarting that might not always work as expected).

There is a way to change this behaviour though, using Wix3's
`MajorUpgrade` element.  Through its `Schedule` property it's possible
to define when the removal of the previous version should occur.

The previous value `afterInstallInitialize` is one of two values that
perform a complete uninstall/install sequence.  The new value
`afterInstallExecute` will install new files on top of the previous
installation (depending on the `REINSTALLMODE` I guess) and remove
older files that are not present.
In the case of the extensions this means that the .dlls from the
previous installation will not be touched, as long as the version
embedded in the DLL info didn't change.  This results in the installer
no longer requesting Windows Explorer to restart, which is a big plus :D

I also changed the REINSTALLMODE to `dmus` to allow downgrades as well.

With this change, the request to restart Windows Explorer should
hopefully happen only once an installation was made using an MSI that
contains this change.  Further updates will only request a restart if
the DLL version of these extensions change...

See also:
  - https://learn.microsoft.com/en-us/windows/win32/msi/major-upgrades
  - https://docs.firegiant.com/wix/schema/wxs/majorupgrade/#attributes:~:text=Schedule

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-30 09:40:29 +02:00
Matthieu Gallien
67fc985804 fix(msi): use standard replace mode for MSI installer
shoudl enable replacing files during install happen only when needed
instead of always

will need to take care of migration from older releases

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-30 09:40:29 +02:00
Jyrki Gadinger
74e995336b fix(AppImage): bundle client translations
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-30 09:39:22 +02:00
Jyrki Gadinger
f8f1d27d19 fix(msi): allow custom installation directory
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-15 14:36:02 +00:00
Jyrki Gadinger
bb7dde19a3 fix: move array to correct value in dict
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-07 15:39:03 +02:00
Claudio Cambra
48186f1363 fix(mac-crafter): Work around broken consecutive shell integration builds
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-04-04 13:32:43 +00:00
Jyrki Gadinger
042fc1544c fix(mac): bump deployment target to 12.0
Qt 6.8 now requires macOS 12.0 as per https://doc.qt.io/qt-6.8/macos.html

for comparison, Qt 6.7 supported 11.0 and newer: https://doc.qt.io/qt-6.7/macos.html

also update the Packages project to refuse to install on anything older
than Monterey (12.0)

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-04 11:48:44 +00:00
István Váradi
ac0553f405 Fix version detection by the Ubuntu/Debian build script
Signed-off-by: István Váradi <ivaradi@varadiistvan.hu>
2025-03-13 01:53:18 +00:00
István Váradi
ef1fc3caa8 Add Ubuntu Plucky
Signed-off-by: István Váradi <ivaradi@varadiistvan.hu>
2025-01-29 10:42:45 +01:00
Jyrki Gadinger
868e233131
replace drone PR appimage setup with GitHub Actions
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-01-24 09:08:02 +01:00
Jyrki Gadinger
9411837b6c
modify appimage build script to work with an EL8 base
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-01-24 09:07:56 +01:00
Claudio Cambra
d16efb0727 mac-crafter: Apply code-signing procedure on Sparkle as recommended by Sparkle docs
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-01-15 09:21:19 +01:00
Claudio Cambra
51ffdb2a53 mac-crafter: Update Sparkle version to 2.6.4
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-01-15 09:21:19 +01:00
Claudio Cambra
582beeec6c Close isExecutable command outpipe file handle after use
Prevents exhaustion of fds

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-12-10 08:52:37 +01:00
Claudio Cambra
154cb1cdc6 mac-crafter: Only attempt sparkle codesign if it exists in the app bundle
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-12-09 09:08:58 +01:00
Claudio Cambra
f3e4fe9846 mac-crafter: Check if path to trecursively codesign exists and throw error if it doesn't
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-12-09 09:08:58 +01:00
cmuck
410091ce85 Fix login regression on linux
Signed-off-by: cmuck <cmuckmuck@gmail.com>
2024-11-22 11:13:28 +01:00
cmuck
71163b77a4 Fix login regression on linux
Signed-off-by: cmuck <cmuckmuck@gmail.com>
2024-11-22 11:13:28 +01:00
Claudio Cambra
bd7c78300a
Skip main executable during first binary codesign round
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-22 02:30:04 +08:00
Claudio Cambra
cc37aa14bc
Add ability to skip certain files in recursive codesign
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-22 02:29:49 +08:00
Claudio Cambra
07d6456d5b
Ensure we sign the app bundle's main executable last
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-22 00:36:25 +08:00
Claudio Cambra
d4b9405870
Only define enumeratedItemPath once
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-22 00:36:12 +08:00
Claudio Cambra
8d01462c80
Ensure path passed to codesigning is absolute when using mac-crafter codesign
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 23:09:13 +08:00
Claudio Cambra
119883965a
Do not take current dir pth for filemanager for recursive codesign executable path check
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 23:08:38 +08:00
Claudio Cambra
a8c0eca6ba
Do not do final bundle codesign
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 18:47:32 +08:00
Claudio Cambra
e8ac221769
Do not rely on FileManager's isExecutableFile, check manually for Mach-O executable type
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 18:47:32 +08:00
Claudio Cambra
92f0cd96ef
Allow using an external task for running commands in mac-crafter run command
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 18:46:59 +08:00
Claudio Cambra
da581e2b0e
Do not treat bundles as executables in codesign check
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 16:24:52 +08:00
Claudio Cambra
87a5b245fe Do a codesign of the app bundle itself as final step
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 13:18:20 +08:00
Claudio Cambra
2ea991228e Also sign executables during recursive codesign
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 13:18:20 +08:00
Claudio Cambra
16c177cf4d Do not do deep codesign as default
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-21 13:18:20 +08:00
Claudio Cambra
0239ee3eae Escape code sign entitlement paths in mac crafter
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 18:16:51 +08:00
Claudio Cambra
4d15f47e09
Fix codesign path for app bundle main binaries
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 18:03:33 +08:00
Claudio Cambra
f5d91953bf
Use recursive codesign instead of broken wildcard path for sparkle Autoupdate app
Broken when we starting escaping paths in codesign arguments

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 16:34:09 +08:00
Claudio Cambra
7c171b8e20
Also add options to recursive codesign function
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 16:33:36 +08:00
Claudio Cambra
f6eb3f9b79
Also escape codesign call with saving entitlements
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 16:11:32 +08:00
Claudio Cambra
533b04baf9 Ensure paths are passed properly escaped into codesign command in mac-crafter
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-20 12:13:25 +08:00
Camila Ayres
a82b0e96cc Update url to dowload linuxdeploy-plugin-qt tool latest version.
Fix https://github.com/linuxdeploy/linuxdeploy-plugin-qt/pull/186 for Qt6 has been released.

Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-11-19 14:07:42 +01:00
Claudio Cambra
62bc088ea1 Add option to create developer builds of client via mac crafter
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-11-15 13:32:30 +08:00
Camila Ayres
817a161211 Update share link for AppImage tool.
Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-10-31 11:23:39 +01:00
Camila Ayres
d24f3e1220
Fix the list of steps order.
Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-10-08 14:35:01 +02:00
Claudio Cambra
aaa6dad3a5 Match the universal build instructions with what we actually do with mac-crafter and make_universal
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-10-08 14:32:37 +02:00
Claudio Cambra
a2f07866f8 Clarify architecture setting has automatic default in mac-crafter readme
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-10-08 14:32:37 +02:00
Claudio Cambra
7b53352969 Simplify build instructions in mac-crafter README
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-10-08 14:32:37 +02:00
Camila Ayres
6acdee0813 Add README about mac-crafter.
Signed-off-by: Camila Ayres <hello@camilasan.com>
2024-10-08 14:32:37 +02:00
Claudio Cambra
89b13285fe Codesign webengineprocess with correct entitlements on macOS with mac crafter
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-09-30 11:54:10 +08:00
Claudio Cambra
0fe925f978 Add support for the new craft blueprint options relating to override server urls
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2024-09-29 23:16:20 +08:00