diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 112c708..9131e6f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,5 +1,5 @@
-name: MSBuild
-on: [push]
+name: Build
+on: [push, pull_request, workflow_dispatch]
jobs:
build:
@@ -7,16 +7,9 @@ jobs:
runs-on: windows-latest
steps:
- - uses: actions/checkout@master
-
- - name: Add msbuild to PATH
- uses: microsoft/setup-msbuild@v1.1
-
- - name: Setup NuGet
- uses: NuGet/setup-nuget@v1.1.1
+ - uses: actions/checkout@v4
- - name: Restore NuGet packages
- run: nuget restore
-
- - name: Build app for release
- run: msbuild WinToLinux.sln -p:Configuration=Release
+ - uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '8.0.x'
+ - run: dotnet build
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 62f0ae8..d591afa 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -11,31 +11,46 @@ jobs:
name: Upload Release Asset
runs-on: windows-latest
steps:
- - uses: actions/checkout@master
+ - uses: actions/checkout@v4
- - name: Setup MSBuild.exe
- uses: warrenbuckley/Setup-MSBuild@v1
+ - name: Setup .NET SDK
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: '8.x'
- - name: MSBuild
- run: msbuild WinToLinux.sln /property:Configuration=Release
+ - name: Build solution
+ run: dotnet build
+
+ - name: Publish app
+ run: |
+ dotnet publish WinToLinux.slnx -p:PublishSingleFile=true -c Release --sc false --arch x64
+ dotnet publish WinToLinux.slnx -p:PublishSingleFile=true -c Release --sc false --arch x86
+ dotnet publish WinToLinux.slnx -p:PublishSingleFile=true -c Release --sc false --arch arm64
+
+ - name: Zip published output
+ run: |
+ Compress-Archive -Path ./bin/Release/*/win-x64/publish -DestinationPath WinToLinux_x64.zip
+ Compress-Archive -Path ./bin/Release/*/win-x86/publish -DestinationPath WinToLinux_x86.zip
+ Compress-Archive -Path ./bin/Release/*/win-arm64/publish -DestinationPath WinToLinux_arm64.zip
+
+ - name: Rename .exe output
+ run: |
+ New-Item -ItemType Directory -Force -Path artifacts
+ Move-Item -Path ./bin/Release/*/win-x64/publish/WinToLinux.exe -Destination ./artifacts/WinToLinux-x64.exe
+ Move-Item -Path ./bin/Release/*/win-x86/publish/WinToLinux.exe -Destination ./artifacts/WinToLinux-x86.exe
+ Move-Item -Path ./bin/Release/*/win-arm64/publish/WinToLinux.exe -Destination ./artifacts/WinToLinux-arm64.exe
+ shell: pwsh
- - name: Create Release
- id: create_release
- uses: actions/create-release@v1.0.0
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ github.ref }}
- release_name: Release ${{ github.ref }}
- draft: false
- prerelease: false
- name: Upload Release Asset
- id: upload-release-asset
- uses: actions/upload-release-asset@v1.0.1
+ uses: softprops/action-gh-release@v2
+ with:
+ files: |
+ ./artifacts/WinToLinux-x64.exe
+ ./artifacts/WinToLinux-x86.exe
+ ./artifacts/WinToLinux-arm64.exe
+ WinToLinux_x64.zip
+ WinToLinux_x86.zip
+ WinToLinux_arm64.zip
+ generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
- asset_path: ./bin/Release/WinToLinux.exe
- asset_name: WinToLinux.exe
- asset_content_type: application/octet-stream
diff --git a/App.config b/App.config
new file mode 100644
index 0000000..49cc43e
--- /dev/null
+++ b/App.config
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index 287e0db..ce66166 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,68 +1,67 @@
-using Microsoft.Win32.TaskScheduler;
-using System;
+using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
+using System.Reflection;
using System.Text.RegularExpressions;
using System.Windows.Forms;
+using Microsoft.Win32.TaskScheduler;
namespace MyTrayApp
{
- public class SysTrayApp : Form
+ public partial class SysTrayApp : Form
{
[STAThread]
public static void Main()
{
+ Application.EnableVisualStyles();
+ Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.Run(new SysTrayApp());
}
private readonly NotifyIcon trayIcon;
- private readonly ContextMenu trayMenu;
- private readonly string appName = "WinToLinux";
+ private readonly ContextMenuStrip trayMenu;
+ private const string appName = "WinToLinux";
- List uefi = new List();
- List uuid = new List();
- string bootsequence;
- string currentValue;
- int shift;
- readonly Regex regexUUID = new Regex("^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$");
+ private readonly List uefi = [];
+ private readonly List uuid = [];
+ private readonly List bootOptions = [];
+ private string bootSequence;
+ private string currentValue;
+ private int shift;
+ private readonly int bootOptionsTrayStartIndex;
+
+ private readonly ToolStripMenuItem startButton = new("Start with system");
+ private readonly ToolStripMenuItem rebootToButton = new("Reboot now to...");
+
+ [GeneratedRegex("^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$")]
+ private static partial Regex UUIDRegEx();
public SysTrayApp()
{
- GetMenuItems();
+ // Create a simple tray menu with only one item.
+ trayMenu = new ContextMenuStrip();
+ trayMenu.Items.Add("Settings").Enabled = false;
+ trayMenu.Items.Add(new ToolStripSeparator());
- currentValue = bootsequence ?? uuid.First();
- shift = uuid.Count() - uefi.Count();
+ startButton.Checked = IsTaskEnabled();
+ startButton.Click += OnRegisterInStartup;
+ trayMenu.Items.Add(startButton);
- // Create a simple tray menu with only one item.
- trayMenu = new ContextMenu();
- trayMenu.MenuItems.Add("Settings").Enabled = false;
- trayMenu.MenuItems.Add("-");
- trayMenu.MenuItems.Add("Start with system", OnRegisterInStartup).Checked = isTaskEnable();
- trayMenu.MenuItems.Add("-");
- trayMenu.MenuItems.Add("Reboot to...").Enabled = false;
- trayMenu.MenuItems.Add("-");
+ trayMenu.Items.Add(new ToolStripSeparator());
+ trayMenu.Items.Add(rebootToButton);
+ trayMenu.Items.Add(new ToolStripSeparator());
- foreach (var pos in uefi.Select((value, i) => new { i, value }))
- {
- MenuItem item = new MenuItem
- {
- Checked = uuid[pos.i + shift] == currentValue,
- Tag = uuid[pos.i + shift],
- Text = pos.value
- };
- item.Click += OnMenuClick;
- trayMenu.MenuItems.Add(item);
- }
+ bootOptionsTrayStartIndex = trayMenu.Items.Count;
+ RefreshMenuItems();
- trayMenu.MenuItems.Add("-");
- trayMenu.MenuItems.Add("Reboot system", OnReboot);
- trayMenu.MenuItems.Add("-");
- trayMenu.MenuItems.Add("Exit", OnExit);
+ trayMenu.Items.Add(new ToolStripSeparator());
+ trayMenu.Items.Add("Reboot system", null, OnReboot);
+ trayMenu.Items.Add(new ToolStripSeparator());
+ trayMenu.Items.Add("Exit", null, OnExit);
- // Create a tray icon. In this example we use a
- // standard system icon for simplicity, but you
- // can of course use your own custom icon too.
+ // Create a tray icon.
trayIcon = new NotifyIcon
{
@@ -70,9 +69,13 @@ public SysTrayApp()
Icon = WinToLinux.Properties.Resources.WtL,
// Add menu to tray icon and show it.
- ContextMenu = trayMenu,
+ ContextMenuStrip = trayMenu,
Visible = true
};
+ trayIcon.ContextMenuStrip.Opening += (_, _) =>
+ {
+ RefreshMenuItems();
+ };
}
@@ -81,35 +84,100 @@ private void OnExit(object sender, EventArgs e)
Application.Exit();
}
- private void OnMenuClick(object sender, EventArgs e)
+ private void SetNextBoot(object sender, EventArgs _)
{
- string UUID = (sender as MenuItem).Tag.ToString();
- string command = "/C bcdedit.exe /set {fwbootmgr} bootsequence " + UUID + " /addfirst";
- Console.WriteLine(command);
-
- LaunchCMD(command);
+ if (sender is not ToolStripMenuItem clickedItem || clickedItem.Tag is not string uuid)
+ return;
- uuid = new List();
- uefi = new List();
+ // Set the boot sequence
+ string args = $"/Set {{fwbootmgr}} BootSequence {uuid} /AddFirst";
+ var psi = new ProcessStartInfo
+ {
+ FileName = "bcdedit",
+ Arguments = args,
+ CreateNoWindow = true
+ };
+ Process.Start(psi);
+ Console.WriteLine("bcdedit" + args);
- LaunchCMD("/C bcdedit /enum firmware");
+ // Update the radio button selection
+ SetRadioButtonSelection(uuid);
- currentValue = bootsequence ?? uuid.First();
- shift = uuid.Count() - uefi.Count();
- foreach (var pos in uefi.Select((value, i) => new { i, value }))
+ // Update the current value
+ currentValue = uuid;
+ }
+ private void SetRadioButtonSelection(string selectedUUID)
+ {
+ // First, uncheck all boot option menu items
+ foreach (var item in bootOptions)
{
- trayMenu.MenuItems[pos.i + 6].Checked = uuid[pos.i + shift] == currentValue;
+ if (item.Tag is string itemUUID)
+ {
+ item.Checked = (itemUUID == selectedUUID);
+ }
}
}
+ private void RefreshMenuItems()
+ {
+ uuid.Clear();
+ uefi.Clear();
+ if (bootOptions.Count > 0)
+ {
+ bootOptions.ForEach(item => trayMenu.Items.Remove(item));
+ bootOptions.Clear();
+ rebootToButton.DropDownItems.Clear();
+ }
+
+ GetMenuItems();
+
+ currentValue = bootSequence ?? uuid.FirstOrDefault(string.Empty);
+ shift = uuid.Count - uefi.Count;
+
+ foreach (var (value, i) in uefi.Select((value, i) => (value, i)))
+ {
+ string itemTag = i + shift < uuid.Count ? uuid[i + shift] : string.Empty;
+
+ var bootItem = new ToolStripMenuItem
+ {
+ CheckOnClick = true,
+ Tag = itemTag,
+ Text = value
+ };
+ bootItem.Click += SetNextBoot;
+
+ bootOptions.Add(bootItem);
+
+ var immediateItem = new ToolStripMenuItem
+ {
+ Tag = itemTag,
+ Text = value
+ };
+ immediateItem.Click += (sender, _) =>
+ {
+ SetNextBoot(sender, _);
+ OnReboot(sender, _);
+ };
+
+ rebootToButton.DropDownItems.Add(immediateItem);
+ }
- private void CreateTask()
+ // Update radio button selection
+ SetRadioButtonSelection(currentValue);
+ for (int i = 0; i < bootOptions.Count; i++)
+ {
+ trayMenu.Items.Insert(bootOptionsTrayStartIndex + i, bootOptions[i]);
+ }
+ }
+ private static void CreateTask()
{
- using (TaskService ts = new TaskService())
+ try
{
- TaskDefinition td = ts.NewTask();
+ using var ts = new TaskService();
+ var td = ts.NewTask();
+ string currentUser = $"{Environment.UserDomainName}\\{Environment.UserName}";
td.RegistrationInfo.Description = "WinToLinux. Start on boot";
- td.Triggers.Add(new LogonTrigger());
+ td.Triggers.Add(new LogonTrigger() { UserId = currentUser });
td.Actions.Add(new ExecAction(Application.ExecutablePath, null, null));
td.Principal.RunLevel = TaskRunLevel.Highest;
@@ -120,97 +188,95 @@ private void CreateTask()
ts.RootFolder.RegisterTaskDefinition(appName, td);
}
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Error creating startup task: {ex.Message}", "Error",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
- private void DeleteTask()
+ private static void DeleteTask()
{
- using (TaskService ts = new TaskService())
+ using var ts = new TaskService();
+ if (ts.GetTask(appName) != null)
{
- if (ts.GetTask(appName) != null)
- {
- ts.RootFolder.DeleteTask(appName);
- }
+ ts.RootFolder.DeleteTask(appName);
}
}
- private bool isTaskEnable()
+ private static bool IsTaskEnabled()
{
- using (TaskService ts = new TaskService())
- {
- return (ts.GetTask(appName) != null);
- }
+ using var ts = new TaskService();
+ return ts.GetTask(appName) != null;
}
- private void OnRegisterInStartup(object sender, EventArgs e)
+ private void OnRegisterInStartup(object _, EventArgs e)
{
- if (isTaskEnable())
+ if (IsTaskEnabled())
{
DeleteTask();
- trayMenu.MenuItems[2].Checked = false;
+ startButton.Checked = false;
}
else
{
CreateTask();
- trayMenu.MenuItems[2].Checked = true;
+ startButton.Checked = true;
}
}
private void OnReboot(object sender, EventArgs e)
{
- LaunchCMD("/C shutdown /r /t 0");
+ var psi = new ProcessStartInfo("shutdown", "/r /t 0");
+ psi.CreateNoWindow = true;
+ Process.Start(psi);
}
private void GetMenuItems()
{
- LaunchCMD("/C bcdedit /enum firmware");
+ var psi = new ProcessStartInfo
+ {
+ FileName = "bcdedit",
+ Arguments = "/enum firmware",
+ RedirectStandardOutput = true,
+ CreateNoWindow = true,
+ UseShellExecute = false
+ };
+ using var process = new Process { StartInfo = psi };
+ process.OutputDataReceived += ParseBCDEditOutput;
+ process.Start();
+ process.BeginOutputReadLine();
+ process.WaitForExit();
}
- private void LaunchCMD(string command)
+ void ParseBCDEditOutput(object sender, DataReceivedEventArgs e)
{
- Process build = new Process();
- build.StartInfo.Arguments = command;
- build.StartInfo.FileName = "cmd.exe";
+ if (string.IsNullOrEmpty(e.Data))
+ return;
- build.StartInfo.UseShellExecute = false;
- build.StartInfo.RedirectStandardOutput = true;
- build.StartInfo.RedirectStandardError = true;
- build.StartInfo.CreateNoWindow = true;
- build.ErrorDataReceived += Build_ErrorAndDataReceived;
- build.OutputDataReceived += Build_ErrorAndDataReceived;
- build.EnableRaisingEvents = true;
- build.Start();
- build.BeginOutputReadLine();
- build.BeginErrorReadLine();
- build.WaitForExit();
- }
+ string strMessage = e.Data;
+ string[] splitMsg = strMessage.Split(' ', StringSplitOptions.RemoveEmptyEntries);
- void Build_ErrorAndDataReceived(object sender, DataReceivedEventArgs e)
- {
- if (e.Data != null && e.Data != "")
- {
- string strMessage = e.Data;
- string[] splited = strMessage.Split(' ');
- splited = splited.Where(address => !string.IsNullOrWhiteSpace(address)).ToArray();
- Match match = regexUUID.Match(splited.Last());
+ if (splitMsg.Length == 0)
+ return;
- if (splited[0] == "description")
- {
- splited = splited.Where(w => w != splited[0]).ToArray();
- Console.WriteLine(String.Join(" ", splited));
- uefi.Add(String.Join(" ", splited));
- }
-
- if (splited[0] == "bootsequence")
- {
- Console.Write(splited.Last());
- bootsequence = splited.Last();
- }
+ var match = UUIDRegEx().Match(splitMsg.Last());
- if (splited[0] != "resumeobject" && splited[0] != "bootsequence" && match.Success || splited.Last() == "{bootmgr}")
- {
- Console.Write(splited.Last());
- uuid.Add(splited.Last());
- }
+ if (splitMsg[0] == "description")
+ {
+ var description = string.Join(" ", splitMsg.Skip(1));
+ Console.WriteLine(description);
+ uefi.Add(description);
+ }
+ else if (splitMsg[0] == "bootsequence")
+ {
+ Console.Write(splitMsg.Last());
+ bootSequence = splitMsg.Last();
+ }
+ else if (splitMsg[0] != "resumeobject" && splitMsg[0] != "bootsequence" &&
+ (match.Success || splitMsg.Last() == "{bootmgr}"))
+ {
+ Console.Write(splitMsg.Last());
+ uuid.Add(splitMsg.Last());
}
}
@@ -230,9 +296,29 @@ protected override void Dispose(bool isDisposing)
{
// Release the icon resource.
trayIcon.Dispose();
+ trayMenu?.Dispose();
}
base.Dispose(isDisposing);
}
}
+ public class ContextMenuStrip : System.Windows.Forms.ContextMenuStrip
+ {
+ private new void RescaleConstantsForDpi(int deviceDpiOld, int deviceDpiNew)
+ {
+ // Use reflection to invoke the internal ResetScaling method
+ var resetScalingMethod = typeof(System.Windows.Forms.ContextMenuStrip).GetMethod("ResetScaling", BindingFlags.NonPublic | BindingFlags.Instance);
+ resetScalingMethod?.Invoke(this, [deviceDpiNew]);
+ }
+
+ public ContextMenuStrip(IContainer container) : base(container)
+ {
+ RescaleConstantsForDpi(96, DeviceDpi);
+ }
+
+ public ContextMenuStrip()
+ {
+ RescaleConstantsForDpi(96, DeviceDpi);
+ }
+ }
}
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
deleted file mode 100644
index 686a265..0000000
--- a/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// Общие сведения об этой сборке предоставляются следующим набором
-// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
-// связанных со сборкой.
-[assembly: AssemblyTitle("WinToLinux")]
-[assembly: AssemblyDescription("Reboot to Linux easier than ever")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Toxblh")]
-[assembly: AssemblyProduct("WinToLinux")]
-[assembly: AssemblyCopyright("Anton Palgunov. Copyright © 2020 - 2023")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
-// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
-// COM, следует установить атрибут ComVisible в TRUE для этого типа.
-[assembly: ComVisible(false)]
-
-// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
-[assembly: Guid("50553123-481b-42c7-a1de-0666bac41e0f")]
-
-// Сведения о версии сборки состоят из указанных ниже четырех значений:
-//
-// Основной номер версии
-// Дополнительный номер версии
-// Номер сборки
-// Редакция
-//
-// Можно задать все значения или принять номера сборки и редакции по умолчанию
-// используя "*", как показано ниже:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.0")]
-[assembly: AssemblyFileVersion("1.1.0")]
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
index 06999b9..5171c12 100644
--- a/Properties/Resources.Designer.cs
+++ b/Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// Этот код создан программой.
-// Исполняемая версия:4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
-// повторной генерации кода.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace WinToLinux.Properties {
///
- /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+ /// A strongly-typed resource class, for looking up localized strings, etc.
///
- // Этот класс создан автоматически классом StronglyTypedResourceBuilder
- // с помощью такого средства, как ResGen или Visual Studio.
- // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
- // с параметром /str или перестройте свой проект VS.
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,7 +33,7 @@ internal Resources() {
}
///
- /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+ /// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ internal Resources() {
}
///
- /// Перезаписывает свойство CurrentUICulture текущего потока для всех
- /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ internal Resources() {
}
///
- /// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
+ /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
///
internal static System.Drawing.Icon WtL {
get {
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
index 11c7080..7a1a2ad 100644
--- a/Properties/Settings.Designer.cs
+++ b/Properties/Settings.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// Этот код создан программой.
-// Исполняемая версия:4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
-// повторной генерации кода.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace WinToLinux.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/WinToLinux.csproj b/WinToLinux.csproj
index 321396a..fa64a6e 100644
--- a/WinToLinux.csproj
+++ b/WinToLinux.csproj
@@ -1,113 +1,61 @@
-
-
-
+
- Debug
- AnyCPU
- {50553123-481B-42C7-A1DE-0666BAC41E0F}
+ net8.0-windows
WinExe
- WinToLinux
- WinToLinux
- v4.8
- 512
- true
-
- false
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- true
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- false
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- false
-
-
- app.manifest
-
-
-
-
-
+ true
+ true
+ README.md
WtL.ico
+ app.manifest
+ SystemAware
+ LICENSE
+ https://github.com/Toxblh/WinToLinux
+ Anton Palgunov & Contributors. Copyright © 2020 - 2025
+ Reboot to Linux easier than ever!
+
+ 1.2.0
+
+ $(VersionPrefix)
+ $(VersionPrefix)
+ $(VersionPrefix)$(VersionSuffix)
-
-
- packages\TaskScheduler.2.10.1\lib\net452\Microsoft.Win32.TaskScheduler.dll
-
-
-
-
-
-
-
-
+
+
-
- Form
-
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
+
+
+
+
+ True
True
Resources.resx
- True
-
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
+
+ True
True
Settings.settings
- True
-
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
-
- False
- .NET Framework 3.5 SP1
- false
-
+
+ True
+ \
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ \
+
-
\ No newline at end of file
diff --git a/WinToLinux.sln b/WinToLinux.sln
deleted file mode 100644
index 57f05d6..0000000
--- a/WinToLinux.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29613.14
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinToLinux", "WinToLinux.csproj", "{50553123-481B-42C7-A1DE-0666BAC41E0F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {50553123-481B-42C7-A1DE-0666BAC41E0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {50553123-481B-42C7-A1DE-0666BAC41E0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {50553123-481B-42C7-A1DE-0666BAC41E0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {50553123-481B-42C7-A1DE-0666BAC41E0F}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {B79D4238-CC1B-439A-85DC-AB7783E95213}
- EndGlobalSection
-EndGlobal
diff --git a/WinToLinux.slnx b/WinToLinux.slnx
new file mode 100644
index 0000000..56e37c5
--- /dev/null
+++ b/WinToLinux.slnx
@@ -0,0 +1,3 @@
+
+
+
diff --git a/app.config b/app.config
deleted file mode 100644
index 3e0e37c..0000000
--- a/app.config
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/app.manifest b/app.manifest
index 0c57e86..d1d3524 100644
--- a/app.manifest
+++ b/app.manifest
@@ -1,20 +1,13 @@
-
+
-
@@ -43,22 +36,8 @@
-
-
-
-
-
-
- true
-
-
-
+
-
-
-
+
diff --git a/packages.config b/packages.config
deleted file mode 100644
index 82f3e90..0000000
--- a/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file