diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index ac18f37d..3c6a38f6 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -128,12 +128,16 @@ jobs:
-p:Version=${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }}
-p:CSharpier_Bypass=true
-p:EncryptionSalt=${{ secrets.ENCRYPTION_SALT || 'HimalayanPinkSalt' }}
- -p:PublishMacOSBundle=${{ startsWith(matrix.rid, 'osx-') }}
--output ${{ matrix.app }}/bin/publish/
--configuration Release
--runtime ${{ matrix.rid }}
--self-contained
+ - name: Rename macOS bundle
+ if: ${{ startsWith(matrix.rid, 'osx-') && matrix.app == 'DiscordChatExporter.Gui' }}
+ run: >
+ mv ${{ matrix.app }}/bin/publish/DCE.app ${{ matrix.app }}/bin/publish/${{ matrix.asset }}.app
+
- name: Upload app binaries
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4c1bb349..3ac66b75 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -20,6 +20,7 @@
+
diff --git a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj
index 11c78eaa..e3bda05b 100644
--- a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj
+++ b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj
@@ -7,6 +7,12 @@
false
+
+ me.tyrrrz.discordchatexporter
+ DCE
+ DiscordChatExporter
+
+
HimalayanPinkSalt
@@ -16,10 +22,6 @@
-
- false
-
-
@@ -34,6 +36,7 @@
+
@@ -46,11 +49,4 @@
-
-
-
-
diff --git a/DiscordChatExporter.Gui/PublishMacOSBundle.csx b/DiscordChatExporter.Gui/PublishMacOSBundle.csx
deleted file mode 100755
index 38e834e9..00000000
--- a/DiscordChatExporter.Gui/PublishMacOSBundle.csx
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/dotnet --
-#:package CliFx
-
-using CliFx;
-using CliFx.Binding;
-using CliFx.Infrastructure;
-
-[Command(Description = "Publishes the GUI app as a macOS .app bundle.")]
-public partial class PublishMacOSBundleCommand : ICommand
-{
- private const string BundleName = "DiscordChatExporter.app";
- private const string AppName = "DiscordChatExporter";
- private const string AppCopyright = "© Oleksii Holub";
- private const string AppIdentifier = "me.Tyrrrz.DiscordChatExporter";
- private const string AppSpokenName = "Discord Chat Exporter";
- private const string AppIconName = "AppIcon";
-
- [CommandOption("publish-dir", Description = "Path to the publish output directory.")]
- public required string PublishDirPath { get; set; }
-
- [CommandOption("icons-file", Description = "Path to the .icns icons file.")]
- public required string IconsFilePath { get; set; }
-
- [CommandOption("full-version", Description = "Full version string (e.g., '1.2.3.4').")]
- public required string FullVersion { get; set; }
-
- [CommandOption("short-version", Description = "Short version string (e.g., '1.2.3').")]
- public required string ShortVersion { get; set; }
-
- public async ValueTask ExecuteAsync(IConsole console)
- {
- // Set up paths
- var publishDirPath = Path.GetFullPath(PublishDirPath);
- var tempDirPath = Path.GetFullPath(
- Path.Combine(publishDirPath, "../publish-macos-app-temp")
- );
-
- // Ensure the temporary directory is clean before use in case a previous run crashed
- if (Directory.Exists(tempDirPath))
- Directory.Delete(tempDirPath, true);
-
- var bundleDirPath = Path.Combine(tempDirPath, BundleName);
- var contentsDirPath = Path.Combine(bundleDirPath, "Contents");
-
- try
- {
- // Copy icons into the .app's Resources folder
- Directory.CreateDirectory(Path.Combine(contentsDirPath, "Resources"));
- File.Copy(
- IconsFilePath,
- Path.Combine(contentsDirPath, "Resources", "AppIcon.icns"),
- true
- );
-
- // Generate the Info.plist metadata file with the app information
- // lang=xml
- var plistContent = $"""
-
-
-
-
- CFBundleDisplayName
- {AppName}
- CFBundleName
- {AppName}
- CFBundleExecutable
- {AppName}
- NSHumanReadableCopyright
- {AppCopyright}
- CFBundleIdentifier
- {AppIdentifier}
- CFBundleSpokenName
- {AppSpokenName}
- CFBundleIconFile
- {AppIconName}
- CFBundleIconName
- {AppIconName}
- CFBundleVersion
- {FullVersion}
- CFBundleShortVersionString
- {ShortVersion}
- NSHighResolutionCapable
-
- CFBundlePackageType
- APPL
-
-
- """;
-
- await File.WriteAllTextAsync(Path.Combine(contentsDirPath, "Info.plist"), plistContent);
-
- // Delete the previous bundle if it exists
- var existingBundlePath = Path.Combine(publishDirPath, BundleName);
- if (Directory.Exists(existingBundlePath))
- Directory.Delete(existingBundlePath, true);
-
- // Move all files from the publish directory into the MacOS directory
- Directory.CreateDirectory(Path.Combine(contentsDirPath, "MacOS"));
- foreach (var entryPath in Directory.GetFileSystemEntries(publishDirPath))
- {
- var destinationPath = Path.Combine(
- contentsDirPath,
- "MacOS",
- Path.GetFileName(entryPath)
- );
-
- if (Directory.Exists(entryPath))
- Directory.Move(entryPath, destinationPath);
- else
- File.Move(entryPath, destinationPath);
- }
-
- // Move the final bundle into the publish directory for upload
- Directory.Move(bundleDirPath, Path.Combine(publishDirPath, BundleName));
- }
- finally
- {
- // Clean up the temporary directory
- if (Directory.Exists(tempDirPath))
- Directory.Delete(tempDirPath, true);
- }
- }
-}
diff --git a/favicon.icns b/favicon.icns
deleted file mode 100644
index 958f7d03..00000000
Binary files a/favicon.icns and /dev/null differ