From 24bc2defd06bf6c873bd79dea32b54165dd741ff Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Thu, 7 Nov 2024 23:05:55 +0100 Subject: [PATCH] Added support for the Agent MSI --- .gitignore | 3 +- .../Duplicati.Agent/Duplicati.Agent.csproj | 1 + ReleaseBuilder/.vscode/launch.json | 2 + ReleaseBuilder/Build/Command.CreatePackage.cs | 13 ++- ReleaseBuilder/Build/Command.cs | 20 ++++- ReleaseBuilder/Program.cs | 4 +- .../Resources/Windows/Agent/Duplicati.wxs | 81 ++++++++++++++++++ .../Resources/Windows/{ => Agent}/License.rtf | 0 .../{ => Agent}/Resources/InstallerLarge.bmp | Bin .../{ => Agent}/Resources/InstallerSmall.bmp | Bin .../Resources/Windows/Agent/Shortcuts.wxs | 29 +++++++ .../Resources/Windows/Agent/UpgradeData.wxi | 17 ++++ .../Windows/{ => TrayIcon}/Duplicati.wxs | 0 .../Resources/Windows/TrayIcon/License.rtf | 21 +++++ .../TrayIcon/Resources/InstallerLarge.bmp | Bin 0 -> 615320 bytes .../TrayIcon/Resources/InstallerSmall.bmp | Bin 0 -> 114432 bytes .../Windows/{ => TrayIcon}/Shortcuts.wxs | 0 .../Windows/{ => TrayIcon}/UpgradeData.wxi | 2 +- .../WixUIExtension/ui/InstallDirDlg.wxs | 34 ++++++++ .../WixUIExtension/ui/InvalidDirDlg.wxs | 15 ++++ .../Windows/WixUIExtension/ui/README.md | 13 +-- 21 files changed, 239 insertions(+), 16 deletions(-) create mode 100644 ReleaseBuilder/Resources/Windows/Agent/Duplicati.wxs rename ReleaseBuilder/Resources/Windows/{ => Agent}/License.rtf (100%) rename ReleaseBuilder/Resources/Windows/{ => Agent}/Resources/InstallerLarge.bmp (100%) rename ReleaseBuilder/Resources/Windows/{ => Agent}/Resources/InstallerSmall.bmp (100%) create mode 100644 ReleaseBuilder/Resources/Windows/Agent/Shortcuts.wxs create mode 100644 ReleaseBuilder/Resources/Windows/Agent/UpgradeData.wxi rename ReleaseBuilder/Resources/Windows/{ => TrayIcon}/Duplicati.wxs (100%) create mode 100644 ReleaseBuilder/Resources/Windows/TrayIcon/License.rtf create mode 100644 ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerLarge.bmp create mode 100644 ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerSmall.bmp rename ReleaseBuilder/Resources/Windows/{ => TrayIcon}/Shortcuts.wxs (100%) rename ReleaseBuilder/Resources/Windows/{ => TrayIcon}/UpgradeData.wxi (87%) create mode 100644 ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InstallDirDlg.wxs create mode 100644 ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InvalidDirDlg.wxs diff --git a/.gitignore b/.gitignore index 377e8b38d..769557ef3 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,5 @@ changelog-news.txt .vs/ /publish/ ReleaseBuilder/build-temp/ -ReleaseBuilder/Resources/Windows/binfiles.wxs +ReleaseBuilder/Resources/Windows/TrayIcon/binfiles.wxs +ReleaseBuilder/Resources/Windows/Agent/binfiles.wxs diff --git a/Executables/net8/Duplicati.Agent/Duplicati.Agent.csproj b/Executables/net8/Duplicati.Agent/Duplicati.Agent.csproj index e07476bba..a114f1cb4 100644 --- a/Executables/net8/Duplicati.Agent/Duplicati.Agent.csproj +++ b/Executables/net8/Duplicati.Agent/Duplicati.Agent.csproj @@ -5,6 +5,7 @@ net8.0 The Duplicati Agent implementation Copyright © 2024 Team Duplicati, MIT license + ..\..\..\Duplicati\GUI\Duplicati.GUI.TrayIcon\Duplicati.ico diff --git a/ReleaseBuilder/.vscode/launch.json b/ReleaseBuilder/.vscode/launch.json index 1aa621df8..8c9c81e05 100644 --- a/ReleaseBuilder/.vscode/launch.json +++ b/ReleaseBuilder/.vscode/launch.json @@ -27,6 +27,8 @@ "--targets", "win-x86-gui.msi", "--targets", "win-x64-gui.msi", "--targets", "win-x64-gui.zip", + "--targets", "win-x64-agent.msi", + "--targets", "win-arm64-agent.msi", "--targets", "linux-x64-gui.zip", "--targets", "linux-arm64-gui.zip", "--targets", "osx-x64-gui.dmg", diff --git a/ReleaseBuilder/Build/Command.CreatePackage.cs b/ReleaseBuilder/Build/Command.CreatePackage.cs index 8f1a274a2..25abfd5d9 100644 --- a/ReleaseBuilder/Build/Command.CreatePackage.cs +++ b/ReleaseBuilder/Build/Command.CreatePackage.cs @@ -242,6 +242,13 @@ public static partial class Command static async Task BuildMsiPackage(string baseDir, string buildRoot, string msiFile, PackageTarget target, RuntimeConfig rtcfg) { var resourcesDir = Path.Combine(baseDir, "ReleaseBuilder", "Resources", "Windows"); + var resourcesSubDir = Path.Combine(resourcesDir, + target.Interface switch + { + InterfaceType.GUI => "TrayIcon", + InterfaceType.Agent => "Agent", + _ => throw new Exception($"Unsupported interface type: {target.Interface}") + }); var buildTmp = Path.Combine(buildRoot, "tmp-msi"); if (Directory.Exists(buildTmp)) @@ -254,7 +261,7 @@ public static partial class Command if (!sourceFiles.EndsWith(Path.DirectorySeparatorChar)) sourceFiles += Path.DirectorySeparatorChar; - var binFiles = Path.Combine(resourcesDir, "binfiles.wxs"); + var binFiles = Path.Combine(resourcesSubDir, "binfiles.wxs"); if (File.Exists(binFiles)) File.Delete(binFiles); @@ -275,9 +282,9 @@ public static partial class Command "--define", $"HarvestPath={sourceFiles}", "--arch", msiArch, "--output", msiFile, - Path.Combine(resourcesDir, "Shortcuts.wxs"), + Path.Combine(resourcesSubDir, "Shortcuts.wxs"), binFiles, - Path.Combine(resourcesDir, "Duplicati.wxs") + Path.Combine(resourcesSubDir, "Duplicati.wxs") ], workingDirectory: buildRoot); if (rtcfg.UseAuthenticodeSigning) diff --git a/ReleaseBuilder/Build/Command.cs b/ReleaseBuilder/Build/Command.cs index f3609b198..c067539a6 100644 --- a/ReleaseBuilder/Build/Command.cs +++ b/ReleaseBuilder/Build/Command.cs @@ -676,17 +676,29 @@ public static partial class Command regex.Replace(File.ReadAllText(file), $"?v={releaseInfo.Version}") ); - var wixFile = Path.Combine(baseDir, "ReleaseBuilder", "Resources", "Windows", "UpgradeData.wxi"); + var wixFileGUI = Path.Combine(baseDir, "ReleaseBuilder", "Resources", "Windows", "TrayIcon", "UpgradeData.wxi"); File.WriteAllText( - wixFile, + wixFileGUI, Regex.Replace( - File.ReadAllText(wixFile), + File.ReadAllText(wixFileGUI), @"\<\?define ProductVersion\=\""" + versionre + @"\"" \?\>", $"" ) ); - targetfiles.Add(wixFile); + targetfiles.Add(wixFileGUI); + + var wixFileAgent = Path.Combine(baseDir, "ReleaseBuilder", "Resources", "Windows", "Agent", "UpgradeData.wxi"); + File.WriteAllText( + wixFileAgent, + Regex.Replace( + File.ReadAllText(wixFileAgent), + @"\<\?define ProductVersion\=\""" + versionre + @"\"" \?\>", + $"" + ) + ); + + targetfiles.Add(wixFileAgent); return targetfiles; } diff --git a/ReleaseBuilder/Program.cs b/ReleaseBuilder/Program.cs index 7925bfbc3..4b54f5124 100644 --- a/ReleaseBuilder/Program.cs +++ b/ReleaseBuilder/Program.cs @@ -18,8 +18,8 @@ class Program "win-x86-gui.msi", "win-arm64-gui.zip", "win-arm64-gui.msi", - // "win-x64-agent.msi", // Need to add support for building without trayicon + window service support - // "win-arm64-agent.msi", // Need to add support for building without trayicon + window service support + "win-x64-agent.msi", // Missing window service support + "win-arm64-agent.msi", // Missing window service support "win-x64-agent.zip", "win-arm64-agent.zip", diff --git a/ReleaseBuilder/Resources/Windows/Agent/Duplicati.wxs b/ReleaseBuilder/Resources/Windows/Agent/Duplicati.wxs new file mode 100644 index 000000000..649dda182 --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/Agent/Duplicati.wxs @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FORSERVICE = "true" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReleaseBuilder/Resources/Windows/License.rtf b/ReleaseBuilder/Resources/Windows/Agent/License.rtf similarity index 100% rename from ReleaseBuilder/Resources/Windows/License.rtf rename to ReleaseBuilder/Resources/Windows/Agent/License.rtf diff --git a/ReleaseBuilder/Resources/Windows/Resources/InstallerLarge.bmp b/ReleaseBuilder/Resources/Windows/Agent/Resources/InstallerLarge.bmp similarity index 100% rename from ReleaseBuilder/Resources/Windows/Resources/InstallerLarge.bmp rename to ReleaseBuilder/Resources/Windows/Agent/Resources/InstallerLarge.bmp diff --git a/ReleaseBuilder/Resources/Windows/Resources/InstallerSmall.bmp b/ReleaseBuilder/Resources/Windows/Agent/Resources/InstallerSmall.bmp similarity index 100% rename from ReleaseBuilder/Resources/Windows/Resources/InstallerSmall.bmp rename to ReleaseBuilder/Resources/Windows/Agent/Resources/InstallerSmall.bmp diff --git a/ReleaseBuilder/Resources/Windows/Agent/Shortcuts.wxs b/ReleaseBuilder/Resources/Windows/Agent/Shortcuts.wxs new file mode 100644 index 000000000..8204cb98a --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/Agent/Shortcuts.wxs @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ReleaseBuilder/Resources/Windows/Agent/UpgradeData.wxi b/ReleaseBuilder/Resources/Windows/Agent/UpgradeData.wxi new file mode 100644 index 000000000..5cf2fc65a --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/Agent/UpgradeData.wxi @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ReleaseBuilder/Resources/Windows/Duplicati.wxs b/ReleaseBuilder/Resources/Windows/TrayIcon/Duplicati.wxs similarity index 100% rename from ReleaseBuilder/Resources/Windows/Duplicati.wxs rename to ReleaseBuilder/Resources/Windows/TrayIcon/Duplicati.wxs diff --git a/ReleaseBuilder/Resources/Windows/TrayIcon/License.rtf b/ReleaseBuilder/Resources/Windows/TrayIcon/License.rtf new file mode 100644 index 000000000..9b2b7cff7 --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/TrayIcon/License.rtf @@ -0,0 +1,21 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2761 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\froman\fcharset0 TimesNewRomanPSMT;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\paperw12240\paperh15840\margl1440\margr1440\margb1417\margt1417\vieww13140\viewh16360\viewkind1 +\deftab720 +\pard\pardeftab720\ri0\sl380\sa240\partightenfactor0 + +\f0\fs25 \cf0 Copyright (c) 2024 Team Duplicati, https://duplicati.com, hello@duplicati.com +\f1\fs24 \ +\pard\pardeftab720\ri0\sl380\sb240\sa240\partightenfactor0 + +\f0\fs25 \cf0 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +\f1\fs24 \ + +\f0\fs25 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +\f1\fs24 \ + +\f0\fs25 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +\f1\fs24 \ +} \ No newline at end of file diff --git a/ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerLarge.bmp b/ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerLarge.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e4833d4e0fd53875e9287fde6626838e1e2be929 GIT binary patch literal 615320 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 literal 0 HcmV?d00001 diff --git a/ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerSmall.bmp b/ReleaseBuilder/Resources/Windows/TrayIcon/Resources/InstallerSmall.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7ab19a757b3900d0ee49b1e841d0d7dc140f3b91 GIT binary patch literal 114432 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 literal 0 HcmV?d00001 diff --git a/ReleaseBuilder/Resources/Windows/Shortcuts.wxs b/ReleaseBuilder/Resources/Windows/TrayIcon/Shortcuts.wxs similarity index 100% rename from ReleaseBuilder/Resources/Windows/Shortcuts.wxs rename to ReleaseBuilder/Resources/Windows/TrayIcon/Shortcuts.wxs diff --git a/ReleaseBuilder/Resources/Windows/UpgradeData.wxi b/ReleaseBuilder/Resources/Windows/TrayIcon/UpgradeData.wxi similarity index 87% rename from ReleaseBuilder/Resources/Windows/UpgradeData.wxi rename to ReleaseBuilder/Resources/Windows/TrayIcon/UpgradeData.wxi index cdcc78720..714b792ea 100644 --- a/ReleaseBuilder/Resources/Windows/UpgradeData.wxi +++ b/ReleaseBuilder/Resources/Windows/TrayIcon/UpgradeData.wxi @@ -3,7 +3,7 @@ - + diff --git a/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InstallDirDlg.wxs b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InstallDirDlg.wxs new file mode 100644 index 000000000..2bc1bc9a9 --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InstallDirDlg.wxs @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InvalidDirDlg.wxs b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InvalidDirDlg.wxs new file mode 100644 index 000000000..81c87beb9 --- /dev/null +++ b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/InvalidDirDlg.wxs @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/README.md b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/README.md index f1ffed102..f077fd7bb 100644 --- a/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/README.md +++ b/ReleaseBuilder/Resources/Windows/WixUIExtension/ui/README.md @@ -11,10 +11,13 @@ Also, the dialogs were modified to place the buttons as the first items in the d The extra files are: -- [`BrowseDlg.wxs`](./ui/BrowseDlg.wxs) -- [`CustomizeDlg.wxs`](./ui/CustomizeDlg.wxs) -- [`DiskCostDlg.wxs`](./ui/DiskCostDlg.wxs) -- [`LicenseAgreementDlg.wxs`](./ui/LicenseAgreementDlg.wxs) -- [`WixUI_FeatureTree.wxs`](./ui/WixUI_FeatureTree.wxs) +- [`BrowseDlg.wxs`](./BrowseDlg.wxs) +- [`CustomizeDlg.wxs`](./CustomizeDlg.wxs) +- [`DiskCostDlg.wxs`](./DiskCostDlg.wxs) +- [`LicenseAgreementDlg.wxs`](./LicenseAgreementDlg.wxs) +- [`WixUI_FeatureTree.wxs`](./WixUI_FeatureTree.wxs) +- [`WixUI_InstallDir.wxs`](./WixUI_InstallDir.wxs) +- [`InstallDirDlg.wxs`](./InstallDirDlg.wxs) +- [`InvalidDirDlg.wxs`](./InvalidDirDlg.wxs) The files are all licensed under the [MS-RL](https://opensource.org/licenses/ms-rl) license.