Skip to content

Commit 582e6b0

Browse files
Auto update AppImages
1 parent 0df444b commit 582e6b0

File tree

8 files changed

+175
-362
lines changed

8 files changed

+175
-362
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,5 +397,6 @@ FodyWeavers.xsd
397397

398398
# JetBrains Rider
399399
*.sln.iml
400+
.idea/**/workspace.xml
400401

401402
[Ss]etup/[Oo]utput/*

.idea/.idea.MSUScripter/.idea/workspace.xml

Lines changed: 0 additions & 242 deletions
This file was deleted.

MSUScripter/App.axaml.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
using System.Diagnostics;
22
using System.Reflection;
3+
using System.Runtime.Versioning;
4+
using AppImageManager;
35
using Avalonia;
46
using Avalonia.Controls.ApplicationLifetimes;
57
using Avalonia.Markup.Xaml;
68
using Avalonia.Styling;
79
using AvaloniaControls.Controls;
810
using Microsoft.Extensions.DependencyInjection;
911
using MSUScripter.Configs;
12+
using MSUScripter.Models;
1013
using MSUScripter.Views;
1114

1215
namespace MSUScripter;
1316

14-
public partial class App : Application
17+
public class App : Application
1518
{
1619
public static MainWindow MainWindow = null!;
20+
public const string AppId = "org.mattequalscoder.msuscripter";
21+
public const string AppName = "MSU Scripter";
22+
1723
private static readonly string? VersionOverride = null;
1824

1925
public static string Version
@@ -44,4 +50,13 @@ public override void OnFrameworkInitializationCompleted()
4450

4551
base.OnFrameworkInitializationCompleted();
4652
}
53+
54+
[SupportedOSPlatform("linux")]
55+
internal static CreateDesktopFileResponse BuildLinuxDesktopFile()
56+
{
57+
return new DesktopFileBuilder(AppId, AppName)
58+
.AddUninstallAction(Directories.BaseFolder)
59+
.WithMimeType("application/x-msu-scripter-project", "MSU Scripter Project", "*.msup", true)
60+
.Build();
61+
}
4762
}

MSUScripter/MSUScripter.csproj

Lines changed: 61 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,71 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
<PropertyGroup>
3-
<OutputType>WinExe</OutputType>
4-
<TargetFramework>net9.0</TargetFramework>
5-
<Nullable>enable</Nullable>
6-
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
7-
<ApplicationManifest>app.manifest</ApplicationManifest>
8-
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
9-
<ApplicationIcon>MSUScripterIcon.ico</ApplicationIcon>
10-
<PackageIcon>MSUScripterIcon.ico</PackageIcon>
11-
<Version>5.0.0-rc.2</Version>
12-
<RuntimeFrameworkVersion>9.0.0</RuntimeFrameworkVersion>
13-
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
14-
<LangVersion>12</LangVersion>
15-
</PropertyGroup>
2+
<PropertyGroup>
3+
<OutputType>WinExe</OutputType>
4+
<TargetFramework>net9.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
7+
<ApplicationManifest>app.manifest</ApplicationManifest>
8+
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
9+
<ApplicationIcon>MSUScripterIcon.ico</ApplicationIcon>
10+
<PackageIcon>MSUScripterIcon.ico</PackageIcon>
11+
<Version>5.0.0-rc.2</Version>
12+
<RuntimeFrameworkVersion>9.0.0</RuntimeFrameworkVersion>
13+
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
14+
<LangVersion>12</LangVersion>
15+
</PropertyGroup>
1616

1717

18-
<ItemGroup>
19-
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.2" />
20-
<PackageReference Include="Deadpikle.AvaloniaProgressRing" Version="0.10.10" />
21-
<PackageReference Include="K4os.Hash.xxHash" Version="1.0.8" />
22-
<PackageReference Include="MattEqualsCoder.AppImageDesktopFileCreator" Version="0.3.6" />
23-
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
24-
<PackageReference Include="MattEqualsCoder.AvaloniaControls" Version="1.9.1" />
25-
<PackageReference Include="MattEqualsCoder.GitHubReleaseChecker" Version="1.1.3" />
26-
<PackageReference Include="MattEqualsCoder.MSURandomizer.Library" Version="3.2.1" />
27-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.9" />
28-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.9" />
29-
<PackageReference Include="NAudio" Version="2.2.1" />
30-
<PackageReference Include="NAudio.WinMM" Version="2.2.1" />
31-
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="11.5.1" />
32-
<PackageReference Include="ReactiveUI.Fody" Version="19.5.41" />
33-
<PackageReference Include="Serilog" Version="4.3.0" />
34-
<PackageReference Include="Serilog.Extensions.Hosting" Version="9.0.0" />
35-
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
36-
<PackageReference Include="Serilog.Sinks.Debug" Version="3.0.0" />
37-
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
38-
<PackageReference Include="SharpZipLib" Version="1.4.2" />
39-
<PackageReference Include="SoundFlow" Version="1.1.1" />
40-
<PackageReference Include="System.Management" Version="9.0.9" />
41-
<PackageReference Include="TagLibSharp" Version="2.3.0" />
42-
</ItemGroup>
18+
<ItemGroup>
19+
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.2" />
20+
<PackageReference Include="Deadpikle.AvaloniaProgressRing" Version="0.10.10" />
21+
<PackageReference Include="K4os.Hash.xxHash" Version="1.0.8" />
22+
<PackageReference Include="MattEqualsCoder.AppImageManager" Version="0.1.2" />
23+
<!--Condition
24+
below is needed to remove Avalonia.Diagnostics package from build output in Release
25+
configuration.-->
26+
<PackageReference Include="MattEqualsCoder.AvaloniaControls" Version="1.9.1" />
27+
<PackageReference Include="MattEqualsCoder.GitHubReleaseChecker" Version="1.1.3" />
28+
<PackageReference Include="MattEqualsCoder.MSURandomizer.Library" Version="3.2.1" />
29+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.9" />
30+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.9" />
31+
<PackageReference Include="NAudio" Version="2.2.1" />
32+
<PackageReference Include="NAudio.WinMM" Version="2.2.1" />
33+
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="11.5.1" />
34+
<PackageReference Include="ReactiveUI.Fody" Version="19.5.41" />
35+
<PackageReference Include="Serilog" Version="4.3.0" />
36+
<PackageReference Include="Serilog.Extensions.Hosting" Version="9.0.0" />
37+
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
38+
<PackageReference Include="Serilog.Sinks.Debug" Version="3.0.0" />
39+
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
40+
<PackageReference Include="SharpZipLib" Version="1.4.2" />
41+
<PackageReference Include="SoundFlow" Version="1.1.1" />
42+
<PackageReference Include="System.Management" Version="9.0.9" />
43+
<PackageReference Include="TagLibSharp" Version="2.3.0" />
44+
</ItemGroup>
4345

4446

45-
<ItemGroup>
46-
<Compile Update="Controls\MainWindow.axaml.cs">
47-
<DependentUpon>MainWindow.axaml</DependentUpon>
48-
<SubType>Code</SubType>
49-
</Compile>
50-
</ItemGroup>
51-
52-
<ItemGroup>
53-
<AvaloniaResource Include="Assets\MSUScripterIcon.ico" />
54-
<EmbeddedResource Include="Assets\**" />
55-
</ItemGroup>
47+
<ItemGroup>
48+
<Compile Update="Controls\MainWindow.axaml.cs">
49+
<DependentUpon>MainWindow.axaml</DependentUpon>
50+
<SubType>Code</SubType>
51+
</Compile>
52+
</ItemGroup>
5653

54+
<ItemGroup>
55+
<AvaloniaResource Include="Assets\MSUScripterIcon.ico" />
56+
<EmbeddedResource Include="Assets\**" />
57+
</ItemGroup>
5758

5859

59-
<ItemGroup>
60-
<Reference Include="Avalonia.Themes.Simple">
61-
<HintPath>C:\Users\matte\.nuget\packages\avalonia.themes.simple\11.0.0\lib\net6.0\Avalonia.Themes.Simple.dll</HintPath>
62-
</Reference>
63-
</ItemGroup>
60+
<ItemGroup>
61+
<Reference Include="Avalonia.Themes.Simple">
62+
<HintPath>
63+
C:\Users\matte\.nuget\packages\avalonia.themes.simple\11.0.0\lib\net6.0\Avalonia.Themes.Simple.dll</HintPath>
64+
</Reference>
65+
</ItemGroup>
6466

6567

66-
67-
<ItemGroup>
68-
<None Remove="msu-randomizer-settings.yaml" />
69-
</ItemGroup>
70-
</Project>
68+
<ItemGroup>
69+
<None Remove="msu-randomizer-settings.yaml" />
70+
</ItemGroup>
71+
</Project>

MSUScripter/Program.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22
using System;
33
using System.Collections.Generic;
44
using System.IO;
5-
using System.Reflection;
6-
using System.Runtime.Versioning;
75
// ReSharper disable once RedundantUsingDirective
86
using System.Linq;
97
using System.Threading;
108
using System.Threading.Tasks;
11-
using AppImageDesktopFileCreator;
129
using Avalonia.Threading;
1310
using AvaloniaControls.Controls;
1411
using AvaloniaControls.Extensions;
@@ -164,15 +161,6 @@ await Dispatcher.UIThread.Invoke(async () =>
164161
});
165162
}
166163

167-
[SupportedOSPlatform("linux")]
168-
internal static CreateDesktopFileResponse BuildLinuxDesktopFile()
169-
{
170-
return new DesktopFileBuilder("org.mattequalscoder.msuscripter", "MSU Scripter")
171-
.AddUninstallAction(Directories.BaseFolder)
172-
.WithMimeType("application/x-msu-scripter-project", "MSU Scripter Project", "*.msup", true)
173-
.Build();
174-
}
175-
176164
#if DEBUG
177165
private static string LogPath => Path.Combine(Directories.LogFolder, "msu-scripter-debug_.log");
178166
#else

MSUScripter/Services/ControlServices/MainWindowService.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
using System;
22
using System.IO;
33
using System.Linq;
4-
using System.Reflection;
54
using System.Runtime.Versioning;
65
using System.Threading.Tasks;
7-
using AppImageDesktopFileCreator;
86
using AvaloniaControls.ControlServices;
97
using AvaloniaControls.Services;
108
using GitHubReleaseChecker;
@@ -244,30 +242,35 @@ private bool CleanDirectory(string path, TimeSpan? timeout = null)
244242
return isEmpty;
245243
}
246244

247-
public async Task<string> CheckForNewRelease()
245+
public async Task<(string ReleaseUrl, string? DownloadUrl)?> CheckForNewRelease()
248246
{
249247
if (!settings.CheckForUpdates)
250248
{
251-
return string.Empty;
249+
return null;
252250
}
253251

254252
var newerGitHubRelease = await gitHubReleaseCheckerService.GetGitHubReleaseToUpdateToAsync("MattEqualsCoder",
255-
"MSUScripter", App.Version, settings.PromptOnPreRelease);
253+
"MSUScripter", App.Version, false);
256254

257255
if (newerGitHubRelease != null)
258256
{
259-
return newerGitHubRelease.Url;
257+
if (OperatingSystem.IsLinux())
258+
{
259+
return (newerGitHubRelease.Url,
260+
newerGitHubRelease.Asset.FirstOrDefault(x => x.Url.ToLower().EndsWith(".appimage"))?.Url);
261+
}
262+
return (newerGitHubRelease.Url, null);
260263
}
261264

262-
return string.Empty;
265+
return null;
263266
}
264267

265268
[SupportedOSPlatform("linux")]
266269
public void CreateDesktopFile()
267270
{
268271
ITaskService.Run(() =>
269272
{
270-
var response = Program.BuildLinuxDesktopFile();
273+
var response = App.BuildLinuxDesktopFile();
271274

272275
if (response.Success)
273276
{

0 commit comments

Comments
 (0)