bloxstrap/Bloxstrap/Models/SettingTasks/ExtractIconsTask.cs

43 lines
1.3 KiB
C#

using System.Reflection;
using System.Windows.Markup;
namespace Bloxstrap.Models.SettingTasks
{
public class ExtractIconsTask : BoolBaseTask
{
public ExtractIconsTask() : base("ExtractIcons")
{
OriginalState = Directory.Exists(Paths.Icons);
}
public override void Execute()
{
if (NewState)
{
Directory.CreateDirectory(Paths.Icons);
var assembly = Assembly.GetExecutingAssembly();
var resourceNames = assembly.GetManifestResourceNames().Where(x => x.EndsWith(".ico"));
foreach (string name in resourceNames)
{
string path = Path.Combine(Paths.Icons, name.Replace("Bloxstrap.Resources.", ""));
var stream = assembly.GetManifestResourceStream(name)!;
using var memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
Filesystem.AssertReadOnly(path);
File.WriteAllBytes(path, memoryStream.ToArray());
}
}
else if (Directory.Exists(Paths.Icons))
{
Directory.Delete(Paths.Icons, true);
}
OriginalState = NewState;
}
}
}