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