Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b65392fbc7 | ||
|
|
bc6049fc39 |
No files matched your search
+1
-1
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.12.35527.113
|
VisualStudioVersion = 17.12.35527.113
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "Flyby11\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "FlybyScript\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|||||||
@@ -124,7 +124,8 @@ namespace Flyby11
|
|||||||
|
|
||||||
this.Controls.Add(upgradeButton);
|
this.Controls.Add(upgradeButton);
|
||||||
this.Controls.Add(countdownLabel);
|
this.Controls.Add(countdownLabel);
|
||||||
// this.Controls.Add(additionalInfoLabel);
|
// this.Controls.Add(additionalInfoLabel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+85
-53
@@ -18,7 +18,7 @@ namespace Flyby11
|
|||||||
|
|
||||||
private FlowLayoutPanel _faqContentPanel;
|
private FlowLayoutPanel _faqContentPanel;
|
||||||
|
|
||||||
// List of individual FAQ entry steps (to add one by one)
|
// List of individual FAQ entry steps
|
||||||
private readonly List<Action<FlowLayoutPanel>> _faqSteps = new List<Action<FlowLayoutPanel>>();
|
private readonly List<Action<FlowLayoutPanel>> _faqSteps = new List<Action<FlowLayoutPanel>>();
|
||||||
|
|
||||||
private int _currentFaqStep = 0;
|
private int _currentFaqStep = 0;
|
||||||
@@ -103,68 +103,57 @@ namespace Flyby11
|
|||||||
AddLabel(parent, Locales.Strings.faq_q1, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
AddLabel(parent, Locales.Strings.faq_q1, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
AddLabel(parent, Locales.Strings.faq_a1, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
AddLabel(parent, Locales.Strings.faq_a1, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
|
||||||
// Links below the answer
|
|
||||||
var linkPanel = new FlowLayoutPanel
|
var downloadOptions = new ComboBox
|
||||||
{
|
{
|
||||||
AutoSize = true,
|
DropDownStyle = ComboBoxStyle.DropDownList,
|
||||||
FlowDirection = FlowDirection.LeftToRight,
|
Font = new Font("Segoe UI Variable Display", 10.5f),
|
||||||
WrapContents = true
|
Width = 300,
|
||||||
|
Padding = new Padding(5)
|
||||||
};
|
};
|
||||||
|
|
||||||
AddFAQItem(linkPanel, Locales.Strings.faq_downloadMS, "https://www.microsoft.com/software-download/windows11");
|
downloadOptions.Items.Add("Select Download Source"); // Add default placeholder item
|
||||||
AddFAQItemWithScript(linkPanel, Locales.Strings.faq_downloadFido, "or", "https://raw.githubusercontent.com/pbatard/Fido/refs/heads/master/Fido.ps1");
|
downloadOptions.Items.Add(Locales.Strings.faq_downloadMS); // Index 1
|
||||||
|
downloadOptions.Items.Add(Locales.Strings.faq_downloadFido); // Index 2
|
||||||
|
downloadOptions.Items.Add("Media Creation Tool (Beginner-Friendly)"); // Index 3
|
||||||
|
|
||||||
parent.Controls.Add(linkPanel);
|
downloadOptions.SelectedIndex = 0; // Set default selection
|
||||||
}
|
|
||||||
|
|
||||||
|
downloadOptions.SelectedIndexChanged += (s, e) =>
|
||||||
// Simple link-only FAQ entry
|
|
||||||
private void AddFAQItem(FlowLayoutPanel parent, string linkText, string linkUrl)
|
|
||||||
{
|
|
||||||
var linkLabel = new LinkLabel
|
|
||||||
{
|
{
|
||||||
Text = linkText,
|
switch (downloadOptions.SelectedIndex)
|
||||||
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
{
|
||||||
LinkColor = Color.Blue,
|
case 1:
|
||||||
AutoSize = true,
|
// Open Microsoft ISO download page
|
||||||
Padding = new Padding(10),
|
Process.Start("https://www.microsoft.com/software-download/windows11");
|
||||||
TextAlign = ContentAlignment.TopLeft,
|
break;
|
||||||
UseCompatibleTextRendering = true
|
case 2:
|
||||||
|
// Download and run Fido script
|
||||||
|
DownloadAndRunFidoScript("https://raw.githubusercontent.com/pbatard/Fido/refs/heads/master/Fido.ps1");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// Handle Media Creation Tool download process
|
||||||
|
HandleMediaCreationToolDownload();
|
||||||
|
break;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
linkLabel.LinkClicked += (sender, e) => Process.Start(linkUrl);
|
parent.Controls.Add(downloadOptions);
|
||||||
parent.Controls.Add(linkLabel);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Adds a downloadable script link (e.g., Fido.ps1)
|
/// <summary>
|
||||||
private void AddFAQItemWithScript(FlowLayoutPanel parent, string linkText, string description, string scriptUrl)
|
/// Downloads and executes the Fido PowerShell script.
|
||||||
{
|
/// </summary>
|
||||||
AddLabel(parent, description, new Font("Segoe UI Variable Display", 9), ContentAlignment.TopLeft, 11);
|
void DownloadAndRunFidoScript(string scriptUrl)
|
||||||
|
|
||||||
var linkLabel = new LinkLabel
|
|
||||||
{
|
|
||||||
Text = linkText,
|
|
||||||
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
|
||||||
LinkColor = Color.Blue,
|
|
||||||
AutoSize = true,
|
|
||||||
Padding = new Padding(10),
|
|
||||||
TextAlign = ContentAlignment.TopLeft,
|
|
||||||
UseCompatibleTextRendering = true
|
|
||||||
};
|
|
||||||
|
|
||||||
linkLabel.Click += (sender, e) =>
|
|
||||||
{
|
{
|
||||||
string tempScriptPath = Path.Combine(Path.GetTempPath(), "Fido.ps1");
|
string tempScriptPath = Path.Combine(Path.GetTempPath(), "Fido.ps1");
|
||||||
|
|
||||||
try
|
using (var client = new WebClient())
|
||||||
{
|
{
|
||||||
using (var client = new WebClient())
|
try
|
||||||
{
|
{
|
||||||
// Download script to temp folder
|
client.DownloadFile(scriptUrl, tempScriptPath);
|
||||||
client.DownloadFile(new Uri(scriptUrl), tempScriptPath);
|
_updateStatus("Fido script downloaded successfully. Running it now...");
|
||||||
_updateStatus("Fido downloaded successfully! Now running the script...");
|
|
||||||
|
|
||||||
// Run script using elevated PowerShell
|
|
||||||
Process.Start(new ProcessStartInfo
|
Process.Start(new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = "powershell.exe",
|
FileName = "powershell.exe",
|
||||||
@@ -174,16 +163,59 @@ namespace Flyby11
|
|||||||
UseShellExecute = true
|
UseShellExecute = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_updateStatus("Error downloading or running Fido: " + ex.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles download, optional tutorial, and execution of the Media Creation Tool.
|
||||||
|
/// </summary>
|
||||||
|
void HandleMediaCreationToolDownload()
|
||||||
|
{
|
||||||
|
var infoResult = MessageBox.Show(
|
||||||
|
"With the Media Creation Tool, you can either upgrade your PC or create an ISO file.\n\nImportant: In the step 'Choose which media to use', make sure to select 'ISO file'.\n\nIf you're unsure, would you like to watch a recommended YouTube tutorial on how to do this?",
|
||||||
|
"Media Creation Tool Information",
|
||||||
|
MessageBoxButtons.YesNo,
|
||||||
|
MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
if (infoResult == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
_updateStatus("Error downloading or running the script: " + ex.Message);
|
Process.Start("https://www.youtube.com/watch?v=dNl1FHajW9w");
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
parent.Controls.Add(linkLabel);
|
using (var saveDialog = new SaveFileDialog())
|
||||||
|
{
|
||||||
|
saveDialog.Title = "Save Media Creation Tool";
|
||||||
|
saveDialog.Filter = "Executable|*.exe";
|
||||||
|
saveDialog.FileName = "MediaCreationTool.exe";
|
||||||
|
|
||||||
|
if (saveDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
using (var client = new WebClient())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
client.DownloadFile("https://go.microsoft.com/fwlink/?linkid=2156295", saveDialog.FileName);
|
||||||
|
MessageBox.Show("Media Creation Tool downloaded successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
var runResult = MessageBox.Show("Do you want to run the Media Creation Tool now?", "Run Tool", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||||
|
if (runResult == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
Process.Start(saveDialog.FileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error downloading the Media Creation Tool: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds any generic label to the flow panel
|
// Adds any generic label to the flow panel
|
||||||
private void AddLabel(FlowLayoutPanel parent, string text, Font font, ContentAlignment alignment, int padding = 0)
|
private void AddLabel(FlowLayoutPanel parent, string text, Font font, ContentAlignment alignment, int padding = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,6 +12,21 @@
|
|||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
@@ -84,6 +99,12 @@
|
|||||||
<Compile Include="MainForm.Designer.cs">
|
<Compile Include="MainForm.Designer.cs">
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ProblemsForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ProblemsForm.Designer.cs">
|
||||||
|
<DependentUpon>ProblemsForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
@@ -106,6 +127,7 @@
|
|||||||
<EmbeddedResource Include="Locales\Strings.de.resx" />
|
<EmbeddedResource Include="Locales\Strings.de.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.fr.resx" />
|
<EmbeddedResource Include="Locales\Strings.fr.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.he.resx" />
|
<EmbeddedResource Include="Locales\Strings.he.resx" />
|
||||||
|
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
||||||
@@ -120,6 +142,9 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
|
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="ProblemsForm.resx">
|
||||||
|
<DependentUpon>ProblemsForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
@@ -142,6 +167,17 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="AppIcon.ico" />
|
<Content Include="AppIcon.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.8 %28x86 und x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
+69
-65
@@ -1,14 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Runtime.Remoting.Lifetime;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|
||||||
|
|
||||||
namespace Flyby11
|
namespace Flyby11
|
||||||
{
|
{
|
||||||
@@ -22,7 +18,7 @@ namespace Flyby11
|
|||||||
_updateStatus = updateStatus;
|
_updateStatus = updateStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task HandleIso(string isoPath)
|
public async Task HandleIso(string isoPath, bool experimentalEnabled)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -41,8 +37,7 @@ namespace Flyby11
|
|||||||
string quotedIsoPath = $"\"{isoPath}\"";
|
string quotedIsoPath = $"\"{isoPath}\"";
|
||||||
|
|
||||||
// Pass the quoted path to ExecutePowerShellCommand
|
// Pass the quoted path to ExecutePowerShellCommand
|
||||||
await ExecutePowerShellCommand($"Mount-DiskImage -ImagePath {quotedIsoPath}");
|
string driveLetter = await MountIsoAndGetDriveLetter(isoPath);
|
||||||
string driveLetter = await GetMountedDriveLetter();
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(driveLetter))
|
if (string.IsNullOrEmpty(driveLetter))
|
||||||
{
|
{
|
||||||
@@ -56,7 +51,7 @@ namespace Flyby11
|
|||||||
string setupPath = Path.Combine(driveLetter, "sources", "setupprep.exe");
|
string setupPath = Path.Combine(driveLetter, "sources", "setupprep.exe");
|
||||||
if (File.Exists(setupPath))
|
if (File.Exists(setupPath))
|
||||||
{
|
{
|
||||||
await RunSetupWithAdminRights(setupPath);
|
await RunSetupWithAdminRights(setupPath, experimentalEnabled);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -65,7 +60,6 @@ namespace Flyby11
|
|||||||
"Error",
|
"Error",
|
||||||
MessageBoxButtons.OK,
|
MessageBoxButtons.OK,
|
||||||
MessageBoxIcon.Error);
|
MessageBoxIcon.Error);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -75,74 +69,80 @@ namespace Flyby11
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<string> GetMountedDriveLetter()
|
private async Task<string> MountIsoAndGetDriveLetter(string isoPath)
|
||||||
{
|
{
|
||||||
var drives = DriveInfo.GetDrives();
|
try
|
||||||
foreach (var drive in drives)
|
|
||||||
{
|
{
|
||||||
if (drive.DriveType == DriveType.CDRom && drive.IsReady)
|
_updateStatus("Mounting ISO...");
|
||||||
|
|
||||||
|
// PowerShell script to mount ISO and get the assigned drive letter
|
||||||
|
string script = $@"
|
||||||
|
$iso = Mount-DiskImage -ImagePath '{isoPath}' -PassThru
|
||||||
|
$volumes = Get-Volume -DiskImage $iso
|
||||||
|
$volumes.DriveLetter
|
||||||
|
";
|
||||||
|
|
||||||
|
using (var process = new Process())
|
||||||
{
|
{
|
||||||
return drive.Name.Substring(0, 2);
|
process.StartInfo.FileName = "powershell.exe";
|
||||||
|
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{script}\"";
|
||||||
|
process.StartInfo.RedirectStandardOutput = true;
|
||||||
|
process.StartInfo.RedirectStandardError = true;
|
||||||
|
process.StartInfo.UseShellExecute = false;
|
||||||
|
process.StartInfo.CreateNoWindow = true;
|
||||||
|
|
||||||
|
process.Start();
|
||||||
|
|
||||||
|
string output = await process.StandardOutput.ReadToEndAsync();
|
||||||
|
string error = await process.StandardError.ReadToEndAsync();
|
||||||
|
|
||||||
|
await process.WaitForExitAsync();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(error))
|
||||||
|
{
|
||||||
|
_updateStatus("PowerShell error during mount: " + error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
string driveLetter = output.Trim();
|
||||||
|
if (!string.IsNullOrWhiteSpace(driveLetter))
|
||||||
|
{
|
||||||
|
_updateStatus($"ISO mounted successfully at {driveLetter}:\\");
|
||||||
|
return $"{driveLetter}:\\";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_updateStatus("Failed to retrieve drive letter after mounting ISO.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
catch (Exception ex)
|
||||||
}
|
|
||||||
|
|
||||||
private async Task ExecutePowerShellCommand(string command)
|
|
||||||
{
|
|
||||||
using (var process = new Process())
|
|
||||||
{
|
{
|
||||||
// Escape the command to ensure spaces in paths are handled
|
_updateStatus("Exception during mounting: " + ex.Message);
|
||||||
string escapedCommand = command.Replace("\"", "\\\"");
|
return null;
|
||||||
|
|
||||||
process.StartInfo.FileName = "powershell.exe";
|
|
||||||
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{escapedCommand}\"";
|
|
||||||
process.StartInfo.RedirectStandardOutput = true;
|
|
||||||
process.StartInfo.RedirectStandardError = true;
|
|
||||||
process.StartInfo.UseShellExecute = false;
|
|
||||||
process.StartInfo.CreateNoWindow = true;
|
|
||||||
|
|
||||||
// Capture standard output and error output
|
|
||||||
StringBuilder outputBuilder = new StringBuilder();
|
|
||||||
StringBuilder errorBuilder = new StringBuilder();
|
|
||||||
|
|
||||||
process.OutputDataReceived += (sender, e) => { if (!string.IsNullOrEmpty(e.Data)) outputBuilder.AppendLine(e.Data); };
|
|
||||||
process.ErrorDataReceived += (sender, e) => { if (!string.IsNullOrEmpty(e.Data)) errorBuilder.AppendLine(e.Data); };
|
|
||||||
|
|
||||||
process.Start();
|
|
||||||
process.BeginOutputReadLine();
|
|
||||||
process.BeginErrorReadLine();
|
|
||||||
|
|
||||||
await process.WaitForExitAsync();
|
|
||||||
|
|
||||||
string output = outputBuilder.ToString();
|
|
||||||
string error = errorBuilder.ToString();
|
|
||||||
|
|
||||||
// Debug output for logs
|
|
||||||
if (!string.IsNullOrEmpty(output))
|
|
||||||
{
|
|
||||||
_updateStatus($"PowerShell Output: {output}");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(error))
|
|
||||||
{
|
|
||||||
_updateStatus($"PowerShell Error: {error}");
|
|
||||||
MessageBox.Show($"PowerShell Error: {error}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task RunSetupWithAdminRights(string setupPath, bool experimentalEnabled)
|
||||||
private async Task RunSetupWithAdminRights(string setupPath)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_updateStatus(Locales.Strings._debugInstallRunElevated); //Starting the setup process with elevated privileges...
|
_updateStatus(Locales.Strings._debugInstallRunElevated); //Starting the setup process with elevated privileges...
|
||||||
|
|
||||||
|
// Default argument
|
||||||
|
string arguments = "/Product Server";
|
||||||
|
|
||||||
|
// If experimental mode is enabled, append additional setup parameters
|
||||||
|
if (experimentalEnabled)
|
||||||
|
{
|
||||||
|
arguments += " /Compat IgnoreWarning /MigrateDrivers All";
|
||||||
|
}
|
||||||
|
|
||||||
var startInfo = new ProcessStartInfo
|
var startInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = "powershell.exe",
|
FileName = "powershell.exe",
|
||||||
Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"Start-Process '{setupPath}' -ArgumentList '/product server' -Verb runas\"",
|
Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"Start-Process '{setupPath}' -ArgumentList '{arguments}' -Verb runas\"",
|
||||||
Verb = "runas",
|
Verb = "runas",
|
||||||
UseShellExecute = true,
|
UseShellExecute = true,
|
||||||
CreateNoWindow = false
|
CreateNoWindow = false
|
||||||
@@ -157,9 +157,16 @@ namespace Flyby11
|
|||||||
await process.WaitForExitAsync();
|
await process.WaitForExitAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Final status message
|
||||||
|
string finalStatus = Locales.Strings._debugInstallReady;
|
||||||
|
|
||||||
|
if (experimentalEnabled)
|
||||||
|
{
|
||||||
|
finalStatus += " (Advanced mode enabled: Compatibility checks bypassed)";
|
||||||
|
}
|
||||||
|
|
||||||
|
_updateStatus(finalStatus);
|
||||||
|
|
||||||
//You're ready to install Windows 11 on unsupported hardware! Ignore the 'Windows Server' prompt; you're all set!"
|
|
||||||
_updateStatus(Locales.Strings._debugInstallReady);
|
|
||||||
//Windows 11 installation can now proceed. Please follow the instructions in the setup window.
|
//Windows 11 installation can now proceed. Please follow the instructions in the setup window.
|
||||||
MessageBox.Show(Locales.Strings.msg_InstallReady, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
MessageBox.Show(Locales.Strings.msg_InstallReady, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
}
|
}
|
||||||
@@ -236,8 +243,6 @@ namespace Flyby11
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Downloads a specified tool (Media Creation Tool or Installation Assistant) from a provided URL.
|
/// Downloads a specified tool (Media Creation Tool or Installation Assistant) from a provided URL.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -290,7 +295,6 @@ namespace Flyby11
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ProcessExtensions
|
public static class ProcessExtensions
|
||||||
|
|||||||
@@ -1,223 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="compPatch_debugCancel" xml:space="preserve">
|
|
||||||
<value>Установка патча совместимости отменена пользователем.</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
|
||||||
<value>Пользователь пытался выбрать несъемный диск.</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
|
||||||
<value>USB-накопитель для установки патча не выбран.</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
|
||||||
<value>Не удалось применить патч совместимости:</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
|
||||||
<value>Выбранный путь не является съемным диском. Пожалуйста, выберите USB-накопитель.</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
|
||||||
<value>Выберите USB-накопитель с файлами установки Windows 11.\nЭта функция добавляет патч совместимости для обхода определенных системных требований.\nСовместимо с накопителями, подготовленными любым инструментом, включая Rufus. Убедитесь, что накопитель готов!</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
|
||||||
<value>Это применит настройки обхода совместимости на выбранном USB-накопителе. Продолжить?</value>
|
|
||||||
</data>
|
|
||||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
|
||||||
<value>Патч совместимости успешно применен!</value>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_FormTitle" xml:space="preserve">
|
|
||||||
<value>Помощник по обновлению Flyby11</value>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
|
||||||
<value>Применить патч совместимости к ISO (чистая установка)</value>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
|
||||||
<value>Могу ли я обновиться до Windows 11?</value>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_linkVote" xml:space="preserve">
|
|
||||||
<value>Получилось ли обновление?</value>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_statusLabel" xml:space="preserve">
|
|
||||||
<value>Перетащите ISO-файл Windows 11 для применения патча и установки на неподдерживаемом оборудовании (обновление на месте).</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a1" xml:space="preserve">
|
|
||||||
<value>О: Вы можете скачать последний ISO-файл с официального сайта Microsoft или использовать Fido Downloader.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a2" xml:space="preserve">
|
|
||||||
<value>О: Если вы успешно установили Windows 11 и сэкономили деньги, не стесняйтесь оставить небольшое пожертвование в знак благодарности здесь.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a2Link" xml:space="preserve">
|
|
||||||
<value>Нажмите здесь, чтобы пожертвовать и поддержать проект.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a3" xml:space="preserve">
|
|
||||||
<value>О: После монтирования ISO-файла процесс установки запускается в фоновом режиме. Установщик Windows запустится и проведет вас через необходимые шаги для установки Windows 11 на ваш компьютер.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a4" xml:space="preserve">
|
|
||||||
<value>О: Пожалуйста, проверьте сообщения об ошибках и сообщите о проблеме на GitHub.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a5" xml:space="preserve">
|
|
||||||
<value>О: Да, Microsoft оставила лазейку. Этот метод использует особенность процесса установки Windows 11, которая использует серверный вариант установки. В отличие от обычной установки Windows 11, этот вариант пропускает большинство проверок совместимости оборудования.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a6" xml:space="preserve">
|
|
||||||
<value>О: По мнению Microsoft, вам следует выбросить свой ПК. Я бы предложил установить на него Linux и отказаться от Windows.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a7" xml:space="preserve">
|
|
||||||
<value>О: Разработчик - Belim, также известный как Builtbybel, который внес большой вклад в сообщество Windows.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_a7Link" xml:space="preserve">
|
|
||||||
<value>Нажмите здесь, чтобы узнать больше о работе разработчика.</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_downloadFido" xml:space="preserve">
|
|
||||||
<value>Скачать через Fido (рекомендуется)</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_downloadMS" xml:space="preserve">
|
|
||||||
<value>Сайт Microsoft</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_header" xml:space="preserve">
|
|
||||||
<value>Часто задаваемые вопросы (FAQ)</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q1" xml:space="preserve">
|
|
||||||
<value>В: Где взять свежий ISO-файл Windows 11?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q2" xml:space="preserve">
|
|
||||||
<value>В: Как я могу поддержать разработчика?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q3" xml:space="preserve">
|
|
||||||
<value>В: Как работает процесс установки после монтирования ISO?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q4" xml:space="preserve">
|
|
||||||
<value>В: Что делать, если возникли проблемы во время установки?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q5" xml:space="preserve">
|
|
||||||
<value>В: Законно ли использовать этот метод?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q6" xml:space="preserve">
|
|
||||||
<value>В: Какие есть альтернативы, если мой ПК не поддерживается?</value>
|
|
||||||
</data>
|
|
||||||
<data name="faq_q7" xml:space="preserve">
|
|
||||||
<value>В: Кто разработчик?</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
|
||||||
<value>1. Устройство работает на поддерживаемой версии Windows 10. Если устройство сейчас не работает на поддерживаемой версии Windows 10, обновите его до поддерживаемой версии Windows 10.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
|
||||||
<value>2. Устройство соответствует</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
|
||||||
<value>1. Скачайте и запустите</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
|
||||||
<value>2. Выберите следующий ярлык Windows Update и нажмите кнопку "Проверить наличие обновлений":</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
|
||||||
<value>3. Ваше устройство не соответствует официальным требованиям Windows 11? Вы можете применить патч совместимости для включения обновления на месте через Windows Update.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
|
||||||
<value>Существующее устройство с Windows 10 может быть обновлено до Windows 11, если оно соответствует следующим критериям:</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
|
||||||
<value>Чтобы проверить, может ли устройство с Windows 10 быть обновлено до Windows 11, выполните один из следующих вариантов:</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
|
||||||
<value>минимальным требованиям к оборудованию для запуска Windows 11.</value>
|
|
||||||
</data>
|
|
||||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
|
||||||
<value>приложение WhyNotWin11, чтобы подтвердить, что ваше устройство соответствует минимальным системным требованиям</value>
|
|
||||||
</data>
|
|
||||||
<data name="msg_InstallReady" xml:space="preserve">
|
|
||||||
<value>Установка Windows 11 может быть продолжена. Пожалуйста, следуйте инструкциям в окне установки.</value>
|
|
||||||
<comment>Install</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugInstallReady" xml:space="preserve">
|
|
||||||
<value>Вы готовы к установке Windows 11 на неподдерживаемом оборудовании! Игнорируйте сообщение о 'Windows Server' - всё готово!</value>
|
|
||||||
<comment>Install</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
|
||||||
<value>Запуск процесса установки с повышенными привилегиями...</value>
|
|
||||||
<comment>Install</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
|
||||||
<value>Упс! Что-то пошло не так:</value>
|
|
||||||
<comment>Mounting</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusMounting" xml:space="preserve">
|
|
||||||
<value>Монтирование ISO... Подождите!</value>
|
|
||||||
<comment>Mounting</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
|
||||||
<value>Не удалось смонтировать ISO. Пожалуйста, попробуйте снова.</value>
|
|
||||||
<comment>Mounting</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
|
||||||
<value>ISO успешно смонтирован! Давайте подготовим эту Windows 11!</value>
|
|
||||||
<comment>Mounting</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusRunning" xml:space="preserve">
|
|
||||||
<value>Почти готово! Подготавливаем установку...</value>
|
|
||||||
<comment>Install</comment>
|
|
||||||
</data>
|
|
||||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
|
||||||
<value>Файл установки не найден в</value>
|
|
||||||
<comment>Mounting</comment>
|
|
||||||
</data>
|
|
||||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
|
||||||
<value>Выбрать с компьютера</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
Generated
+22
-5
@@ -35,6 +35,7 @@
|
|||||||
this.panelFAQ = new System.Windows.Forms.Panel();
|
this.panelFAQ = new System.Windows.Forms.Panel();
|
||||||
this.panelContainer = new System.Windows.Forms.Panel();
|
this.panelContainer = new System.Windows.Forms.Panel();
|
||||||
this.panelMain = new System.Windows.Forms.Panel();
|
this.panelMain = new System.Windows.Forms.Panel();
|
||||||
|
this.chkAdvancedMode = new System.Windows.Forms.CheckBox();
|
||||||
this.panelDragDrop.SuspendLayout();
|
this.panelDragDrop.SuspendLayout();
|
||||||
this.panelContainer.SuspendLayout();
|
this.panelContainer.SuspendLayout();
|
||||||
this.panelMain.SuspendLayout();
|
this.panelMain.SuspendLayout();
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
this.panelDragDrop.Controls.Add(this.dropdownOptions);
|
this.panelDragDrop.Controls.Add(this.dropdownOptions);
|
||||||
this.panelDragDrop.Controls.Add(this.btnExperience);
|
this.panelDragDrop.Controls.Add(this.btnExperience);
|
||||||
this.panelDragDrop.Controls.Add(this.statusLabel);
|
this.panelDragDrop.Controls.Add(this.statusLabel);
|
||||||
this.panelDragDrop.Location = new System.Drawing.Point(57, 178);
|
this.panelDragDrop.Location = new System.Drawing.Point(57, 190);
|
||||||
this.panelDragDrop.Name = "panelDragDrop";
|
this.panelDragDrop.Name = "panelDragDrop";
|
||||||
this.panelDragDrop.Size = new System.Drawing.Size(436, 256);
|
this.panelDragDrop.Size = new System.Drawing.Size(436, 256);
|
||||||
this.panelDragDrop.TabIndex = 0;
|
this.panelDragDrop.TabIndex = 0;
|
||||||
@@ -110,7 +111,7 @@
|
|||||||
this.panelFAQ.Dock = System.Windows.Forms.DockStyle.Right;
|
this.panelFAQ.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
this.panelFAQ.Location = new System.Drawing.Point(589, 0);
|
this.panelFAQ.Location = new System.Drawing.Point(589, 0);
|
||||||
this.panelFAQ.Name = "panelFAQ";
|
this.panelFAQ.Name = "panelFAQ";
|
||||||
this.panelFAQ.Size = new System.Drawing.Size(331, 585);
|
this.panelFAQ.Size = new System.Drawing.Size(331, 609);
|
||||||
this.panelFAQ.TabIndex = 207;
|
this.panelFAQ.TabIndex = 207;
|
||||||
//
|
//
|
||||||
// panelContainer
|
// panelContainer
|
||||||
@@ -120,7 +121,7 @@
|
|||||||
this.panelContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.panelContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.panelContainer.Location = new System.Drawing.Point(0, 0);
|
this.panelContainer.Location = new System.Drawing.Point(0, 0);
|
||||||
this.panelContainer.Name = "panelContainer";
|
this.panelContainer.Name = "panelContainer";
|
||||||
this.panelContainer.Size = new System.Drawing.Size(589, 585);
|
this.panelContainer.Size = new System.Drawing.Size(589, 609);
|
||||||
this.panelContainer.TabIndex = 209;
|
this.panelContainer.TabIndex = 209;
|
||||||
//
|
//
|
||||||
// panelMain
|
// panelMain
|
||||||
@@ -129,19 +130,33 @@
|
|||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.panelMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
this.panelMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
||||||
|
this.panelMain.Controls.Add(this.chkAdvancedMode);
|
||||||
this.panelMain.Controls.Add(this.panelDragDrop);
|
this.panelMain.Controls.Add(this.panelDragDrop);
|
||||||
this.panelMain.Location = new System.Drawing.Point(5, 3);
|
this.panelMain.Location = new System.Drawing.Point(5, 3);
|
||||||
this.panelMain.Name = "panelMain";
|
this.panelMain.Name = "panelMain";
|
||||||
this.panelMain.Size = new System.Drawing.Size(580, 572);
|
this.panelMain.Size = new System.Drawing.Size(580, 596);
|
||||||
this.panelMain.TabIndex = 1;
|
this.panelMain.TabIndex = 1;
|
||||||
//
|
//
|
||||||
|
// chkAdvancedMode
|
||||||
|
//
|
||||||
|
this.chkAdvancedMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.chkAdvancedMode.AutoSize = true;
|
||||||
|
this.chkAdvancedMode.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkAdvancedMode.Location = new System.Drawing.Point(8, 566);
|
||||||
|
this.chkAdvancedMode.Name = "chkAdvancedMode";
|
||||||
|
this.chkAdvancedMode.Size = new System.Drawing.Size(397, 17);
|
||||||
|
this.chkAdvancedMode.TabIndex = 1;
|
||||||
|
this.chkAdvancedMode.Text = "Enable advanced upgrade mode (bypass compatibility and driver checks)";
|
||||||
|
this.chkAdvancedMode.UseVisualStyleBackColor = true;
|
||||||
|
this.chkAdvancedMode.CheckedChanged += new System.EventHandler(this.chkAdvancedMode_CheckedChanged);
|
||||||
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
this.AutoScroll = true;
|
this.AutoScroll = true;
|
||||||
this.BackColor = System.Drawing.Color.WhiteSmoke;
|
this.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||||
this.ClientSize = new System.Drawing.Size(920, 585);
|
this.ClientSize = new System.Drawing.Size(920, 609);
|
||||||
this.Controls.Add(this.panelContainer);
|
this.Controls.Add(this.panelContainer);
|
||||||
this.Controls.Add(this.panelFAQ);
|
this.Controls.Add(this.panelFAQ);
|
||||||
this.Name = "MainForm";
|
this.Name = "MainForm";
|
||||||
@@ -152,6 +167,7 @@
|
|||||||
this.panelDragDrop.ResumeLayout(false);
|
this.panelDragDrop.ResumeLayout(false);
|
||||||
this.panelContainer.ResumeLayout(false);
|
this.panelContainer.ResumeLayout(false);
|
||||||
this.panelMain.ResumeLayout(false);
|
this.panelMain.ResumeLayout(false);
|
||||||
|
this.panelMain.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -165,6 +181,7 @@
|
|||||||
private System.Windows.Forms.Panel panelMain;
|
private System.Windows.Forms.Panel panelMain;
|
||||||
private System.Windows.Forms.Button btnExperience;
|
private System.Windows.Forms.Button btnExperience;
|
||||||
private System.Windows.Forms.ComboBox dropdownOptions;
|
private System.Windows.Forms.ComboBox dropdownOptions;
|
||||||
|
private System.Windows.Forms.CheckBox chkAdvancedMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+29
-10
@@ -1,13 +1,9 @@
|
|||||||
using Flyby11.Properties;
|
using System;
|
||||||
using System;
|
|
||||||
using System.Data;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Views;
|
using Views;
|
||||||
@@ -77,15 +73,13 @@ namespace Flyby11
|
|||||||
|
|
||||||
private void InitializeLocalizedStrings()
|
private void InitializeLocalizedStrings()
|
||||||
{
|
{
|
||||||
// Set localized strings for the UI elements
|
|
||||||
Text = Locales.Strings.ctl_FormTitle;
|
|
||||||
|
|
||||||
dropdownOptions.Items.Add("More options...");
|
dropdownOptions.Items.Add("More options...");
|
||||||
dropdownOptions.Items.Add(Locales.Strings.ctl_linkSelectComputer);
|
dropdownOptions.Items.Add(Locales.Strings.ctl_linkSelectComputer);
|
||||||
dropdownOptions.Items.Add(Locales.Strings.ctl_inkCompPatch);
|
dropdownOptions.Items.Add(Locales.Strings.ctl_inkCompPatch);
|
||||||
dropdownOptions.Items.Add(Locales.Strings.ctl_linkCiuv);
|
dropdownOptions.Items.Add(Locales.Strings.ctl_linkCiuv);
|
||||||
dropdownOptions.Items.Add("(Vote) " + Locales.Strings.ctl_linkVote); // "Did the upgrade work?"
|
dropdownOptions.Items.Add("(Vote) " + Locales.Strings.ctl_linkVote); // "Did the upgrade work?"
|
||||||
dropdownOptions.Items.Add("(App) Customize Windows 11 with Crapfixer"); // "Crapfixer Repository"
|
dropdownOptions.Items.Add("(App) Customize Windows 11 with CrapFixer"); // "CrapFixer Repository"
|
||||||
|
dropdownOptions.Items.Add("Troubleshoot Compatibility Issues"); // Problems form
|
||||||
dropdownOptions.SelectedIndex = 0;
|
dropdownOptions.SelectedIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,6 +181,7 @@ namespace Flyby11
|
|||||||
private async Task HandleIsoInput(object sender, EventArgs e)
|
private async Task HandleIsoInput(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string isoPath = null;
|
string isoPath = null;
|
||||||
|
bool experimentalEnabled = chkAdvancedMode.Checked;
|
||||||
|
|
||||||
if (e is DragEventArgs dragEvent && dragEvent.Data.GetDataPresent(DataFormats.FileDrop))
|
if (e is DragEventArgs dragEvent && dragEvent.Data.GetDataPresent(DataFormats.FileDrop))
|
||||||
{
|
{
|
||||||
@@ -213,7 +208,7 @@ namespace Flyby11
|
|||||||
|
|
||||||
if (!string.IsNullOrEmpty(isoPath) && File.Exists(isoPath))
|
if (!string.IsNullOrEmpty(isoPath) && File.Exists(isoPath))
|
||||||
{
|
{
|
||||||
await _isoHandler.HandleIso(isoPath);
|
await _isoHandler.HandleIso(isoPath, experimentalEnabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,6 +266,12 @@ namespace Flyby11
|
|||||||
// Open CFixer Repository
|
// Open CFixer Repository
|
||||||
Process.Start("https://github.com/builtbybel/Crapfixer/");
|
Process.Start("https://github.com/builtbybel/Crapfixer/");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
// Open Troubleshoot Compatibility Issues
|
||||||
|
ProblemsForm problemsForm = new ProblemsForm();
|
||||||
|
problemsForm.ShowDialog();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// Reset selection back to default prompt after action
|
// Reset selection back to default prompt after action
|
||||||
dropdownOptions.SelectedIndex = 0;
|
dropdownOptions.SelectedIndex = 0;
|
||||||
@@ -364,5 +365,23 @@ namespace Flyby11
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void chkAdvancedMode_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (chkAdvancedMode.Checked)
|
||||||
|
{
|
||||||
|
var result = MessageBox.Show(
|
||||||
|
"You are enabling an advanced setup mode. This option adds extra setup parameters that may improve compatibility on unsupported hardware. " +
|
||||||
|
"\r\nSuccess may vary depending on your system and drivers.\n\nDo you want to continue?",
|
||||||
|
"Advanced Mode Warning",
|
||||||
|
MessageBoxButtons.YesNo,
|
||||||
|
MessageBoxIcon.Warning);
|
||||||
|
|
||||||
|
if (result == DialogResult.No)
|
||||||
|
{
|
||||||
|
chkAdvancedMode.Checked = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Generated
+113
@@ -0,0 +1,113 @@
|
|||||||
|
namespace Flyby11
|
||||||
|
{
|
||||||
|
partial class ProblemsForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
this.dataGridViewIssues = new System.Windows.Forms.DataGridView();
|
||||||
|
this.ErrorCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.Link = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.dataGridViewIssues)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// dataGridViewIssues
|
||||||
|
//
|
||||||
|
this.dataGridViewIssues.AllowUserToAddRows = false;
|
||||||
|
this.dataGridViewIssues.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
|
||||||
|
this.dataGridViewIssues.BackgroundColor = System.Drawing.Color.WhiteSmoke;
|
||||||
|
this.dataGridViewIssues.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.dataGridViewIssues.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||||
|
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
dataGridViewCellStyle1.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||||
|
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
this.dataGridViewIssues.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||||
|
this.dataGridViewIssues.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
|
this.dataGridViewIssues.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||||
|
this.ErrorCode,
|
||||||
|
this.Link});
|
||||||
|
this.dataGridViewIssues.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.dataGridViewIssues.GridColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.dataGridViewIssues.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.dataGridViewIssues.Name = "dataGridViewIssues";
|
||||||
|
this.dataGridViewIssues.ReadOnly = true;
|
||||||
|
this.dataGridViewIssues.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||||
|
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI Variable Display", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||||
|
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
this.dataGridViewIssues.RowHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||||
|
this.dataGridViewIssues.RowHeadersVisible = false;
|
||||||
|
this.dataGridViewIssues.Size = new System.Drawing.Size(645, 377);
|
||||||
|
this.dataGridViewIssues.TabIndex = 0;
|
||||||
|
this.dataGridViewIssues.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewIssues_CellContentClick);
|
||||||
|
//
|
||||||
|
// ErrorCode
|
||||||
|
//
|
||||||
|
this.ErrorCode.FillWeight = 149.2386F;
|
||||||
|
this.ErrorCode.HeaderText = "ErrorCode";
|
||||||
|
this.ErrorCode.Name = "ErrorCode";
|
||||||
|
this.ErrorCode.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// Link
|
||||||
|
//
|
||||||
|
this.Link.FillWeight = 50.76142F;
|
||||||
|
this.Link.HeaderText = "Link";
|
||||||
|
this.Link.Name = "Link";
|
||||||
|
this.Link.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// ProblemsForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(645, 377);
|
||||||
|
this.Controls.Add(this.dataGridViewIssues);
|
||||||
|
this.Name = "ProblemsForm";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "Troubleshoot compatibility issues";
|
||||||
|
this.Load += new System.EventHandler(this.ProblemsForm_Load);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.dataGridViewIssues)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.DataGridView dataGridViewIssues;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn ErrorCode;
|
||||||
|
private System.Windows.Forms.DataGridViewLinkColumn Link;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyby11
|
||||||
|
{
|
||||||
|
public partial class ProblemsForm : Form
|
||||||
|
{
|
||||||
|
private readonly Dictionary<string, string> _issues = new Dictionary<string, string>()
|
||||||
|
{
|
||||||
|
{"Can't upgrade to Windows 11 – Error 0x80888002","https://github.com/builtbybel/Flyby11/discussions/135"},
|
||||||
|
{ "Upgrading without losing all programs and settings", "https://github.com/builtbybel/Flyby11/discussions/54"},
|
||||||
|
{ "Upgrade Driver issue 0xC1900101", "https://github.com/builtbybel/Flyby11/issues/157"},
|
||||||
|
{ "We are enable to complete your request at this time", "https://github.com/builtbybel/Flyby11/issues/158"},
|
||||||
|
{ "Upgrade succeeded, but future updates not possible ", "https://github.com/builtbybel/Flyby11/discussions/144"},
|
||||||
|
{ "We couldn't install Windows Server - We've set your PC back the way it was Error 0xC1900101 - 0x20017", "https://github.com/builtbybel/Flyby11/issues/103 "},
|
||||||
|
{ "Mounting ISO fails", "https://github.com/builtbybel/Flyby11/issues/156"},
|
||||||
|
{ "Can't find your issue? Browse the community discussions for help", "https://github.com/builtbybel/Flyby11/discussions"},
|
||||||
|
};
|
||||||
|
|
||||||
|
public ProblemsForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProblemsForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
foreach (var kv in _issues)
|
||||||
|
{
|
||||||
|
dataGridViewIssues.Rows.Add(kv.Key, "Details…");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dataGridViewIssues_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||||
|
{
|
||||||
|
if (dataGridViewIssues.Columns[e.ColumnIndex] is DataGridViewLinkColumn &&
|
||||||
|
e.RowIndex >= 0)
|
||||||
|
{
|
||||||
|
var code = dataGridViewIssues.Rows[e.RowIndex].Cells["ErrorCode"].Value.ToString();
|
||||||
|
if (_issues.TryGetValue(code, out var url))
|
||||||
|
{
|
||||||
|
System.Diagnostics.Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = url,
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="ErrorCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="Link.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Buildnummer
|
// Buildnummer
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("2.4.405")]
|
[assembly: AssemblyVersion("3.0.500")]
|
||||||
[assembly: AssemblyFileVersion("2.4.405")]
|
[assembly: AssemblyFileVersion("3.0.500")]
|
||||||
Reference in new issue
Block a user