Commit Graph

734 Commits

Author SHA1 Message Date
Jyrki Gadinger
b598f48ce2 fix(AppImage): bundle client translations
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-18 18:23:38 +02:00
Jyrki Gadinger
1001ad10e1 feat(mac-crafter): retry code-signing attempts
This step sometimes fails with an error such as: "A timestamp was
expected but was not found.".  Any code-signing errors will result in
the notarisation step to fail.

Apparently this might be due to intermittent network issues.  Let's just
retry codesigning a couple of times in the case it fails ...

See also: https://developer.apple.com/documentation/security/resolving-common-notarization-issues#Include-a-secure-timestamp

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-16 11:03:23 +02:00
Jyrki Gadinger
a6e9b6fcf0 feat(mac-crafter): also clone KDE blueprints, set a specific git ref for blueprint repos
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-14 12:15:46 +02:00
Jyrki Gadinger
d28b8e325d
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>
2025-05-13 17:21:01 +02:00
Jyrki Gadinger
59f3e774ad
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-13 17:18:40 +02:00
Jyrki Gadinger
532c5dfdeb
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-13 17:18:40 +02:00
Matthieu Gallien
a73733b146
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-13 17:18:39 +02:00
Jyrki Gadinger
d458c2c620 chore: remove never used crashreporter
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-05-08 09:52:53 +02:00
Andy Scherzinger
5fe94ea149 docs(reuse): Migrate to SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-05-07 09:28:53 +02:00
Andy Scherzinger
7655efa230 docs(reuse): Migrate to SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-05-06 09:49:30 +02:00
Jyrki Gadinger
c498cdb7b8 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-06 09:45:01 +02:00
Claudio Cambra
4b6df246d2 feat(mac-crafter): Use our default entitlements file during default mac-crafter build run
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-06 09:43:55 +02:00
Claudio Cambra
957bf580cc feat(macOS): Add entitlements file
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-06 09:43:55 +02:00
Claudio Cambra
7b3099fc44 feat(mac-crafter): Add entitlements path option to codesign command
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-06 09:43:55 +02:00
Claudio Cambra
5957169f73 feat(mac-crafter): Add ability to codesign with an entitlements file
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-06 09:43:55 +02:00
Andy Scherzinger
49038ade94
docs(reuse): Migrate to SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-04-25 17:27:21 +02:00
Andy Scherzinger
00994aa9e8
docs(reuse): Migrate to SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-04-16 15:19:26 +02:00
Jyrki Gadinger
88d62aed40 fix(msi): allow custom installation directory
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-15 16:18:52 +02:00
Jyrki Gadinger
e6c9c5477a fix: move array to correct value in dict
Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-07 14:56:42 +02:00
Claudio Cambra
0ac8eefa52 fix(mac-crafter): Work around broken consecutive shell integration builds
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-04-04 15:32:16 +02:00
Jyrki Gadinger
2bbbacb8dc 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 12:28:04 +02:00
Jyrki Gadinger
a6a17e324a feat: build installer with translations for DE, FR, IT, ES
building all the translated installers takes about ~1 minute each, so
keep that in mind when adding extra translations ...

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-04 11:33:20 +02:00
Jyrki Gadinger
d2474d9f45 feat: build translated MSI installer
the base translations come from WixUI itself

There are still some untranslated strings in Nextcloud.wxs, we need to
take care of them at a later point.  As a first step this is good
enough.

This commit serves as a proof-of-concept, the languages I used here will
change depending on what we want to support.

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-04-04 11:33:20 +02:00
Claudio Cambra
6735288308
feat(mac-crafter): Improve readme
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-04-03 15:38:24 +08:00
István Váradi
1026c56f5f Fix version detection by the Ubuntu/Debian build script
Signed-off-by: István Váradi <ivaradi@varadiistvan.hu>
2025-03-13 00:09:24 +08:00
Claudio Cambra
2d40ab607b mac-crafter: Improve dmg window aesthetics
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-03-07 10:35:47 +01:00
Claudio Cambra
960dd9db9a mac-crafter: Only try to install create-dmg in command run
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-03-07 10:35:47 +01:00
Claudio Cambra
31c5ccde85 mac-crafter: Add command to create DMGs for app bundle
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-03-07 10:35:47 +01:00
Claudio Cambra
92223f8107 mac-crafter: Add DMG creation procedure
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-03-07 10:35:47 +01: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