Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
631bb2e763 | ||
|
|
45cdeab25a | ||
|
|
dafb636635 | ||
|
|
a0e229c792 |
No files matched your search
@@ -0,0 +1,161 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{a2038e07-e21f-4b05-b811-3052a2b014bc}</ProjectGuid>
|
||||||
|
<RootNamespace>CpuCheckNative</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<TargetName>$(ProjectName)</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;CPUCHECKNATIVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;CPUCHECKNATIVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;CPUCHECKNATIVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;CPUCHECKNATIVE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableUAC>false</EnableUAC>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h" />
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp" />
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="PopcntCheck.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Quelldateien">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Headerdateien">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Ressourcendateien">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="pch.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="PopcntCheck.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include <intrin.h>
|
||||||
|
|
||||||
|
extern "C" __declspec(dllexport) bool __cdecl HasPopcnt()
|
||||||
|
{
|
||||||
|
int cpuInfo[4] = { 0 };
|
||||||
|
|
||||||
|
// Get CPU info by calling __cpuid, which fills the cpuInfo array with CPU feature flags
|
||||||
|
__cpuid(cpuInfo, 1);
|
||||||
|
|
||||||
|
// Check if the processor supports SSE4.2 (bit 20 of the ECX register)
|
||||||
|
bool hasSSE42 = (cpuInfo[2] & (1 << 20)) != 0;
|
||||||
|
|
||||||
|
// Check if the processor supports POPCNT (bit 23 of the ECX register)
|
||||||
|
bool hasPOPCNT = (cpuInfo[2] & (1 << 23)) != 0;
|
||||||
|
|
||||||
|
// POPCNT is the critical instruction for Windows 11 upgrade compatibility!!
|
||||||
|
// If both SSE4.2 and POPCNT are supported, yeah we can return true; otherwise, false
|
||||||
|
return hasSSE42 && hasPOPCNT;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||||
|
DWORD ul_reason_for_call,
|
||||||
|
LPVOID lpReserved
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch (ul_reason_for_call)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
case DLL_THREAD_ATTACH:
|
||||||
|
case DLL_THREAD_DETACH:
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen
|
||||||
|
// Windows-Headerdateien
|
||||||
|
#include <windows.h>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
// Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// pch.h: Dies ist eine vorkompilierte Headerdatei.
|
||||||
|
// Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern.
|
||||||
|
// Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen.
|
||||||
|
// Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird.
|
||||||
|
// Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt.
|
||||||
|
|
||||||
|
#ifndef PCH_H
|
||||||
|
#define PCH_H
|
||||||
|
|
||||||
|
// Fügen Sie hier Header hinzu, die vorkompiliert werden sollen.
|
||||||
|
#include "framework.h"
|
||||||
|
|
||||||
|
#endif //PCH_H
|
||||||
Generated
+123
-127
@@ -29,18 +29,18 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.btnBack = new System.Windows.Forms.Button();
|
this.btnBack = new System.Windows.Forms.Button();
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.lblPtHdr = new System.Windows.Forms.Label();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.lblPtAns = new System.Windows.Forms.Label();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.lblPtHdr2 = new System.Windows.Forms.Label();
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
this.lblPtAns3 = new System.Windows.Forms.Label();
|
||||||
this.linkPCHealthCheckApp = new System.Windows.Forms.LinkLabel();
|
this.linkPtAns3 = new System.Windows.Forms.LinkLabel();
|
||||||
this.statusLabel = new System.Windows.Forms.Label();
|
this.statusLabel = new System.Windows.Forms.Label();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.lblPtAns4 = new System.Windows.Forms.Label();
|
||||||
this.btnWindowsUpdate = new System.Windows.Forms.Button();
|
this.btnWindowsUpdate = new System.Windows.Forms.Button();
|
||||||
this.linkHardwareSpecs = new System.Windows.Forms.LinkLabel();
|
this.linkPtAns2 = new System.Windows.Forms.LinkLabel();
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
this.lblPtAns2 = new System.Windows.Forms.Label();
|
||||||
this.btnPatch = new System.Windows.Forms.Button();
|
this.btnPatch = new System.Windows.Forms.Button();
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
this.lblPtAns5 = new System.Windows.Forms.Label();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// btnBack
|
// btnBack
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
this.btnBack.FlatAppearance.BorderSize = 0;
|
this.btnBack.FlatAppearance.BorderSize = 0;
|
||||||
this.btnBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.btnBack.Font = new System.Drawing.Font("Segoe MDL2 Assets", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.btnBack.Font = new System.Drawing.Font("Segoe MDL2 Assets", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.btnBack.ForeColor = System.Drawing.Color.DarkGray;
|
this.btnBack.ForeColor = System.Drawing.Color.DimGray;
|
||||||
this.btnBack.Location = new System.Drawing.Point(0, 0);
|
this.btnBack.Location = new System.Drawing.Point(0, 0);
|
||||||
this.btnBack.Name = "btnBack";
|
this.btnBack.Name = "btnBack";
|
||||||
this.btnBack.Size = new System.Drawing.Size(34, 29);
|
this.btnBack.Size = new System.Drawing.Size(34, 29);
|
||||||
@@ -59,82 +59,80 @@
|
|||||||
this.btnBack.UseVisualStyleBackColor = true;
|
this.btnBack.UseVisualStyleBackColor = true;
|
||||||
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
|
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
|
||||||
//
|
//
|
||||||
// label1
|
// lblPtHdr
|
||||||
//
|
//
|
||||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtHdr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label1.AutoEllipsis = true;
|
this.lblPtHdr.AutoEllipsis = true;
|
||||||
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtHdr.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label1.ForeColor = System.Drawing.Color.Black;
|
this.lblPtHdr.ForeColor = System.Drawing.Color.Black;
|
||||||
this.label1.Location = new System.Drawing.Point(12, 55);
|
this.lblPtHdr.Location = new System.Drawing.Point(12, 55);
|
||||||
this.label1.Name = "label1";
|
this.lblPtHdr.Name = "lblPtHdr";
|
||||||
this.label1.Size = new System.Drawing.Size(534, 17);
|
this.lblPtHdr.Size = new System.Drawing.Size(534, 17);
|
||||||
this.label1.TabIndex = 233;
|
this.lblPtHdr.TabIndex = 233;
|
||||||
this.label1.Text = "An existing Windows 10 device can be upgraded to Windows 11 if it meets the follo" +
|
this.lblPtHdr.Text = "An existing Windows 10 device can be upgraded to Windows 11 if it meets the follo" +
|
||||||
"wing criteria:";
|
"wing criteria:";
|
||||||
//
|
//
|
||||||
// label2
|
// lblPtAns
|
||||||
//
|
//
|
||||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtAns.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label2.AutoEllipsis = true;
|
this.lblPtAns.AutoEllipsis = true;
|
||||||
this.label2.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtAns.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label2.Location = new System.Drawing.Point(33, 89);
|
this.lblPtAns.Location = new System.Drawing.Point(33, 89);
|
||||||
this.label2.Name = "label2";
|
this.lblPtAns.Name = "lblPtAns";
|
||||||
this.label2.Size = new System.Drawing.Size(513, 36);
|
this.lblPtAns.Size = new System.Drawing.Size(513, 36);
|
||||||
this.label2.TabIndex = 234;
|
this.lblPtAns.TabIndex = 234;
|
||||||
this.label2.Text = "1. The device is running a currently supported version of Windows 10. If the devi" +
|
this.lblPtAns.Text = "1. The device is running a currently supported version of Windows 10. If the devi" +
|
||||||
"ce isn\'t currently running a supported version of Windows 10, upgrade to a suppo" +
|
"ce isn\'t currently running a supported version of Windows 10, upgrade to a suppo" +
|
||||||
"rted version of Windows 10.";
|
"rted version of Windows 10.";
|
||||||
//
|
//
|
||||||
// label4
|
// lblPtHdr2
|
||||||
//
|
//
|
||||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtHdr2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label4.AutoEllipsis = true;
|
this.lblPtHdr2.AutoEllipsis = true;
|
||||||
this.label4.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtHdr2.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label4.ForeColor = System.Drawing.Color.Black;
|
this.lblPtHdr2.ForeColor = System.Drawing.Color.Black;
|
||||||
this.label4.Location = new System.Drawing.Point(12, 161);
|
this.lblPtHdr2.Location = new System.Drawing.Point(12, 161);
|
||||||
this.label4.Name = "label4";
|
this.lblPtHdr2.Name = "lblPtHdr2";
|
||||||
this.label4.Size = new System.Drawing.Size(534, 17);
|
this.lblPtHdr2.Size = new System.Drawing.Size(534, 17);
|
||||||
this.label4.TabIndex = 236;
|
this.lblPtHdr2.TabIndex = 236;
|
||||||
this.label4.Text = "To see if a Windows 10 device is eligible to upgrade to Windows 11, follow one of" +
|
this.lblPtHdr2.Text = "To see if a Windows 10 device is eligible to upgrade to Windows 11, follow one of" +
|
||||||
" these options:";
|
" these options:";
|
||||||
|
this.lblPtHdr2.Click += new System.EventHandler(this.lblPtHdr2_Click);
|
||||||
//
|
//
|
||||||
// label5
|
// lblPtAns3
|
||||||
//
|
//
|
||||||
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtAns3.AutoEllipsis = true;
|
||||||
|
this.lblPtAns3.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblPtAns3.Location = new System.Drawing.Point(33, 194);
|
||||||
|
this.lblPtAns3.Name = "lblPtAns3";
|
||||||
|
this.lblPtAns3.Size = new System.Drawing.Size(135, 16);
|
||||||
|
this.lblPtAns3.TabIndex = 237;
|
||||||
|
this.lblPtAns3.Text = "1. Download and run the";
|
||||||
|
//
|
||||||
|
// linkPtAns3
|
||||||
|
//
|
||||||
|
this.linkPtAns3.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||||
|
this.linkPtAns3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label5.AutoEllipsis = true;
|
this.linkPtAns3.AutoEllipsis = true;
|
||||||
this.label5.AutoSize = true;
|
this.linkPtAns3.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label5.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.linkPtAns3.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||||
this.label5.Location = new System.Drawing.Point(33, 194);
|
this.linkPtAns3.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||||
this.label5.Name = "label5";
|
this.linkPtAns3.Location = new System.Drawing.Point(167, 194);
|
||||||
this.label5.Size = new System.Drawing.Size(135, 16);
|
this.linkPtAns3.Name = "linkPtAns3";
|
||||||
this.label5.TabIndex = 237;
|
this.linkPtAns3.Size = new System.Drawing.Size(394, 16);
|
||||||
this.label5.Text = "1. Download and run the";
|
this.linkPtAns3.TabIndex = 261;
|
||||||
//
|
this.linkPtAns3.TabStop = true;
|
||||||
// linkPCHealthCheckApp
|
this.linkPtAns3.Text = "WhyNotWin11 app to confirm your device meets the minimum system requirements";
|
||||||
//
|
this.linkPtAns3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPCHealthCheckApp_LinkClicked);
|
||||||
this.linkPCHealthCheckApp.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
|
||||||
this.linkPCHealthCheckApp.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.linkPCHealthCheckApp.AutoEllipsis = true;
|
|
||||||
this.linkPCHealthCheckApp.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
||||||
this.linkPCHealthCheckApp.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
|
||||||
this.linkPCHealthCheckApp.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
|
||||||
this.linkPCHealthCheckApp.Location = new System.Drawing.Point(165, 194);
|
|
||||||
this.linkPCHealthCheckApp.Name = "linkPCHealthCheckApp";
|
|
||||||
this.linkPCHealthCheckApp.Size = new System.Drawing.Size(394, 16);
|
|
||||||
this.linkPCHealthCheckApp.TabIndex = 261;
|
|
||||||
this.linkPCHealthCheckApp.TabStop = true;
|
|
||||||
this.linkPCHealthCheckApp.Text = "WhyNotWin11 app to confirm your device meets the minimum system requirements";
|
|
||||||
this.linkPCHealthCheckApp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPCHealthCheckApp_LinkClicked);
|
|
||||||
//
|
//
|
||||||
// statusLabel
|
// statusLabel
|
||||||
//
|
//
|
||||||
this.statusLabel.AutoEllipsis = true;
|
this.statusLabel.AutoEllipsis = true;
|
||||||
this.statusLabel.BackColor = System.Drawing.Color.Gainsboro;
|
this.statusLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232)))));
|
||||||
this.statusLabel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
this.statusLabel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
this.statusLabel.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.statusLabel.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.statusLabel.Location = new System.Drawing.Point(0, 552);
|
this.statusLabel.Location = new System.Drawing.Point(0, 552);
|
||||||
@@ -143,17 +141,17 @@
|
|||||||
this.statusLabel.TabIndex = 262;
|
this.statusLabel.TabIndex = 262;
|
||||||
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
//
|
//
|
||||||
// label6
|
// lblPtAns4
|
||||||
//
|
//
|
||||||
this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtAns4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label6.AutoEllipsis = true;
|
this.lblPtAns4.AutoEllipsis = true;
|
||||||
this.label6.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtAns4.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label6.Location = new System.Drawing.Point(33, 220);
|
this.lblPtAns4.Location = new System.Drawing.Point(33, 220);
|
||||||
this.label6.Name = "label6";
|
this.lblPtAns4.Name = "lblPtAns4";
|
||||||
this.label6.Size = new System.Drawing.Size(523, 27);
|
this.lblPtAns4.Size = new System.Drawing.Size(523, 27);
|
||||||
this.label6.TabIndex = 263;
|
this.lblPtAns4.TabIndex = 263;
|
||||||
this.label6.Text = "2. Select the following Windows Update shortcut and then select the Check for upd" +
|
this.lblPtAns4.Text = "2. Select the following Windows Update shortcut and then select the Check for upd" +
|
||||||
"ates button:";
|
"ates button:";
|
||||||
//
|
//
|
||||||
// btnWindowsUpdate
|
// btnWindowsUpdate
|
||||||
@@ -176,33 +174,30 @@
|
|||||||
this.btnWindowsUpdate.UseVisualStyleBackColor = false;
|
this.btnWindowsUpdate.UseVisualStyleBackColor = false;
|
||||||
this.btnWindowsUpdate.Click += new System.EventHandler(this.btnWindowsUpdate_Click);
|
this.btnWindowsUpdate.Click += new System.EventHandler(this.btnWindowsUpdate_Click);
|
||||||
//
|
//
|
||||||
// linkHardwareSpecs
|
// linkPtAns2
|
||||||
//
|
//
|
||||||
this.linkHardwareSpecs.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
this.linkPtAns2.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||||
this.linkHardwareSpecs.AutoEllipsis = true;
|
this.linkPtAns2.AutoEllipsis = true;
|
||||||
this.linkHardwareSpecs.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.linkPtAns2.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.linkHardwareSpecs.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
this.linkPtAns2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||||
this.linkHardwareSpecs.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
this.linkPtAns2.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||||
this.linkHardwareSpecs.Location = new System.Drawing.Point(144, 134);
|
this.linkPtAns2.Location = new System.Drawing.Point(144, 134);
|
||||||
this.linkHardwareSpecs.Name = "linkHardwareSpecs";
|
this.linkPtAns2.Name = "linkPtAns2";
|
||||||
this.linkHardwareSpecs.Size = new System.Drawing.Size(402, 16);
|
this.linkPtAns2.Size = new System.Drawing.Size(402, 16);
|
||||||
this.linkHardwareSpecs.TabIndex = 265;
|
this.linkPtAns2.TabIndex = 265;
|
||||||
this.linkHardwareSpecs.TabStop = true;
|
this.linkPtAns2.TabStop = true;
|
||||||
this.linkHardwareSpecs.Text = "the minimum hardware specifications to run Windows 11.";
|
this.linkPtAns2.Text = "the minimum hardware specifications to run Windows 11.";
|
||||||
this.linkHardwareSpecs.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkHardwareSpecs_LinkClicked);
|
this.linkPtAns2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkHardwareSpecs_LinkClicked);
|
||||||
//
|
//
|
||||||
// label3
|
// lblPtAns2
|
||||||
//
|
//
|
||||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtAns2.AutoEllipsis = true;
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
this.lblPtAns2.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label3.AutoEllipsis = true;
|
this.lblPtAns2.Location = new System.Drawing.Point(34, 134);
|
||||||
this.label3.AutoSize = true;
|
this.lblPtAns2.Name = "lblPtAns2";
|
||||||
this.label3.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtAns2.Size = new System.Drawing.Size(111, 16);
|
||||||
this.label3.Location = new System.Drawing.Point(34, 134);
|
this.lblPtAns2.TabIndex = 266;
|
||||||
this.label3.Name = "label3";
|
this.lblPtAns2.Text = "2. The device meets";
|
||||||
this.label3.Size = new System.Drawing.Size(111, 16);
|
|
||||||
this.label3.TabIndex = 266;
|
|
||||||
this.label3.Text = "2. The device meets";
|
|
||||||
//
|
//
|
||||||
// btnPatch
|
// btnPatch
|
||||||
//
|
//
|
||||||
@@ -224,17 +219,17 @@
|
|||||||
this.btnPatch.UseVisualStyleBackColor = false;
|
this.btnPatch.UseVisualStyleBackColor = false;
|
||||||
this.btnPatch.Click += new System.EventHandler(this.btnPatch_Click);
|
this.btnPatch.Click += new System.EventHandler(this.btnPatch_Click);
|
||||||
//
|
//
|
||||||
// label7
|
// lblPtAns5
|
||||||
//
|
//
|
||||||
this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.lblPtAns5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.label7.AutoEllipsis = true;
|
this.lblPtAns5.AutoEllipsis = true;
|
||||||
this.label7.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.lblPtAns5.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label7.Location = new System.Drawing.Point(33, 288);
|
this.lblPtAns5.Location = new System.Drawing.Point(33, 288);
|
||||||
this.label7.Name = "label7";
|
this.lblPtAns5.Name = "lblPtAns5";
|
||||||
this.label7.Size = new System.Drawing.Size(513, 40);
|
this.lblPtAns5.Size = new System.Drawing.Size(513, 40);
|
||||||
this.label7.TabIndex = 268;
|
this.lblPtAns5.TabIndex = 268;
|
||||||
this.label7.Text = "3. Your device does not meet the official requirements for Windows 11? You can ap" +
|
this.lblPtAns5.Text = "3. Your device does not meet the official requirements for Windows 11? You can ap" +
|
||||||
"ply a compatibility patch to enable the Inplace Upgrade via Windows Update.";
|
"ply a compatibility patch to enable the Inplace Upgrade via Windows Update.";
|
||||||
//
|
//
|
||||||
// CanIUpgradeView
|
// CanIUpgradeView
|
||||||
@@ -242,18 +237,19 @@
|
|||||||
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.Controls.Add(this.label7);
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
|
||||||
|
this.Controls.Add(this.lblPtAns5);
|
||||||
this.Controls.Add(this.btnPatch);
|
this.Controls.Add(this.btnPatch);
|
||||||
this.Controls.Add(this.label3);
|
this.Controls.Add(this.lblPtAns2);
|
||||||
this.Controls.Add(this.linkHardwareSpecs);
|
this.Controls.Add(this.linkPtAns2);
|
||||||
this.Controls.Add(this.btnWindowsUpdate);
|
this.Controls.Add(this.btnWindowsUpdate);
|
||||||
this.Controls.Add(this.label6);
|
this.Controls.Add(this.lblPtAns4);
|
||||||
this.Controls.Add(this.statusLabel);
|
this.Controls.Add(this.statusLabel);
|
||||||
this.Controls.Add(this.linkPCHealthCheckApp);
|
this.Controls.Add(this.linkPtAns3);
|
||||||
this.Controls.Add(this.label5);
|
this.Controls.Add(this.lblPtAns3);
|
||||||
this.Controls.Add(this.label4);
|
this.Controls.Add(this.lblPtHdr2);
|
||||||
this.Controls.Add(this.label2);
|
this.Controls.Add(this.lblPtAns);
|
||||||
this.Controls.Add(this.label1);
|
this.Controls.Add(this.lblPtHdr);
|
||||||
this.Controls.Add(this.btnBack);
|
this.Controls.Add(this.btnBack);
|
||||||
this.Name = "CanIUpgradeView";
|
this.Name = "CanIUpgradeView";
|
||||||
this.Size = new System.Drawing.Size(561, 585);
|
this.Size = new System.Drawing.Size(561, 585);
|
||||||
@@ -265,17 +261,17 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Button btnBack;
|
private System.Windows.Forms.Button btnBack;
|
||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label lblPtHdr;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label lblPtAns;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label lblPtHdr2;
|
||||||
private System.Windows.Forms.Label label5;
|
private System.Windows.Forms.Label lblPtAns3;
|
||||||
private System.Windows.Forms.LinkLabel linkPCHealthCheckApp;
|
private System.Windows.Forms.LinkLabel linkPtAns3;
|
||||||
private System.Windows.Forms.Label statusLabel;
|
private System.Windows.Forms.Label statusLabel;
|
||||||
private System.Windows.Forms.Label label6;
|
private System.Windows.Forms.Label lblPtAns4;
|
||||||
private System.Windows.Forms.Button btnWindowsUpdate;
|
private System.Windows.Forms.Button btnWindowsUpdate;
|
||||||
private System.Windows.Forms.LinkLabel linkHardwareSpecs;
|
private System.Windows.Forms.LinkLabel linkPtAns2;
|
||||||
private System.Windows.Forms.Label label3;
|
private System.Windows.Forms.Label lblPtAns2;
|
||||||
private System.Windows.Forms.Button btnPatch;
|
private System.Windows.Forms.Button btnPatch;
|
||||||
private System.Windows.Forms.Label label7;
|
private System.Windows.Forms.Label lblPtAns5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,10 +15,24 @@ namespace Flyby11
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
isoHandler = new IsoHandler(UpdateStatusLabel);
|
isoHandler = new IsoHandler(UpdateStatusLabel);
|
||||||
|
InitializeLocalizedStrings();
|
||||||
SetStyle();
|
SetStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitializeLocalizedStrings()
|
||||||
|
{
|
||||||
|
lblPtHdr.Text = Locales.Strings.ciuView_lblPtHdr;
|
||||||
|
lblPtHdr2.Text = Locales.Strings.ciuView_lblPtHdr2;
|
||||||
|
lblPtAns.Text = Locales.Strings.ciuView_lblPtAns;
|
||||||
|
lblPtAns2.Text = Locales.Strings.ciuView_lblPtAns2;
|
||||||
|
lblPtAns3.Text = Locales.Strings.ciuView_lblPtAns3;
|
||||||
|
lblPtAns4.Text = Locales.Strings.ciuView_lblPtAns4;
|
||||||
|
lblPtAns5.Text = Locales.Strings.ciuView_lblPtAns5;
|
||||||
|
linkPtAns2.Text = Locales.Strings.ciuView_linkPtAns2; // PC Health Check app
|
||||||
|
linkPtAns3.Text = Locales.Strings.ciuView_linkPtAns3; // Hardware requirements
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void SetStyle()
|
private void SetStyle()
|
||||||
{
|
{
|
||||||
// Segoe MDL2 Assets
|
// Segoe MDL2 Assets
|
||||||
@@ -233,5 +247,10 @@ namespace Flyby11
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lblPtHdr2_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Generated
+113
@@ -0,0 +1,113 @@
|
|||||||
|
namespace Flyby11
|
||||||
|
{
|
||||||
|
partial class ClippyUI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Designervariable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verwendete Ressourcen bereinigen.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Vom Windows Form-Designer generierter Code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Methode für die Designerunterstützung.
|
||||||
|
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
this.assetClippy = new System.Windows.Forms.PictureBox();
|
||||||
|
this.lblClosePane = new System.Windows.Forms.Label();
|
||||||
|
this.lblHelp = new System.Windows.Forms.Label();
|
||||||
|
this.tt = new System.Windows.Forms.ToolTip(this.components);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.assetClippy)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// assetClippy
|
||||||
|
//
|
||||||
|
this.assetClippy.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.assetClippy.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.assetClippy.Name = "assetClippy";
|
||||||
|
this.assetClippy.Size = new System.Drawing.Size(163, 160);
|
||||||
|
this.assetClippy.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||||
|
this.assetClippy.TabIndex = 0;
|
||||||
|
this.assetClippy.TabStop = false;
|
||||||
|
this.assetClippy.MouseDown += new System.Windows.Forms.MouseEventHandler(this.assetClippy_MouseDown);
|
||||||
|
this.assetClippy.MouseMove += new System.Windows.Forms.MouseEventHandler(this.assetClippy_MouseMove);
|
||||||
|
//
|
||||||
|
// lblClosePane
|
||||||
|
//
|
||||||
|
this.lblClosePane.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblClosePane.AutoEllipsis = true;
|
||||||
|
this.lblClosePane.AutoSize = true;
|
||||||
|
this.lblClosePane.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.lblClosePane.Font = new System.Drawing.Font("Segoe MDL2 Assets", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblClosePane.ForeColor = System.Drawing.Color.DimGray;
|
||||||
|
this.lblClosePane.Location = new System.Drawing.Point(137, 9);
|
||||||
|
this.lblClosePane.Name = "lblClosePane";
|
||||||
|
this.lblClosePane.Size = new System.Drawing.Size(19, 13);
|
||||||
|
this.lblClosePane.TabIndex = 4;
|
||||||
|
this.lblClosePane.Text = "...";
|
||||||
|
this.lblClosePane.Click += new System.EventHandler(this.lblClosePane_Click);
|
||||||
|
//
|
||||||
|
// lblHelp
|
||||||
|
//
|
||||||
|
this.lblHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblHelp.AutoEllipsis = true;
|
||||||
|
this.lblHelp.AutoSize = true;
|
||||||
|
this.lblHelp.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.lblHelp.Font = new System.Drawing.Font("Segoe MDL2 Assets", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblHelp.ForeColor = System.Drawing.Color.DeepPink;
|
||||||
|
this.lblHelp.Location = new System.Drawing.Point(112, 9);
|
||||||
|
this.lblHelp.Name = "lblHelp";
|
||||||
|
this.lblHelp.Size = new System.Drawing.Size(19, 13);
|
||||||
|
this.lblHelp.TabIndex = 5;
|
||||||
|
this.lblHelp.Text = "...";
|
||||||
|
this.tt.SetToolTip(this.lblHelp, "Need more help?");
|
||||||
|
this.lblHelp.Click += new System.EventHandler(this.lblHelp_Click);
|
||||||
|
//
|
||||||
|
// tt
|
||||||
|
//
|
||||||
|
this.tt.IsBalloon = true;
|
||||||
|
//
|
||||||
|
// ClippyUI
|
||||||
|
//
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
|
this.ClientSize = new System.Drawing.Size(163, 160);
|
||||||
|
this.ControlBox = false;
|
||||||
|
this.Controls.Add(this.lblHelp);
|
||||||
|
this.Controls.Add(this.lblClosePane);
|
||||||
|
this.Controls.Add(this.assetClippy);
|
||||||
|
this.Name = "ClippyUI";
|
||||||
|
this.Opacity = 0.9D;
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.assetClippy)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.PictureBox assetClippy;
|
||||||
|
private System.Windows.Forms.Label lblClosePane;
|
||||||
|
private System.Windows.Forms.Label lblHelp;
|
||||||
|
private System.Windows.Forms.ToolTip tt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyby11
|
||||||
|
{
|
||||||
|
public partial class ClippyUI : Form
|
||||||
|
{
|
||||||
|
private Point mouseDownLocation;
|
||||||
|
private Logger logger;
|
||||||
|
private MainForm mainForm;
|
||||||
|
|
||||||
|
public ClippyUI(MainForm mainForm, Logger logger)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
this.mainForm = mainForm;
|
||||||
|
this.logger = logger;
|
||||||
|
|
||||||
|
// Initialize ClippyUI appearance and position
|
||||||
|
InitializeFormAppearance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeFormAppearance()
|
||||||
|
{
|
||||||
|
// Segoe MDL2 Assets
|
||||||
|
lblClosePane.Text = "\uE8BB";
|
||||||
|
lblHelp.Text = "\uE897";
|
||||||
|
|
||||||
|
// Remove the form border
|
||||||
|
this.FormBorderStyle = FormBorderStyle.None;
|
||||||
|
|
||||||
|
// Take a screenshot of the desktop
|
||||||
|
Bitmap desktopScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
|
||||||
|
using (Graphics g = Graphics.FromImage(desktopScreenshot))
|
||||||
|
{
|
||||||
|
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, desktopScreenshot.Size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine color of the pixel under form
|
||||||
|
Point formLocation = this.PointToScreen(Point.Empty);
|
||||||
|
Color desktopColor = desktopScreenshot.GetPixel(formLocation.X + this.Width / 2, formLocation.Y + this.Height / 2);
|
||||||
|
|
||||||
|
// Set PictureBox properties
|
||||||
|
assetClippy.Size = new Size(150, 150);
|
||||||
|
|
||||||
|
// Make the form transparent
|
||||||
|
this.BackColor = desktopColor;
|
||||||
|
this.TransparencyKey = desktopColor;
|
||||||
|
|
||||||
|
// Load default Clippy image
|
||||||
|
string defaultImagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "clippy.png");
|
||||||
|
if (File.Exists(defaultImagePath))
|
||||||
|
{
|
||||||
|
assetClippy.Image = Image.FromFile(defaultImagePath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadRandomCharacter(); // fallback, no picture found
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetClippyPosition(Form mainForm)
|
||||||
|
{
|
||||||
|
int margin = 10;
|
||||||
|
|
||||||
|
// Get the working area of the screen
|
||||||
|
Rectangle screenBounds = Screen.FromControl(mainForm).WorkingArea;
|
||||||
|
|
||||||
|
// Calculate the position of the Clippy UI (right below the main form)
|
||||||
|
int x = Math.Min(mainForm.Location.X + mainForm.Width + margin, screenBounds.Right - this.Width);
|
||||||
|
int y = Math.Min(mainForm.Location.Y + mainForm.Height - this.Height, screenBounds.Bottom - this.Height);
|
||||||
|
|
||||||
|
this.StartPosition = FormStartPosition.Manual;
|
||||||
|
this.Location = new Point(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadRandomCharacter()
|
||||||
|
{
|
||||||
|
string directoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app\\assets");
|
||||||
|
string[] searchPatterns = { "clippy*.png", "clippy*.gif" };
|
||||||
|
|
||||||
|
List<string> matchingFiles = new List<string>();
|
||||||
|
foreach (string pattern in searchPatterns)
|
||||||
|
{
|
||||||
|
string[] files = Directory.GetFiles(directoryPath, pattern);
|
||||||
|
matchingFiles.AddRange(files);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (matchingFiles.Count > 0)
|
||||||
|
{
|
||||||
|
Random random = new Random();
|
||||||
|
int randomIndex = random.Next(0, matchingFiles.Count);
|
||||||
|
string randomClippyImagePath = matchingFiles[randomIndex];
|
||||||
|
assetClippy.Image = Image.FromFile(randomClippyImagePath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Oops! I can't work if I'm invisible. Please make sure Clippy is in the right place!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assetClippy_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
mouseDownLocation = e.Location;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventHandler for the MouseMove event of the Clippy image
|
||||||
|
private void assetClippy_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
// Update position of the SetupForm based on the movement of the Clippy image
|
||||||
|
this.Left += e.X - mouseDownLocation.X;
|
||||||
|
this.Top += e.Y - mouseDownLocation.Y;
|
||||||
|
|
||||||
|
// Update position of the MainForm relative to the new position of the SetupForm
|
||||||
|
mainForm.Left += e.X - mouseDownLocation.X;
|
||||||
|
mainForm.Top += e.Y - mouseDownLocation.Y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void lblClosePane_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
logger.Log("Looks like you're giving me the boot! No hard feelings—I'll be here if you need me again.", Color.DeepPink);
|
||||||
|
|
||||||
|
await Task.Delay(1000);
|
||||||
|
|
||||||
|
// Hide Clippy
|
||||||
|
this.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lblHelp_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
mainForm._faqHandler.AddNextFAQStep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
+122
-57
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -9,48 +10,100 @@ namespace Flyby11
|
|||||||
{
|
{
|
||||||
public class FAQHandler
|
public class FAQHandler
|
||||||
{
|
{
|
||||||
|
// Reference to the panel that will display the FAQ
|
||||||
private readonly Panel _faqPanel;
|
private readonly Panel _faqPanel;
|
||||||
|
|
||||||
|
// Delegate to update the app's status label (from main form)
|
||||||
private readonly Action<string> _updateStatus;
|
private readonly Action<string> _updateStatus;
|
||||||
|
|
||||||
|
private FlowLayoutPanel _faqContentPanel;
|
||||||
|
|
||||||
|
// List of individual FAQ entry steps (to add one by one)
|
||||||
|
private readonly List<Action<FlowLayoutPanel>> _faqSteps = new List<Action<FlowLayoutPanel>>();
|
||||||
|
|
||||||
|
private int _currentFaqStep = 0;
|
||||||
|
|
||||||
public FAQHandler(Panel faqPanel, Action<string> updateStatus)
|
public FAQHandler(Panel faqPanel, Action<string> updateStatus)
|
||||||
{
|
{
|
||||||
_faqPanel = faqPanel;
|
_faqPanel = faqPanel;
|
||||||
_updateStatus = updateStatus;
|
_updateStatus = updateStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initializes the FAQ view with basic content only
|
||||||
public void InitializeFAQ()
|
public void InitializeFAQ()
|
||||||
{
|
{
|
||||||
_faqPanel.AutoScroll = true;
|
_faqPanel.AutoScroll = true;
|
||||||
_faqPanel.Controls.Clear();
|
_faqPanel.Controls.Clear();
|
||||||
|
|
||||||
var faqContentPanel = new FlowLayoutPanel
|
_faqContentPanel = new FlowLayoutPanel
|
||||||
{
|
{
|
||||||
Dock = DockStyle.Fill,
|
Dock = DockStyle.Fill,
|
||||||
AutoScroll = true,
|
AutoScroll = true,
|
||||||
Padding = new Padding(10),
|
Padding = new Padding(10),
|
||||||
FlowDirection = FlowDirection.TopDown,
|
FlowDirection = FlowDirection.TopDown,
|
||||||
|
|
||||||
WrapContents = false
|
WrapContents = false
|
||||||
};
|
};
|
||||||
|
|
||||||
AddTitle(faqContentPanel);
|
// Add static FAQ content (header, ISO info, etc.)
|
||||||
AddISOFAQ(faqContentPanel);
|
AddTitle(_faqContentPanel);
|
||||||
AddOtherFAQs(faqContentPanel);
|
AddISOFAQ(_faqContentPanel);
|
||||||
|
|
||||||
_faqPanel.Controls.Add(faqContentPanel);
|
_faqPanel.Controls.Add(_faqContentPanel);
|
||||||
|
|
||||||
|
|
||||||
|
PrepareOtherFAQSteps(); // Prepare additional entries without adding them yet
|
||||||
|
AddNextFAQStep(); // Show second FAQ entry , Donate
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adds the next FAQ item from the list
|
||||||
|
public void AddNextFAQStep()
|
||||||
|
{
|
||||||
|
if (_currentFaqStep < _faqSteps.Count)
|
||||||
|
{
|
||||||
|
_faqSteps[_currentFaqStep](_faqContentPanel);
|
||||||
|
_currentFaqStep++;
|
||||||
|
|
||||||
|
// Scroll to the newly added element
|
||||||
|
var last = _faqContentPanel.Controls[_faqContentPanel.Controls.Count - 1];
|
||||||
|
_faqContentPanel.ScrollControlIntoView(last);
|
||||||
|
// Add some space below the last element
|
||||||
|
var m =last.Margin;
|
||||||
|
last.Margin = new Padding(m.Left, m.Top, m.Right, 20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_updateStatus("Well, it looks like I've done all I can here. If you need more help, you might want to reach out to the developer, Belim.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill list with FAQ methods – each step adds one block of content
|
||||||
|
private void PrepareOtherFAQSteps()
|
||||||
|
{
|
||||||
|
_faqSteps.Clear();
|
||||||
|
_currentFaqStep = 0;
|
||||||
|
|
||||||
|
_faqSteps.Add(AddFaq2);
|
||||||
|
_faqSteps.Add(AddFaq3);
|
||||||
|
_faqSteps.Add(AddFaq4);
|
||||||
|
_faqSteps.Add(AddFaq5);
|
||||||
|
_faqSteps.Add(AddFaq6);
|
||||||
|
_faqSteps.Add(AddFaq7);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adds the title section
|
||||||
private void AddTitle(FlowLayoutPanel parent)
|
private void AddTitle(FlowLayoutPanel parent)
|
||||||
{
|
{
|
||||||
AddLabel(parent, "Frequently Asked Questions (FAQ)", new Font("Arial", 10, FontStyle.Bold), DockStyle.Top, ContentAlignment.MiddleCenter, 10);
|
AddLabel(parent, Locales.Strings.faq_header, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), DockStyle.Top, ContentAlignment.MiddleCenter, 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adds the ISO download information (Q1/A1)
|
||||||
private void AddISOFAQ(FlowLayoutPanel parent)
|
private void AddISOFAQ(FlowLayoutPanel parent)
|
||||||
{
|
{
|
||||||
// Q: Where can I get the latest Windows 11 ISO?
|
AddLabel(parent, Locales.Strings.faq_q1, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
AddLabel(parent, "Q: Where can I get the latest Windows 11 ISO?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
AddLabel(parent, Locales.Strings.faq_a1, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
AddLabel(parent, "A: You can download the latest ISO from the official Microsoft website or use the Fido Downloader.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
|
||||||
|
|
||||||
// Create a FlowLayoutPanel to place the links next to each other
|
// Links below the answer
|
||||||
var linkPanel = new FlowLayoutPanel
|
var linkPanel = new FlowLayoutPanel
|
||||||
{
|
{
|
||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
@@ -58,50 +111,48 @@ namespace Flyby11
|
|||||||
WrapContents = true
|
WrapContents = true
|
||||||
};
|
};
|
||||||
|
|
||||||
// Microsoft link
|
AddFAQItem(linkPanel, Locales.Strings.faq_downloadMS, "https://www.microsoft.com/software-download/windows11");
|
||||||
AddFAQItem(linkPanel, "Microsoft Site", "https://www.microsoft.com/software-download/windows11");
|
AddFAQItemWithScript(linkPanel, Locales.Strings.faq_downloadFido, "or", "https://raw.githubusercontent.com/pbatard/Fido/refs/heads/master/Fido.ps1");
|
||||||
|
|
||||||
// Fido Downloader link (with text and URL, using AddFAQItemWithScript)
|
|
||||||
AddFAQItemWithScript(linkPanel, "Download via Fido (Recommended)", "or", "https://raw.githubusercontent.com/pbatard/Fido/refs/heads/master/Fido.ps1");
|
|
||||||
|
|
||||||
// Add the FlowLayoutPanel to the parent (FAQ panel)
|
|
||||||
parent.Controls.Add(linkPanel);
|
parent.Controls.Add(linkPanel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Simple link-only FAQ entry
|
||||||
private void AddFAQItem(FlowLayoutPanel parent, string linkText, string linkUrl)
|
private void AddFAQItem(FlowLayoutPanel parent, string linkText, string linkUrl)
|
||||||
{
|
{
|
||||||
// Create and add the link label with the provided text and URL
|
|
||||||
var linkLabel = new LinkLabel
|
var linkLabel = new LinkLabel
|
||||||
{
|
{
|
||||||
Text = linkText,
|
Text = linkText,
|
||||||
Font = new Font("Arial", 10, FontStyle.Underline),
|
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
||||||
LinkColor = Color.Blue,
|
LinkColor = Color.Blue,
|
||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
Padding = new Padding(10),
|
Padding = new Padding(10),
|
||||||
TextAlign = ContentAlignment.TopLeft
|
TextAlign = ContentAlignment.TopLeft,
|
||||||
|
UseCompatibleTextRendering = true
|
||||||
};
|
};
|
||||||
|
|
||||||
linkLabel.LinkClicked += (sender, e) => System.Diagnostics.Process.Start(linkUrl);
|
linkLabel.LinkClicked += (sender, e) => Process.Start(linkUrl);
|
||||||
parent.Controls.Add(linkLabel);
|
parent.Controls.Add(linkLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adds a downloadable script link (e.g., Fido.ps1)
|
||||||
private void AddFAQItemWithScript(FlowLayoutPanel parent, string linkText, string description, string scriptUrl)
|
private void AddFAQItemWithScript(FlowLayoutPanel parent, string linkText, string description, string scriptUrl)
|
||||||
{
|
{
|
||||||
// Create and add the description label
|
AddLabel(parent, description, new Font("Segoe UI Variable Display", 9), ContentAlignment.TopLeft, 11);
|
||||||
AddLabel(parent, description, new Font("Arial",9), ContentAlignment.TopLeft, 10);
|
|
||||||
|
|
||||||
// Create and add the link label
|
|
||||||
var linkLabel = new LinkLabel
|
var linkLabel = new LinkLabel
|
||||||
{
|
{
|
||||||
Text = linkText,
|
Text = linkText,
|
||||||
Font = new Font("Arial", 10, FontStyle.Underline),
|
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
||||||
LinkColor = Color.Blue,
|
LinkColor = Color.Blue,
|
||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
Padding = new Padding(10),
|
Padding = new Padding(10),
|
||||||
TextAlign = ContentAlignment.TopLeft
|
TextAlign = ContentAlignment.TopLeft,
|
||||||
|
UseCompatibleTextRendering = true
|
||||||
};
|
};
|
||||||
|
|
||||||
linkLabel.LinkClicked += async (sender, e) =>
|
linkLabel.Click += (sender, e) =>
|
||||||
{
|
{
|
||||||
string tempScriptPath = Path.Combine(Path.GetTempPath(), "Fido.ps1");
|
string tempScriptPath = Path.Combine(Path.GetTempPath(), "Fido.ps1");
|
||||||
|
|
||||||
@@ -109,10 +160,12 @@ namespace Flyby11
|
|||||||
{
|
{
|
||||||
using (var client = new WebClient())
|
using (var client = new WebClient())
|
||||||
{
|
{
|
||||||
await client.DownloadFileTaskAsync(new Uri(scriptUrl), tempScriptPath);
|
// Download script to temp folder
|
||||||
|
client.DownloadFile(new Uri(scriptUrl), tempScriptPath);
|
||||||
_updateStatus("Fido downloaded successfully! Now running the script...");
|
_updateStatus("Fido downloaded successfully! Now running the script...");
|
||||||
|
|
||||||
System.Diagnostics.Process.Start(new ProcessStartInfo
|
// Run script using elevated PowerShell
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = "powershell.exe",
|
FileName = "powershell.exe",
|
||||||
Arguments = $"-ExecutionPolicy Bypass -File \"{tempScriptPath}\"",
|
Arguments = $"-ExecutionPolicy Bypass -File \"{tempScriptPath}\"",
|
||||||
@@ -131,6 +184,7 @@ namespace Flyby11
|
|||||||
parent.Controls.Add(linkLabel);
|
parent.Controls.Add(linkLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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)
|
||||||
{
|
{
|
||||||
var label = new Label
|
var label = new Label
|
||||||
@@ -139,11 +193,13 @@ namespace Flyby11
|
|||||||
Font = font,
|
Font = font,
|
||||||
Padding = new Padding(padding),
|
Padding = new Padding(padding),
|
||||||
TextAlign = alignment,
|
TextAlign = alignment,
|
||||||
AutoSize = true
|
AutoSize = true,
|
||||||
|
UseCompatibleTextRendering = true
|
||||||
};
|
};
|
||||||
parent.Controls.Add(label);
|
parent.Controls.Add(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Overload for labels with DockStyle
|
||||||
private void AddLabel(FlowLayoutPanel parent, string text, Font font, DockStyle dock, ContentAlignment alignment, int padding = 0)
|
private void AddLabel(FlowLayoutPanel parent, string text, Font font, DockStyle dock, ContentAlignment alignment, int padding = 0)
|
||||||
{
|
{
|
||||||
var label = new Label
|
var label = new Label
|
||||||
@@ -153,58 +209,67 @@ namespace Flyby11
|
|||||||
Padding = new Padding(padding),
|
Padding = new Padding(padding),
|
||||||
Dock = dock,
|
Dock = dock,
|
||||||
TextAlign = alignment,
|
TextAlign = alignment,
|
||||||
AutoSize = true
|
AutoSize = true,
|
||||||
|
UseCompatibleTextRendering = true,
|
||||||
};
|
};
|
||||||
parent.Controls.Add(label);
|
parent.Controls.Add(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adds FAQ entry with question + answer + link
|
||||||
private void AddFAQItem(FlowLayoutPanel parent, string question, string answer, string linkText, string linkUrl)
|
private void AddFAQItem(FlowLayoutPanel parent, string question, string answer, string linkText, string linkUrl)
|
||||||
{
|
{
|
||||||
AddLabel(parent, question, new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
AddLabel(parent, question, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
AddLabel(parent, answer, new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddLabel(parent, answer, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
|
||||||
var linkLabel = new LinkLabel
|
var linkLabel = new LinkLabel
|
||||||
{
|
{
|
||||||
Text = linkText,
|
Text = linkText,
|
||||||
Font = new Font("Arial", 10, FontStyle.Underline),
|
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
||||||
LinkColor = Color.Blue,
|
LinkColor = Color.Blue,
|
||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
Padding = new Padding(10),
|
Padding = new Padding(10),
|
||||||
TextAlign = ContentAlignment.TopLeft
|
TextAlign = ContentAlignment.TopLeft,
|
||||||
|
UseCompatibleTextRendering = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
linkLabel.LinkClicked += (sender, e) => System.Diagnostics.Process.Start(linkUrl);
|
linkLabel.LinkClicked += (sender, e) => Process.Start(linkUrl);
|
||||||
parent.Controls.Add(linkLabel);
|
parent.Controls.Add(linkLabel);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddOtherFAQs(FlowLayoutPanel parent)
|
// -- Individual FAQ entries --
|
||||||
|
|
||||||
|
private void AddFaq2(FlowLayoutPanel panel)
|
||||||
{
|
{
|
||||||
|
AddFAQItem(panel, Locales.Strings.faq_q2, Locales.Strings.faq_a2, Locales.Strings.faq_a2Link, "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG");
|
||||||
// Q: How can I support the developer?
|
}
|
||||||
AddFAQItem(parent, "Q: How can I support the developer?", "A: If you've successfully installed Windows 11 and saved some money, feel free to leave a little something as a thank-you here.", "Click here to donate and show your support.", "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG");
|
|
||||||
|
|
||||||
// Q: How does the setup process work once the ISO is mounted?
|
private void AddFaq3(FlowLayoutPanel panel)
|
||||||
AddLabel(parent, "Q: How does the setup process work once the ISO is mounted?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
{
|
||||||
AddLabel(parent, "A: Once the ISO is mounted, the setup process runs in the background. The Windows installer starts, guiding you through the steps required to install Windows 11 on your machine.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddLabel(panel, Locales.Strings.faq_q3, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
|
AddLabel(panel, Locales.Strings.faq_a3, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
}
|
||||||
|
|
||||||
// Q: What if I encounter issues during installation?
|
private void AddFaq4(FlowLayoutPanel panel)
|
||||||
AddLabel(parent, "Q: What if I encounter issues during installation?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
{
|
||||||
AddLabel(parent, "A: Please check the error messages and report it on GitHub.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddLabel(panel, Locales.Strings.faq_q4, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
|
AddLabel(panel, Locales.Strings.faq_a4, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
}
|
||||||
|
|
||||||
// Q: What is the setup path for Windows 11?
|
private void AddFaq5(FlowLayoutPanel panel)
|
||||||
AddLabel(parent, "Q: What is the setup path for Windows 11?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
{
|
||||||
AddLabel(parent, "A: The setup path is typically found under the 'sources' folder on the mounted ISO drive.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddLabel(panel, Locales.Strings.faq_q5, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
|
AddLabel(panel, Locales.Strings.faq_a5, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
}
|
||||||
|
|
||||||
// Q: Is it legal to use this method?
|
private void AddFaq6(FlowLayoutPanel panel)
|
||||||
AddLabel(parent, "Q: Is it legal to use this method?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
{
|
||||||
AddLabel(parent, "A: Yes, Microsoft has left a backdoor open. This method leverages a feature of the Windows 11 setup process that uses the Windows Server variant of the installation. Unlike the regular Windows 11 setup, this variant skips most hardware compatibility checks.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddLabel(panel, Locales.Strings.faq_q6, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||||
|
AddLabel(panel, Locales.Strings.faq_a6, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||||
|
}
|
||||||
|
|
||||||
// Q: What are my alternatives if my PC is not supported?
|
private void AddFaq7(FlowLayoutPanel panel)
|
||||||
AddLabel(parent, "Q: What are my alternatives if my PC is not supported?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10);
|
{
|
||||||
AddLabel(parent, "A: According to Microsoft, you should throw your PC away. I would suggest installing Linux on it and moving away from Windows.", new Font("Arial", 10), ContentAlignment.TopLeft, 10);
|
AddFAQItem(panel, Locales.Strings.faq_q7, Locales.Strings.faq_a7, Locales.Strings.faq_a7Link, "https://github.com/BuiltByBel");
|
||||||
|
|
||||||
// Q: Who is the developer?
|
|
||||||
AddFAQItem(parent, "Q: Who is the developer?", "A: The developer is Belim, also known as Builtbybel, who has contributed a lot of code to the Windows community.", "Click here to learn more about the developer's work.", "https://github.com/BuiltByBel");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+30
-11
@@ -58,9 +58,20 @@
|
|||||||
<Compile Include="CanIUpgradeView.Designer.cs">
|
<Compile Include="CanIUpgradeView.Designer.cs">
|
||||||
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ClippyUI.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ClippyUI.Designer.cs">
|
||||||
|
<DependentUpon>ClippyUI.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="FAQHandler.cs" />
|
<Compile Include="FAQHandler.cs" />
|
||||||
<Compile Include="IsoHandler.cs" />
|
<Compile Include="IsoHandler.cs" />
|
||||||
<Compile Include="Locales\Strings.Designer.cs" />
|
<Compile Include="Locales\Strings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Strings.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Logger.cs" />
|
||||||
<Compile Include="MainForm.cs">
|
<Compile Include="MainForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -69,10 +80,18 @@
|
|||||||
</Compile>
|
</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">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="SwitchView.cs" />
|
<Compile Include="SwitchView.cs" />
|
||||||
<EmbeddedResource Include="CanIUpgradeView.resx">
|
<EmbeddedResource Include="CanIUpgradeView.resx">
|
||||||
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="ClippyUI.resx">
|
||||||
|
<DependentUpon>ClippyUI.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Locales\Strings.ar.resx" />
|
<EmbeddedResource Include="Locales\Strings.ar.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.cs-CZ.resx" />
|
<EmbeddedResource Include="Locales\Strings.cs-CZ.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.de.resx" />
|
<EmbeddedResource Include="Locales\Strings.de.resx" />
|
||||||
@@ -80,23 +99,22 @@
|
|||||||
<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" />
|
||||||
<EmbeddedResource Include="Locales\Strings.resx" />
|
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ru.resx" />
|
|
||||||
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
||||||
<EmbeddedResource Include="MainForm.resx">
|
<EmbeddedResource Include="MainForm.resx">
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Locales\Strings.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
</Compile>
|
|
||||||
<None Include="app.manifest" />
|
<None Include="app.manifest" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
@@ -114,5 +132,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="AppIcon.ico" />
|
<Content Include="AppIcon.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
+65
-13
@@ -3,8 +3,12 @@ using System.Diagnostics;
|
|||||||
using System.Drawing;
|
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.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,19 +26,32 @@ namespace Flyby11
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_updateStatus("Mounting the ISO... Hang tight!");
|
// Block Win10 ISOs
|
||||||
|
string isoFileName = Path.GetFileName(isoPath);
|
||||||
|
if (Regex.IsMatch(isoFileName, @"(?i)(win10|windows\s*10)"))
|
||||||
|
{
|
||||||
|
_updateStatus("Error: Windows 10 ISOs are not supported.");
|
||||||
|
MessageBox.Show("Windows 10 ISOs are not supported. Please use a Windows 11 ISO.",
|
||||||
|
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_updateStatus(Locales.Strings._debugStatusMounting); //Mounting the ISO... Hang tight!
|
||||||
|
|
||||||
await ExecutePowerShellCommand($"Mount-DiskImage -ImagePath \"{isoPath}\"");
|
// Ensure the ISO path is properly quoted
|
||||||
|
string quotedIsoPath = $"\"{isoPath}\"";
|
||||||
|
|
||||||
|
// Pass the quoted path to ExecutePowerShellCommand
|
||||||
|
await ExecutePowerShellCommand($"Mount-DiskImage -ImagePath {quotedIsoPath}");
|
||||||
string driveLetter = await GetMountedDriveLetter();
|
string driveLetter = await GetMountedDriveLetter();
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(driveLetter))
|
if (string.IsNullOrEmpty(driveLetter))
|
||||||
{
|
{
|
||||||
_updateStatus("Failed to mount the ISO. Please try again.");
|
_updateStatus(Locales.Strings._debugStatusMountingFailed); //Failed to mount the ISO. Please try again.
|
||||||
MessageBox.Show("Failed to mount the ISO.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show(Locales.Strings._debugStatusMountingFailed, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateStatus("ISO mounted successfully! Let's get this Windows 11 ready!");
|
_updateStatus(Locales.Strings._debugStatusMountingSuccess); //ISO mounted successfully! Let's get this Windows 11 ready!
|
||||||
|
|
||||||
string setupPath = Path.Combine(driveLetter, "sources", "setupprep.exe");
|
string setupPath = Path.Combine(driveLetter, "sources", "setupprep.exe");
|
||||||
if (File.Exists(setupPath))
|
if (File.Exists(setupPath))
|
||||||
@@ -43,13 +60,17 @@ namespace Flyby11
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_updateStatus($"Setup file not found in {driveLetter}. Aborting.");
|
_updateStatus($"{Locales.Strings._debugStatusSetupFileNotFound} {driveLetter}. Aborting."); // Setup file not found in
|
||||||
MessageBox.Show($"Setup file not found in {driveLetter}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show($"{Locales.Strings._debugStatusSetupFileNotFound} {driveLetter}",
|
||||||
|
"Error",
|
||||||
|
MessageBoxButtons.OK,
|
||||||
|
MessageBoxIcon.Error);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_updateStatus($"Oops! Something went wrong: {ex.Message}");
|
_updateStatus($"{Locales.Strings._debugStatusHandleIsoEx} {ex.Message}"); //Oops! Something went wrong:
|
||||||
MessageBox.Show($"Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show($"Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,23 +92,52 @@ namespace Flyby11
|
|||||||
{
|
{
|
||||||
using (var process = new Process())
|
using (var process = new Process())
|
||||||
{
|
{
|
||||||
|
// Escape the command to ensure spaces in paths are handled
|
||||||
|
string escapedCommand = command.Replace("\"", "\\\"");
|
||||||
|
|
||||||
process.StartInfo.FileName = "powershell.exe";
|
process.StartInfo.FileName = "powershell.exe";
|
||||||
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{command}\"";
|
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{escapedCommand}\"";
|
||||||
process.StartInfo.RedirectStandardOutput = true;
|
process.StartInfo.RedirectStandardOutput = true;
|
||||||
process.StartInfo.RedirectStandardError = true;
|
process.StartInfo.RedirectStandardError = true;
|
||||||
process.StartInfo.UseShellExecute = false;
|
process.StartInfo.UseShellExecute = false;
|
||||||
process.StartInfo.CreateNoWindow = true;
|
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.Start();
|
||||||
|
process.BeginOutputReadLine();
|
||||||
|
process.BeginErrorReadLine();
|
||||||
|
|
||||||
await process.WaitForExitAsync();
|
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)
|
private async Task RunSetupWithAdminRights(string setupPath)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_updateStatus("Starting the setup process with elevated privileges...");
|
_updateStatus(Locales.Strings._debugInstallRunElevated); //Starting the setup process with elevated privileges...
|
||||||
|
|
||||||
var startInfo = new ProcessStartInfo
|
var startInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
@@ -98,7 +148,7 @@ namespace Flyby11
|
|||||||
CreateNoWindow = false
|
CreateNoWindow = false
|
||||||
};
|
};
|
||||||
|
|
||||||
_updateStatus("Almost there! We're getting the setup ready...");
|
_updateStatus(Locales.Strings._debugStatusRunning); //Almost there! We're getting the setup ready...
|
||||||
|
|
||||||
using (var process = Process.Start(startInfo))
|
using (var process = Process.Start(startInfo))
|
||||||
{
|
{
|
||||||
@@ -108,8 +158,10 @@ namespace Flyby11
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateStatus("You're ready to install Windows 11 on unsupported hardware! Ignore the 'Windows Server' prompt; you're all set!");
|
//You're ready to install Windows 11 on unsupported hardware! Ignore the 'Windows Server' prompt; you're all set!"
|
||||||
MessageBox.Show("Windows 11 installation can now proceed. Please follow the instructions in the setup window.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
_updateStatus(Locales.Strings._debugInstallReady);
|
||||||
|
//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);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
+281
-281
@@ -1,282 +1,282 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
The primary goals of this format is to allow a simple XML format
|
||||||
that is mostly human readable. The generation and parsing of the
|
that is mostly human readable. The generation and parsing of the
|
||||||
various data types are done through the TypeConverter classes
|
various data types are done through the TypeConverter classes
|
||||||
associated with the data types.
|
associated with the data types.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
... ado.net/XML headers & schema ...
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
<resheader name="version">2.0</resheader>
|
<resheader name="version">2.0</resheader>
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, 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="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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<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>
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
<comment>This is a comment</comment>
|
<comment>This is a comment</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
There are any number of "resheader" rows that contain simple
|
||||||
name/value pairs.
|
name/value pairs.
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
Each data row contains a name, and value. The row also contains a
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
text/value conversion through the TypeConverter architecture.
|
text/value conversion through the TypeConverter architecture.
|
||||||
Classes that don't support this are serialized and stored with the
|
Classes that don't support this are serialized and stored with the
|
||||||
mimetype set.
|
mimetype set.
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
The mimetype is used for serialized objects, and tells the
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
read any of the formats listed below.
|
read any of the formats listed below.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
value : The object must be serialized into a byte array
|
value : The object must be serialized into a byte array
|
||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: 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: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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
<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="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="compPatch_debugCancel" xml:space="preserve">
|
<data name="compPatch_debugCancel" xml:space="preserve">
|
||||||
<value>Łatka pomijająca została anulowana przez użytkownika.</value>
|
<value>Łatka pomijająca została anulowana przez użytkownika.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||||
<value>Użytkownik próbował wybrać niewysuwalny nośnik.</value>
|
<value>Użytkownik próbował wybrać niewysuwalny nośnik.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||||
<value>Brak wybranego nośnika USB do aplikowania łatki.</value>
|
<value>Brak wybranego nośnika USB do aplikowania łatki.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||||
<value>Aplikacja pomijającej łatki zakończyła się niepowodzeniem:</value>
|
<value>Aplikacja pomijającej łatki zakończyła się niepowodzeniem:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||||
<value>Wybrana ścieżka nie jest wysuwalnym nośnikiem. Wybierz nośnik USB.</value>
|
<value>Wybrana ścieżka nie jest wysuwalnym nośnikiem. Wybierz nośnik USB.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||||
<value>Wybierz nośnik USB zawierający instalator Windowsa 11.\nTa funkcja dodaje kompatybilną łatką do pominięcia pewnych wymagań systemowych.\nKompatybilny z nośnikami przygotowanymi przez dowolne narzędzie, w tym Rufusa. Upewnij się, że ten nośnik jest gotowy!</value>
|
<value>Wybierz nośnik USB zawierający instalator Windowsa 11.\nTa funkcja dodaje kompatybilną łatką do pominięcia pewnych wymagań systemowych.\nKompatybilny z nośnikami przygotowanymi przez dowolne narzędzie, w tym Rufusa. Upewnij się, że ten nośnik jest gotowy!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||||
<value>To zaaplikuje ustawienia pomijające wymagania na tym wybranym nośniku USB. Czy chcesz kontynuować?</value>
|
<value>To zaaplikuje ustawienia pomijające wymagania na tym wybranym nośniku USB. Czy chcesz kontynuować?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||||
<value>Łatka pomijająca wymagania systemowe została pomyślnie zaaplikowana!</value>
|
<value>Łatka pomijająca wymagania systemowe została pomyślnie zaaplikowana!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_FormTitle" xml:space="preserve">
|
<data name="ctl_FormTitle" xml:space="preserve">
|
||||||
<value>Flyby11 Asystent Uaktualnienia</value>
|
<value>Flyby11 Asystent Uaktualnienia</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||||
<value>Zaaplikuj łatkę kompatybilności do obrazu ISO (czysta instalacja)</value>
|
<value>Zaaplikuj łatkę kompatybilności do obrazu ISO (czysta instalacja)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||||
<value>Czy mogę zaktualizować do Windowsa 11?</value>
|
<value>Czy mogę zaktualizować do Windowsa 11?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_linkVote" xml:space="preserve">
|
<data name="ctl_linkVote" xml:space="preserve">
|
||||||
<value>Czy te uaktualnienie zadziałało?</value>
|
<value>Czy te uaktualnienie zadziałało?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_statusLabel" xml:space="preserve">
|
<data name="ctl_statusLabel" xml:space="preserve">
|
||||||
<value>Przeciągnij i upuść obraz ISO Windowsa 11, żeby go załatać i zainstalować na niewspieranym sprzęcie (aktualizacja na miejscu).</value>
|
<value>Przeciągnij i upuść obraz ISO Windowsa 11, żeby go załatać i zainstalować na niewspieranym sprzęcie (aktualizacja na miejscu).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a1" xml:space="preserve">
|
<data name="faq_a1" xml:space="preserve">
|
||||||
<value>O: Możesz pobrać najnowszy obraz ISO z oficjalnej strony Microsoft lub użyć pobieracza Fido.</value>
|
<value>O: Możesz pobrać najnowszy obraz ISO z oficjalnej strony Microsoft lub użyć pobieracza Fido.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a2" xml:space="preserve">
|
<data name="faq_a2" xml:space="preserve">
|
||||||
<value>O: Jeśli udało ci się zainstalować system Windows 11 i zaoszczędzić trochę pieniędzy, możesz zostawić tutaj małe podziękowanie.</value>
|
<value>O: Jeśli udało ci się zainstalować system Windows 11 i zaoszczędzić trochę pieniędzy, możesz zostawić tutaj małe podziękowanie.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a2Link" xml:space="preserve">
|
<data name="faq_a2Link" xml:space="preserve">
|
||||||
<value>Kliknij tutaj, aby wesprzeć mnie i okazać Twoje wsparcie.</value>
|
<value>Kliknij tutaj, aby wesprzeć mnie i okazać Twoje wsparcie.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a3" xml:space="preserve">
|
<data name="faq_a3" xml:space="preserve">
|
||||||
<value>O: Po zamontowaniu obrazu ISO proces instalacji przebiega w tle. Zostanie uruchomiony instalator systemu Windows, który poprowadzi użytkownika przez kolejne kroki wymagane do zainstalowania systemu Windows 11 na komputerze.</value>
|
<value>O: Po zamontowaniu obrazu ISO proces instalacji przebiega w tle. Zostanie uruchomiony instalator systemu Windows, który poprowadzi użytkownika przez kolejne kroki wymagane do zainstalowania systemu Windows 11 na komputerze.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a4" xml:space="preserve">
|
<data name="faq_a4" xml:space="preserve">
|
||||||
<value>O: Proszę sprawdzić wiadomości błędów i zgłosić je na GitHubie.</value>
|
<value>O: Proszę sprawdzić wiadomości błędów i zgłosić je na GitHubie.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a5" xml:space="preserve">
|
<data name="faq_a5" xml:space="preserve">
|
||||||
<value>O: Tak, Microsoft pozostawił otwartą furtkę. Ta metoda wykorzystuje funkcję procesu instalacji systemu Windows 11, która wykorzystuje wariant instalacji systemu Windows Server. W przeciwieństwie do zwykłej instalacji systemu Windows 11, ten wariant pomija większość kontroli zgodności sprzętu.</value>
|
<value>O: Tak, Microsoft pozostawił otwartą furtkę. Ta metoda wykorzystuje funkcję procesu instalacji systemu Windows 11, która wykorzystuje wariant instalacji systemu Windows Server. W przeciwieństwie do zwykłej instalacji systemu Windows 11, ten wariant pomija większość kontroli zgodności sprzętu.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a6" xml:space="preserve">
|
<data name="faq_a6" xml:space="preserve">
|
||||||
<value>O: Według Microsoftu, powinieneś/-naś wyrzucić swój komputer. Poleciłbym instalację Linuxa na nim i oddalić się od Windowsa.</value>
|
<value>O: Według Microsoftu, powinieneś/-naś wyrzucić swój komputer. Poleciłbym instalację Linuxa na nim i oddalić się od Windowsa.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a7" xml:space="preserve">
|
<data name="faq_a7" xml:space="preserve">
|
||||||
<value>O: Deweloperem jest Belim, znany również jako Builtbybel, który wniósł wiele kodu do społeczności Windows.</value>
|
<value>O: Deweloperem jest Belim, znany również jako Builtbybel, który wniósł wiele kodu do społeczności Windows.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_a7Link" xml:space="preserve">
|
<data name="faq_a7Link" xml:space="preserve">
|
||||||
<value>Kliknij tutaj, aby dowiedzieć się więcej o pracy dewelopera.</value>
|
<value>Kliknij tutaj, aby dowiedzieć się więcej o pracy dewelopera.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_downloadFido" xml:space="preserve">
|
<data name="faq_downloadFido" xml:space="preserve">
|
||||||
<value>Pobierz przez Fido (rekomendowane)</value>
|
<value>Pobierz przez Fido (rekomendowane)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_downloadMS" xml:space="preserve">
|
<data name="faq_downloadMS" xml:space="preserve">
|
||||||
<value>Strona Microsoftu</value>
|
<value>Strona Microsoftu</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_header" xml:space="preserve">
|
<data name="faq_header" xml:space="preserve">
|
||||||
<value>Najczęściej zadawane pytanie (FAQ)</value>
|
<value>Najczęściej zadawane pytanie (FAQ)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q1" xml:space="preserve">
|
<data name="faq_q1" xml:space="preserve">
|
||||||
<value>P: Gdzie mogę pobrać najnowszy obraz ISO Windowsa 11?</value>
|
<value>P: Gdzie mogę pobrać najnowszy obraz ISO Windowsa 11?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q2" xml:space="preserve">
|
<data name="faq_q2" xml:space="preserve">
|
||||||
<value>P: Jak mogę wesprzeć dewelopera?</value>
|
<value>P: Jak mogę wesprzeć dewelopera?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q3" xml:space="preserve">
|
<data name="faq_q3" xml:space="preserve">
|
||||||
<value>P: Jak przebiega proces instalacji po zainstalowaniu pliku ISO?</value>
|
<value>P: Jak przebiega proces instalacji po zainstalowaniu pliku ISO?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q4" xml:space="preserve">
|
<data name="faq_q4" xml:space="preserve">
|
||||||
<value>P: Co jeśli napotkam problemy podczas instalacji?</value>
|
<value>P: Co jeśli napotkam problemy podczas instalacji?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q5" xml:space="preserve">
|
<data name="faq_q5" xml:space="preserve">
|
||||||
<value>P: Czy korzystanie z tej metody jest legalne?</value>
|
<value>P: Czy korzystanie z tej metody jest legalne?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q6" xml:space="preserve">
|
<data name="faq_q6" xml:space="preserve">
|
||||||
<value>P: Jakie mam alternatywy, jeśli mój komputer nie jest wspierany?</value>
|
<value>P: Jakie mam alternatywy, jeśli mój komputer nie jest wspierany?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="faq_q7" xml:space="preserve">
|
<data name="faq_q7" xml:space="preserve">
|
||||||
<value>P: Kto jest deweloperem?</value>
|
<value>P: Kto jest deweloperem?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||||
<value>1. Na urządzeniu działa aktualnie obsługiwana wersja systemu Windows 10. Jeśli na urządzeniu nie działa obecnie obsługiwana wersja systemu Windows 10, należy uaktualnić system do obsługiwanej wersji systemu Windows 10.</value>
|
<value>1. Na urządzeniu działa aktualnie obsługiwana wersja systemu Windows 10. Jeśli na urządzeniu nie działa obecnie obsługiwana wersja systemu Windows 10, należy uaktualnić system do obsługiwanej wersji systemu Windows 10.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||||
<value>2. Urządzenie spełnia wymagania</value>
|
<value>2. Urządzenie spełnia wymagania</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||||
<value>1. Pobierz i uruchom</value>
|
<value>1. Pobierz i uruchom</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||||
<value>2. Wybierz następujący skrót Windows Update, a następnie wybierz przycisk Sprawdź aktualizacje:</value>
|
<value>2. Wybierz następujący skrót Windows Update, a następnie wybierz przycisk Sprawdź aktualizacje:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||||
<value>3. Twoje urządzenie nie spełnia oficjalnych wymagań systemu Windows 11? Możesz zastosować poprawkę zgodności, aby włączyć aktualizację w miejscu za pośrednictwem Windows Update.</value>
|
<value>3. Twoje urządzenie nie spełnia oficjalnych wymagań systemu Windows 11? Możesz zastosować poprawkę zgodności, aby włączyć aktualizację w miejscu za pośrednictwem Windows Update.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||||
<value>Istniejące urządzenie z systemem Windows 10 może zostać uaktualnione do systemu Windows 11, jeśli spełnia następujące kryteria:</value>
|
<value>Istniejące urządzenie z systemem Windows 10 może zostać uaktualnione do systemu Windows 11, jeśli spełnia następujące kryteria:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||||
<value>Aby sprawdzić, czy urządzenie z systemem Windows 10 kwalifikuje się do uaktualnienia do systemu Windows 11, wykonaj jedną z poniższych opcji:</value>
|
<value>Aby sprawdzić, czy urządzenie z systemem Windows 10 kwalifikuje się do uaktualnienia do systemu Windows 11, wykonaj jedną z poniższych opcji:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||||
<value>minimalne specyfikacje sprzętowe umożliwiające uruchomienie systemu Windows 11.</value>
|
<value>minimalne specyfikacje sprzętowe umożliwiające uruchomienie systemu Windows 11.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||||
<value>Aplikacja WhyNotWin11, aby potwierdzić, że urządzenie spełnia minimalne wymagania systemowe</value>
|
<value>Aplikacja WhyNotWin11, aby potwierdzić, że urządzenie spełnia minimalne wymagania systemowe</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="msg_InstallReady" xml:space="preserve">
|
<data name="msg_InstallReady" xml:space="preserve">
|
||||||
<value>Teraz można kontynuować instalację systemu Windows 11. Postępuj zgodnie z instrukcjami wyświetlanymi w oknie instalacji.</value>
|
<value>Teraz można kontynuować instalację systemu Windows 11. Postępuj zgodnie z instrukcjami wyświetlanymi w oknie instalacji.</value>
|
||||||
<comment>Install</comment>
|
<comment>Install</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugInstallReady" xml:space="preserve">
|
<data name="_debugInstallReady" xml:space="preserve">
|
||||||
<value>Możesz zainstalować system Windows 11 na nieobsługiwanym sprzęcie! Zignoruj monit „Windows Server”; wszystko gotowe!</value>
|
<value>Możesz zainstalować system Windows 11 na nieobsługiwanym sprzęcie! Zignoruj monit „Windows Server”; wszystko gotowe!</value>
|
||||||
<comment>Install</comment>
|
<comment>Install</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||||
<value>Rozpoczęcie procesu instalacji z podwyższonymi uprawnieniami...</value>
|
<value>Rozpoczęcie procesu instalacji z podwyższonymi uprawnieniami...</value>
|
||||||
<comment>Install</comment>
|
<comment>Install</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||||
<value>Ups! Coś poszło nie tak:</value>
|
<value>Ups! Coś poszło nie tak:</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Mounting</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMounting" xml:space="preserve">
|
<data name="_debugStatusMounting" xml:space="preserve">
|
||||||
<value>Montowanie obrazu ISO... Trzymaj się mocno!</value>
|
<value>Montowanie obrazu ISO... Trzymaj się mocno!</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Mounting</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||||
<value>Montowanie obrazu ISO zakończyło się niepowodzeniem. Spróbuj ponownie.</value>
|
<value>Montowanie obrazu ISO zakończyło się niepowodzeniem. Spróbuj ponownie.</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Mounting</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||||
<value>Obraz ISO został zamontowany pomyślnie! Przygotujmy Windowsa 11!</value>
|
<value>Obraz ISO został zamontowany pomyślnie! Przygotujmy Windowsa 11!</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Mounting</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusRunning" xml:space="preserve">
|
<data name="_debugStatusRunning" xml:space="preserve">
|
||||||
<value>Już prawie! Przygotowujemy konfigurację, aby była gotowa...</value>
|
<value>Już prawie! Przygotowujemy konfigurację, aby była gotowa...</value>
|
||||||
<comment>Install</comment>
|
<comment>Install</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||||
<value>Nie znaleziono pliku konfiguracyjnego w</value>
|
<value>Nie znaleziono pliku konfiguracyjnego w</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Mounting</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||||
<value>Wybierz z komputera</value>
|
<value>Wybierz z komputera</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyby11
|
||||||
|
{
|
||||||
|
public class Logger
|
||||||
|
{
|
||||||
|
private MainForm mainForm;
|
||||||
|
|
||||||
|
public Logger(MainForm mainForm)
|
||||||
|
{
|
||||||
|
this.mainForm = mainForm ?? throw new ArgumentNullException(nameof(mainForm));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log method for a single string
|
||||||
|
public void Log(string message, Color color, float fontSize = 10.5f)
|
||||||
|
{
|
||||||
|
if (mainForm.InvokeRequired)
|
||||||
|
{
|
||||||
|
mainForm.Invoke(new Action(() => Log(message, color, fontSize)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AppendMessageToConversation(message, color, fontSize); // Append message to conversation
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AppendMessageToConversation(string message, Color color, float fontSize)
|
||||||
|
{
|
||||||
|
Label statusLabel = mainForm.Controls.Find("statusLabel", true).FirstOrDefault() as Label;
|
||||||
|
|
||||||
|
if (statusLabel != null)
|
||||||
|
{
|
||||||
|
statusLabel.Text = "";
|
||||||
|
statusLabel.Text += "\r\n" + message;
|
||||||
|
statusLabel.ForeColor = color;
|
||||||
|
statusLabel.Font = new Font(statusLabel.Font.FontFamily, fontSize);
|
||||||
|
statusLabel.TextAlign = ContentAlignment.MiddleCenter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+51
-69
@@ -29,11 +29,10 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.panelDragDrop = new System.Windows.Forms.Panel();
|
this.panelDragDrop = new System.Windows.Forms.Panel();
|
||||||
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
this.dropdownOptions = new System.Windows.Forms.ComboBox();
|
||||||
this.linkCompPatch = new System.Windows.Forms.LinkLabel();
|
this.btnExperience = new System.Windows.Forms.Button();
|
||||||
this.statusLabel = new System.Windows.Forms.Label();
|
this.statusLabel = new System.Windows.Forms.Label();
|
||||||
this.panelFAQ = new System.Windows.Forms.Panel();
|
this.panelFAQ = new System.Windows.Forms.Panel();
|
||||||
this.linkAppDev = new System.Windows.Forms.LinkLabel();
|
|
||||||
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.panelDragDrop.SuspendLayout();
|
this.panelDragDrop.SuspendLayout();
|
||||||
@@ -45,10 +44,11 @@
|
|||||||
//
|
//
|
||||||
this.panelDragDrop.AllowDrop = true;
|
this.panelDragDrop.AllowDrop = true;
|
||||||
this.panelDragDrop.Anchor = System.Windows.Forms.AnchorStyles.None;
|
this.panelDragDrop.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||||
this.panelDragDrop.Controls.Add(this.linkLabel1);
|
this.panelDragDrop.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.panelDragDrop.Controls.Add(this.linkCompPatch);
|
this.panelDragDrop.Controls.Add(this.dropdownOptions);
|
||||||
|
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(47, 184);
|
this.panelDragDrop.Location = new System.Drawing.Point(57, 178);
|
||||||
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;
|
||||||
@@ -56,41 +56,38 @@
|
|||||||
this.panelDragDrop.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelDragDrop_DragEnter);
|
this.panelDragDrop.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelDragDrop_DragEnter);
|
||||||
this.panelDragDrop.Paint += new System.Windows.Forms.PaintEventHandler(this.panelDragDrop_Paint);
|
this.panelDragDrop.Paint += new System.Windows.Forms.PaintEventHandler(this.panelDragDrop_Paint);
|
||||||
//
|
//
|
||||||
// linkLabel1
|
// dropdownOptions
|
||||||
//
|
//
|
||||||
this.linkLabel1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
this.dropdownOptions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.linkLabel1.AutoEllipsis = true;
|
this.dropdownOptions.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.linkLabel1.AutoSize = true;
|
this.dropdownOptions.Font = new System.Drawing.Font("Segoe UI Variable Display", 11.5F);
|
||||||
this.linkLabel1.BackColor = System.Drawing.Color.Transparent;
|
this.dropdownOptions.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(26)))), ((int)(((byte)(26)))));
|
||||||
this.linkLabel1.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.dropdownOptions.FormattingEnabled = true;
|
||||||
this.linkLabel1.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F);
|
this.dropdownOptions.Location = new System.Drawing.Point(51, 205);
|
||||||
this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
this.dropdownOptions.Name = "dropdownOptions";
|
||||||
this.linkLabel1.LinkColor = System.Drawing.Color.Gray;
|
this.dropdownOptions.Size = new System.Drawing.Size(348, 28);
|
||||||
this.linkLabel1.Location = new System.Drawing.Point(141, 230);
|
this.dropdownOptions.TabIndex = 507;
|
||||||
this.linkLabel1.Name = "linkLabel1";
|
this.dropdownOptions.SelectedIndexChanged += new System.EventHandler(this.dropdownOptions_SelectedIndexChanged);
|
||||||
this.linkLabel1.Size = new System.Drawing.Size(157, 15);
|
|
||||||
this.linkLabel1.TabIndex = 1;
|
|
||||||
this.linkLabel1.TabStop = true;
|
|
||||||
this.linkLabel1.Text = "Can I upgrade to Windows 11?";
|
|
||||||
this.linkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
|
|
||||||
//
|
//
|
||||||
// linkCompPatch
|
// btnExperience
|
||||||
//
|
//
|
||||||
this.linkCompPatch.ActiveLinkColor = System.Drawing.Color.BlueViolet;
|
this.btnExperience.AutoEllipsis = true;
|
||||||
this.linkCompPatch.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
this.btnExperience.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(239)))), ((int)(((byte)(237)))));
|
||||||
this.linkCompPatch.AutoSize = true;
|
this.btnExperience.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.linkCompPatch.BackColor = System.Drawing.Color.Transparent;
|
this.btnExperience.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(141)))), ((int)(((byte)(141)))), ((int)(((byte)(141)))));
|
||||||
this.linkCompPatch.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.btnExperience.FlatAppearance.BorderSize = 0;
|
||||||
this.linkCompPatch.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
this.btnExperience.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Gainsboro;
|
||||||
this.linkCompPatch.LinkColor = System.Drawing.Color.DimGray;
|
this.btnExperience.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 12F, System.Drawing.FontStyle.Bold);
|
||||||
this.linkCompPatch.Location = new System.Drawing.Point(95, 208);
|
this.btnExperience.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(26)))), ((int)(((byte)(26)))));
|
||||||
this.linkCompPatch.Name = "linkCompPatch";
|
this.btnExperience.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
this.linkCompPatch.Size = new System.Drawing.Size(244, 15);
|
this.btnExperience.Location = new System.Drawing.Point(21, 195);
|
||||||
this.linkCompPatch.TabIndex = 211;
|
this.btnExperience.Name = "btnExperience";
|
||||||
this.linkCompPatch.TabStop = true;
|
this.btnExperience.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
|
||||||
this.linkCompPatch.Text = "Apply Compatibility Patch to ISO (Clean Install)";
|
this.btnExperience.Size = new System.Drawing.Size(387, 49);
|
||||||
this.linkCompPatch.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkCompPatch_LinkClicked);
|
this.btnExperience.TabIndex = 506;
|
||||||
|
this.btnExperience.TabStop = false;
|
||||||
|
this.btnExperience.UseCompatibleTextRendering = true;
|
||||||
|
this.btnExperience.UseVisualStyleBackColor = false;
|
||||||
//
|
//
|
||||||
// statusLabel
|
// statusLabel
|
||||||
//
|
//
|
||||||
@@ -98,55 +95,44 @@
|
|||||||
this.statusLabel.AutoEllipsis = true;
|
this.statusLabel.AutoEllipsis = true;
|
||||||
this.statusLabel.BackColor = System.Drawing.Color.Transparent;
|
this.statusLabel.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.statusLabel.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.statusLabel.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.statusLabel.Location = new System.Drawing.Point(39, 44);
|
this.statusLabel.Location = new System.Drawing.Point(39, 35);
|
||||||
this.statusLabel.Name = "statusLabel";
|
this.statusLabel.Name = "statusLabel";
|
||||||
this.statusLabel.Size = new System.Drawing.Size(352, 139);
|
this.statusLabel.Size = new System.Drawing.Size(352, 142);
|
||||||
this.statusLabel.TabIndex = 0;
|
this.statusLabel.TabIndex = 0;
|
||||||
this.statusLabel.Text = "Move ISO here";
|
this.statusLabel.Text = "Move ISO here";
|
||||||
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.statusLabel.UseCompatibleTextRendering = true;
|
||||||
//
|
//
|
||||||
// panelFAQ
|
// panelFAQ
|
||||||
//
|
//
|
||||||
this.panelFAQ.AutoScroll = true;
|
this.panelFAQ.AutoScroll = true;
|
||||||
this.panelFAQ.BackColor = System.Drawing.Color.Gainsboro;
|
this.panelFAQ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232)))));
|
||||||
this.panelFAQ.Dock = System.Windows.Forms.DockStyle.Right;
|
this.panelFAQ.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
this.panelFAQ.Location = new System.Drawing.Point(561, 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(359, 585);
|
this.panelFAQ.Size = new System.Drawing.Size(331, 585);
|
||||||
this.panelFAQ.TabIndex = 207;
|
this.panelFAQ.TabIndex = 207;
|
||||||
//
|
//
|
||||||
// linkAppDev
|
|
||||||
//
|
|
||||||
this.linkAppDev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.linkAppDev.AutoSize = true;
|
|
||||||
this.linkAppDev.BackColor = System.Drawing.Color.Gainsboro;
|
|
||||||
this.linkAppDev.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
||||||
this.linkAppDev.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
|
||||||
this.linkAppDev.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(115)))), ((int)(((byte)(193)))));
|
|
||||||
this.linkAppDev.Location = new System.Drawing.Point(821, -1);
|
|
||||||
this.linkAppDev.Name = "linkAppDev";
|
|
||||||
this.linkAppDev.Size = new System.Drawing.Size(99, 15);
|
|
||||||
this.linkAppDev.TabIndex = 208;
|
|
||||||
this.linkAppDev.TabStop = true;
|
|
||||||
this.linkAppDev.Text = "We live on GitHub";
|
|
||||||
this.linkAppDev.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkAppDev_LinkClicked);
|
|
||||||
//
|
|
||||||
// panelContainer
|
// panelContainer
|
||||||
//
|
//
|
||||||
|
this.panelContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232)))));
|
||||||
this.panelContainer.Controls.Add(this.panelMain);
|
this.panelContainer.Controls.Add(this.panelMain);
|
||||||
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(561, 585);
|
this.panelContainer.Size = new System.Drawing.Size(589, 585);
|
||||||
this.panelContainer.TabIndex = 209;
|
this.panelContainer.TabIndex = 209;
|
||||||
//
|
//
|
||||||
// panelMain
|
// panelMain
|
||||||
//
|
//
|
||||||
|
this.panelMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panelMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
||||||
this.panelMain.Controls.Add(this.panelDragDrop);
|
this.panelMain.Controls.Add(this.panelDragDrop);
|
||||||
this.panelMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.panelMain.Location = new System.Drawing.Point(5, 3);
|
||||||
this.panelMain.Location = new System.Drawing.Point(0, 0);
|
|
||||||
this.panelMain.Name = "panelMain";
|
this.panelMain.Name = "panelMain";
|
||||||
this.panelMain.Size = new System.Drawing.Size(561, 585);
|
this.panelMain.Size = new System.Drawing.Size(580, 572);
|
||||||
this.panelMain.TabIndex = 1;
|
this.panelMain.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
@@ -156,7 +142,6 @@
|
|||||||
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, 585);
|
||||||
this.Controls.Add(this.linkAppDev);
|
|
||||||
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";
|
||||||
@@ -164,11 +149,9 @@
|
|||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Flyby11 Upgrading Assistant";
|
this.Text = "Flyby11 Upgrading Assistant";
|
||||||
this.panelDragDrop.ResumeLayout(false);
|
this.panelDragDrop.ResumeLayout(false);
|
||||||
this.panelDragDrop.PerformLayout();
|
|
||||||
this.panelContainer.ResumeLayout(false);
|
this.panelContainer.ResumeLayout(false);
|
||||||
this.panelMain.ResumeLayout(false);
|
this.panelMain.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,11 +160,10 @@
|
|||||||
private System.Windows.Forms.Panel panelDragDrop;
|
private System.Windows.Forms.Panel panelDragDrop;
|
||||||
private System.Windows.Forms.Label statusLabel;
|
private System.Windows.Forms.Label statusLabel;
|
||||||
private System.Windows.Forms.Panel panelFAQ;
|
private System.Windows.Forms.Panel panelFAQ;
|
||||||
private System.Windows.Forms.LinkLabel linkAppDev;
|
|
||||||
private System.Windows.Forms.LinkLabel linkCompPatch;
|
|
||||||
private System.Windows.Forms.Panel panelContainer;
|
private System.Windows.Forms.Panel panelContainer;
|
||||||
private System.Windows.Forms.Panel panelMain;
|
private System.Windows.Forms.Panel panelMain;
|
||||||
private System.Windows.Forms.LinkLabel linkLabel1;
|
private System.Windows.Forms.Button btnExperience;
|
||||||
|
private System.Windows.Forms.ComboBox dropdownOptions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+282
-56
@@ -1,7 +1,13 @@
|
|||||||
using System;
|
using Flyby11.Properties;
|
||||||
|
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.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Views;
|
using Views;
|
||||||
|
|
||||||
@@ -10,45 +16,234 @@ namespace Flyby11
|
|||||||
public partial class MainForm : Form
|
public partial class MainForm : Form
|
||||||
{
|
{
|
||||||
private readonly IsoHandler _isoHandler;
|
private readonly IsoHandler _isoHandler;
|
||||||
private readonly FAQHandler _faqHandler;
|
private Logger logger;
|
||||||
|
private ClippyUI clippyUI;
|
||||||
|
|
||||||
|
public FAQHandler _faqHandler { get; private set; }
|
||||||
|
|
||||||
|
[DllImport("CpuCheckNative.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool HasPopcnt();
|
||||||
|
|
||||||
public MainForm()
|
public MainForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
logger = new Logger(this);
|
||||||
|
// Uncomment lower line and add lang code to run localization test
|
||||||
|
// Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
|
||||||
_isoHandler = new IsoHandler(UpdateStatusLabel);
|
_isoHandler = new IsoHandler(UpdateStatusLabel);
|
||||||
_faqHandler = new FAQHandler(panelFAQ, UpdateStatusLabel);
|
_faqHandler = new FAQHandler(panelFAQ, UpdateStatusLabel);
|
||||||
_faqHandler.InitializeFAQ();
|
_faqHandler.InitializeFAQ();
|
||||||
|
|
||||||
UpdateStatusLabel("Drag and drop the Windows 11 ISO to patch it and install on unsupported hardware (Inplace Upgrade).");
|
InitializeLocalizedStrings();
|
||||||
|
InitializeClippyUI();
|
||||||
|
|
||||||
|
// Drag and drop the Windows 11 ISO to patch it and install on unsupported hardware (Inplace Upgrade).
|
||||||
|
UpdateStatusLabel(Locales.Strings.ctl_statusLabel);
|
||||||
|
|
||||||
|
// Perform system compatibility check and show the appropriate message
|
||||||
|
bool? isCompatible = CheckSystemCompatibility();
|
||||||
|
|
||||||
|
if (isCompatible.HasValue)
|
||||||
|
{
|
||||||
|
ShowCompatibilityMessage(isCompatible.Value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
MessageBox.Show(
|
||||||
|
"A preliminary check of the likelihood for a successful upgrade can be performed if you download the 'CpuCheckNative.dll' from the GitHub repository and place it in the app directory.\n" +
|
||||||
|
"Once the DLL is in place, the detailed compatibility check will be enabled, allowing us to evaluate CPU features like SSE4.2 and POPCNT. ",
|
||||||
|
"Flyby11 - Clippy has something to say!",
|
||||||
|
MessageBoxButtons.OK,
|
||||||
|
MessageBoxIcon.Information
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool? CheckSystemCompatibility()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Attempt to check for POPCNT support
|
||||||
|
return HasPopcnt();
|
||||||
|
}
|
||||||
|
catch (DllNotFoundException)
|
||||||
|
{
|
||||||
|
// DLL is missing, return null for compatibility
|
||||||
|
// UpdateStatusLabel("Required DLL 'CpuCheckNative.dll' not found. Skipping detailed compatibility check.");
|
||||||
|
return null; // Indicating that compatibility could not be checked
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Log false for compatibility
|
||||||
|
UpdateStatusLabel($"An error occurred while checking system compatibility: {ex.Message}");
|
||||||
|
return false; // Defaulting to incompatible if another error occurs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowCompatibilityMessage(bool isCompatible)
|
||||||
|
{
|
||||||
|
if (isCompatible)
|
||||||
|
{
|
||||||
|
string message = "You should be able to upgrade your system to Windows 11, as long as there are no incompatible device drivers or other issues.\n" +
|
||||||
|
"Everything looks good for the upgrade, so you're ready to move forward!";
|
||||||
|
ShowMessage("Upgrade Ready", message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string message = "Unfortunately, your system doesn't support a key requirement for upgrading to Windows 11.\n" +
|
||||||
|
"The missing feature is POPCNT, which is necessary for the upgrade. Please check your system's hardware to ensure it meets the requirements.";
|
||||||
|
ShowMessage("Upgrade Blocked", message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void ShowMessage(string title, string message)
|
||||||
|
{
|
||||||
|
MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeLocalizedStrings()
|
||||||
|
{
|
||||||
|
// Set localized strings for the UI elements
|
||||||
|
Text = Locales.Strings.ctl_FormTitle;
|
||||||
|
|
||||||
|
dropdownOptions.Items.Add("More options...");
|
||||||
|
dropdownOptions.Items.Add(Locales.Strings.ctl_linkSelectComputer);
|
||||||
|
dropdownOptions.Items.Add(Locales.Strings.ctl_inkCompPatch);
|
||||||
|
dropdownOptions.Items.Add(Locales.Strings.ctl_linkCiuv);
|
||||||
|
dropdownOptions.Items.Add("(Vote) " + Locales.Strings.ctl_linkVote); // "Did the upgrade work?"
|
||||||
|
dropdownOptions.Items.Add("(App) Trim down Windows 11 with TidyOS"); // "TidyOS Repository"
|
||||||
|
dropdownOptions.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeClippyUI()
|
||||||
|
{
|
||||||
|
clippyUI = new ClippyUI(this, logger);
|
||||||
|
clippyUI.SetClippyPosition(this);
|
||||||
|
clippyUI.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void panelDragDrop_Paint(object sender, PaintEventArgs e)
|
private void panelDragDrop_Paint(object sender, PaintEventArgs e)
|
||||||
{
|
{
|
||||||
var borderColor = Color.DodgerBlue;
|
var borderThickness = 8;
|
||||||
var borderThickness = 6;
|
var cornerRadius = 24;
|
||||||
|
var glowThickness = 2; // Thin glow layer
|
||||||
|
var control = (Control)sender;
|
||||||
|
var rect = new Rectangle(
|
||||||
|
borderThickness / 2,
|
||||||
|
borderThickness / 2,
|
||||||
|
control.Width - borderThickness,
|
||||||
|
control.Height - borderThickness
|
||||||
|
);
|
||||||
|
|
||||||
// Draw a dotted border
|
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||||
var dashPattern = new float[] { 4, 2 }; // Dots and gaps
|
e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||||
using (var pen = new Pen(borderColor, borderThickness))
|
|
||||||
|
// subtle shadow
|
||||||
|
using (var shadowBrush = new SolidBrush(Color.FromArgb(30, 0, 0, 0)))
|
||||||
{
|
{
|
||||||
pen.DashPattern = dashPattern;
|
var shadowRect = new Rectangle(6, 6, control.Width - 12, control.Height - 12);
|
||||||
pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Center;
|
using (var shadowPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||||
|
{
|
||||||
var rect = new Rectangle(
|
shadowPath.AddArc(shadowRect.X, shadowRect.Y, cornerRadius, cornerRadius, 180, 90);
|
||||||
borderThickness / 2,
|
shadowPath.AddArc(shadowRect.Right - cornerRadius, shadowRect.Y, cornerRadius, cornerRadius, 270, 90);
|
||||||
borderThickness / 2,
|
shadowPath.AddArc(shadowRect.Right - cornerRadius, shadowRect.Bottom - cornerRadius, cornerRadius, cornerRadius, 0, 90);
|
||||||
panelDragDrop.Width - borderThickness,
|
shadowPath.AddArc(shadowRect.X, shadowRect.Bottom - cornerRadius, cornerRadius, cornerRadius, 90, 90);
|
||||||
panelDragDrop.Height - borderThickness
|
shadowPath.CloseFigure();
|
||||||
);
|
e.Graphics.FillPath(shadowBrush, shadowPath);
|
||||||
|
}
|
||||||
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
|
||||||
e.Graphics.DrawRectangle(pen, rect);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
using (var shadowBrush = new SolidBrush(Color.FromArgb(30, 0, 0, 0))) // Transparent shadow
|
//frosted glass background (simulated with semi-transparent gradient)
|
||||||
|
using (var frostedBrush = new System.Drawing.Drawing2D.LinearGradientBrush(
|
||||||
|
new Rectangle(0, 0, control.Width, control.Height),
|
||||||
|
Color.FromArgb(220, 240, 245, 255), // Very light blue (mica-like)
|
||||||
|
Color.FromArgb(220, 235, 230, 255), // Very light lavender
|
||||||
|
System.Drawing.Drawing2D.LinearGradientMode.Vertical))
|
||||||
{
|
{
|
||||||
var shadowRect = new Rectangle(6, 6, panelDragDrop.Width, panelDragDrop.Height);
|
using (var frostedPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||||
e.Graphics.FillRectangle(shadowBrush, shadowRect);
|
{
|
||||||
|
frostedPath.AddArc(rect.X, rect.Y, cornerRadius, cornerRadius, 180, 90);
|
||||||
|
frostedPath.AddArc(rect.Right - cornerRadius, rect.Y, cornerRadius, cornerRadius, 270, 90);
|
||||||
|
frostedPath.AddArc(rect.Right - cornerRadius, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 0, 90);
|
||||||
|
frostedPath.AddArc(rect.X, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 90, 90);
|
||||||
|
frostedPath.CloseFigure();
|
||||||
|
e.Graphics.FillPath(frostedBrush, frostedPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Glowing border with outer layer, subtle glow
|
||||||
|
using (var glowBrush = new System.Drawing.Drawing2D.LinearGradientBrush(
|
||||||
|
rect,
|
||||||
|
Color.FromArgb(100, 150, 200, 255), // Soft blue glow
|
||||||
|
Color.FromArgb(100, 200, 150, 255), // Soft lavender glow
|
||||||
|
System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal))
|
||||||
|
using (var glowPen = new Pen(glowBrush, borderThickness + glowThickness))
|
||||||
|
{
|
||||||
|
using (var glowPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||||
|
{
|
||||||
|
glowPath.AddArc(rect.X, rect.Y, cornerRadius, cornerRadius, 180, 90);
|
||||||
|
glowPath.AddArc(rect.Right - cornerRadius, rect.Y, cornerRadius, cornerRadius, 270, 90);
|
||||||
|
glowPath.AddArc(rect.Right - cornerRadius, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 0, 90);
|
||||||
|
glowPath.AddArc(rect.X, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 90, 90);
|
||||||
|
glowPath.CloseFigure();
|
||||||
|
e.Graphics.DrawPath(glowPen, glowPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main border (inner layer, solid but soft)
|
||||||
|
using (var borderBrush = new System.Drawing.Drawing2D.LinearGradientBrush(
|
||||||
|
rect,
|
||||||
|
Color.FromArgb(255, 160, 196, 255), // Soft Azure Blue
|
||||||
|
Color.FromArgb(255, 199, 135, 255), // Vibrant Lavender
|
||||||
|
System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal))
|
||||||
|
using (var borderPen = new Pen(borderBrush, borderThickness))
|
||||||
|
{
|
||||||
|
using (var borderPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||||
|
{
|
||||||
|
borderPath.AddArc(rect.X, rect.Y, cornerRadius, cornerRadius, 180, 90);
|
||||||
|
borderPath.AddArc(rect.Right - cornerRadius, rect.Y, cornerRadius, cornerRadius, 270, 90);
|
||||||
|
borderPath.AddArc(rect.Right - cornerRadius, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 0, 90);
|
||||||
|
borderPath.AddArc(rect.X, rect.Bottom - cornerRadius, cornerRadius, cornerRadius, 90, 90);
|
||||||
|
borderPath.CloseFigure();
|
||||||
|
e.Graphics.DrawPath(borderPen, borderPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task HandleIsoInput(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string isoPath = null;
|
||||||
|
|
||||||
|
if (e is DragEventArgs dragEvent && dragEvent.Data.GetDataPresent(DataFormats.FileDrop))
|
||||||
|
{
|
||||||
|
string[] files = (string[])dragEvent.Data.GetData(DataFormats.FileDrop);
|
||||||
|
if (files.Length == 1 && Path.GetExtension(files[0]).Equals(".iso", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
isoPath = files[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always show dialog if no ISO found yet (e.g. from dropdownOptions)
|
||||||
|
if (isoPath == null)
|
||||||
|
{
|
||||||
|
using (OpenFileDialog openFileDialog = new OpenFileDialog())
|
||||||
|
{
|
||||||
|
openFileDialog.Filter = "ISO Files (*.iso)|*.iso";
|
||||||
|
openFileDialog.Title = "Select an ISO File";
|
||||||
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
isoPath = openFileDialog.FileName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(isoPath) && File.Exists(isoPath))
|
||||||
|
{
|
||||||
|
await _isoHandler.HandleIso(isoPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,47 +253,72 @@ namespace Flyby11
|
|||||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||||
{
|
{
|
||||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
if (files.Length == 1 && Path.GetExtension(files[0]).Equals(".iso", StringComparison.OrdinalIgnoreCase))
|
e.Effect = (files.Length == 1 && Path.GetExtension(files[0]).Equals(".iso", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
? DragDropEffects.Copy
|
||||||
e.Effect = DragDropEffects.Copy;
|
: DragDropEffects.None;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
e.Effect = DragDropEffects.None;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void panelDragDrop_DragDrop(object sender, DragEventArgs e)
|
private async void panelDragDrop_DragDrop(object sender, DragEventArgs e)
|
||||||
{
|
{
|
||||||
// Get the dropped file path
|
await HandleIsoInput(sender, e);
|
||||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
|
||||||
if (files.Length == 1)
|
|
||||||
{
|
|
||||||
string isoPath = files[0]; // Full path to the ISO file
|
|
||||||
await _isoHandler.HandleIso(isoPath); // Mount the ISO and start the setup process
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the status label
|
// Update the status label
|
||||||
private void UpdateStatusLabel(string message)
|
private void UpdateStatusLabel(string message)
|
||||||
{
|
{
|
||||||
statusLabel.Text = message;
|
statusLabel.Text = message;
|
||||||
statusLabel.Refresh(); // Ensure the label updates in real-time
|
statusLabel.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void linkAppDev_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
private async void dropdownOptions_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Process.Start("https://github.com/builtbybel/Flyby11");
|
{
|
||||||
|
// Ignore the default "More options..." item
|
||||||
|
if (dropdownOptions.SelectedIndex <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (dropdownOptions.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 1: // Select Computer
|
||||||
|
await HandleIsoInput(sender, null);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: // Compatibility Patch
|
||||||
|
HandleCompatibilityPatch();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: // Can I Upgrade View
|
||||||
|
HandleCanIUpgradeView();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
// Open the GitHub discussion for feedback
|
||||||
|
Process.Start("https://github.com/builtbybel/Flyby11/discussions/72");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
// OPen TidyOS Repository
|
||||||
|
Process.Start("https://github.com/builtbybel/TidyOS/");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Reset selection back to default prompt after action
|
||||||
|
dropdownOptions.SelectedIndex = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void linkCompPatch_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
/// <summary>
|
||||||
|
/// Handles the event for the compatibility patch.
|
||||||
|
/// </summary>
|
||||||
|
private void HandleCompatibilityPatch()
|
||||||
{
|
{
|
||||||
using (var folderDialog = new FolderBrowserDialog())
|
using (var folderDialog = new FolderBrowserDialog())
|
||||||
{
|
{
|
||||||
folderDialog.Description = "Select the USB drive containing your Windows 11 installation files. " +
|
/* Select the USB drive containing your Windows 11 installation files. " +
|
||||||
"This feature adds a compatibility patch to bypass certain system requirements. " +
|
"This feature adds a compatibility patch to bypass certain system requirements. " +
|
||||||
"Compatible with drives prepared by any tool, including Rufus. Ensure the drive is ready!";
|
"Compatible with drives prepared by any tool, including Rufus. Ensure the drive is ready! */
|
||||||
|
|
||||||
|
folderDialog.Description = Locales.Strings.compPatch_msgSelectDrive.Replace(@"\n", Environment.NewLine);
|
||||||
|
|
||||||
if (folderDialog.ShowDialog() == DialogResult.OK)
|
if (folderDialog.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
@@ -107,44 +327,50 @@ namespace Flyby11
|
|||||||
|
|
||||||
if (driveInfo.DriveType == DriveType.Removable && driveInfo.IsReady)
|
if (driveInfo.DriveType == DriveType.Removable && driveInfo.IsReady)
|
||||||
{
|
{
|
||||||
if (MessageBox.Show("This will apply compatibility bypass settings on the selected USB drive. Continue?",
|
if (MessageBox.Show(Locales.Strings.compPatch_msgSelectDriveConfirm, //This will apply compatibility bypass settings on the selected USB drive.Continue ?
|
||||||
"Apply Bypass Patch", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
"Apply Bypass Patch", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_isoHandler.CreateUnattendXml(selectedPath);
|
_isoHandler.CreateUnattendXml(selectedPath);
|
||||||
MessageBox.Show("Bypass patch applied successfully!", "Apply Bypass Patch", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
// Bypass patch applied successfully!
|
||||||
UpdateStatusLabel("Bypass patch applied successfully!");
|
MessageBox.Show(Locales.Strings.compPatch_msgSuccess, "Apply Bypass Patch", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
UpdateStatusLabel(Locales.Strings.compPatch_msgSuccess);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
UpdateStatusLabel($"Failed to apply bypass patch: {ex.Message}");
|
// Failed to apply bypass patch:
|
||||||
|
UpdateStatusLabel($"{Locales.Strings.compPatch_msgFailedEx} {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UpdateStatusLabel("Bypass patch canceled by user.");
|
UpdateStatusLabel(Locales.Strings.compPatch_debugCancel); // Bypass patch canceled by user.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox.Show("The selected path is not a removable drive. Please select a USB drive.", "Invalid Selection", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
// The selected path is not a removable drive. Please select a USB drive.
|
||||||
UpdateStatusLabel("User attempted to select a non-removable drive.");
|
MessageBox.Show(Locales.Strings.compPatch_msgNotRemovableDrive, "Invalid Selection", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
|
||||||
|
// User attempted to select a non-removable drive.
|
||||||
|
UpdateStatusLabel(Locales.Strings.compPatch_debugNotRemovableDrive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UpdateStatusLabel("No USB drive selected for patching.");
|
UpdateStatusLabel(Locales.Strings.compPatch_debugNoUSBDrive); // No USB drive selected for patching.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
/// <summary>
|
||||||
|
/// Opens the "Can I Upgrade" view.
|
||||||
|
/// </summary>
|
||||||
|
private void HandleCanIUpgradeView()
|
||||||
{
|
{
|
||||||
CanIUpgradeView canIUpgradeView = new CanIUpgradeView();
|
CanIUpgradeView canIUpgradeView = new CanIUpgradeView();
|
||||||
SwitchView.SetView(canIUpgradeView, panelContainer);
|
SwitchView.SetView(canIUpgradeView, panelContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
|||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("A Belim app creation")]
|
[assembly: AssemblyCompany("A Belim app creation")]
|
||||||
[assembly: AssemblyProduct("Flyby11")]
|
[assembly: AssemblyProduct("Flyby11")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2024 A Belim app creation")]
|
[assembly: AssemblyCopyright("Copyright © 2025 A Belim app creation")]
|
||||||
[assembly: AssemblyTrademark("Builtbybel")]
|
[assembly: AssemblyTrademark("Builtbybel")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Buildnummer
|
// Buildnummer
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.2.100.0")]
|
[assembly: AssemblyVersion("2.2.350")]
|
||||||
[assembly: AssemblyFileVersion("2025.2.20.0")]
|
[assembly: AssemblyFileVersion("2.2.350")]
|
||||||
+3
-3
@@ -22,7 +22,7 @@ namespace Flyby11.Properties {
|
|||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
public class Resources {
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ namespace Flyby11.Properties {
|
|||||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
public static global::System.Resources.ResourceManager ResourceManager {
|
||||||
get {
|
get {
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Flyby11.Properties.Resources", typeof(Resources).Assembly);
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Flyby11.Properties.Resources", typeof(Resources).Assembly);
|
||||||
@@ -51,7 +51,7 @@ namespace Flyby11.Properties {
|
|||||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Globalization.CultureInfo Culture {
|
public static global::System.Globalization.CultureInfo Culture {
|
||||||
get {
|
get {
|
||||||
return resourceCulture;
|
return resourceCulture;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
@@ -60,6 +60,7 @@
|
|||||||
: and then encoded with base64 encoding.
|
: 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: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:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
@@ -68,9 +69,10 @@
|
|||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
@@ -85,9 +87,10 @@
|
|||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<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:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
<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="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
@@ -109,9 +112,9 @@
|
|||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
</root>
|
</root>
|
||||||
@@ -13,6 +13,16 @@ Install Regular Windows 11: Even though the setup runs in server mode, it instal
|
|||||||
Manual ISO Preparation: Flyby11 automates the download and mounting of the ISO, so you don’t need to manually tweak anything. You can get the ISO from official sources or the tool will handle it using the [Fido script](https://github.com/pbatard/Fido)
|
Manual ISO Preparation: Flyby11 automates the download and mounting of the ISO, so you don’t need to manually tweak anything. You can get the ISO from official sources or the tool will handle it using the [Fido script](https://github.com/pbatard/Fido)
|
||||||
This method is the same approach described in the official Windows documentation for upgrading unsupported systems, as [detailed in this article](https://support.microsoft.com/en-us/windows/ways-to-install-windows-11-e0edbbfb-cfc5-4011-868b-2ce77ac7c70e)
|
This method is the same approach described in the official Windows documentation for upgrading unsupported systems, as [detailed in this article](https://support.microsoft.com/en-us/windows/ways-to-install-windows-11-e0edbbfb-cfc5-4011-868b-2ce77ac7c70e)
|
||||||
|
|
||||||
|
# Why Flyby11 Makes Sense
|
||||||
|
- Upgrade Freedom – Dont ditch a perfectly fine PC just because Microsoft says so
|
||||||
|
- Eco-Friendly – Less forced upgrades = less e-waste
|
||||||
|
- Save Money – No need to spend on new hardware when your current setup still works
|
||||||
|
|
||||||
|
# Disclaimer
|
||||||
_Flyby11 offers all the currently working methods to bypass the restrictions for installing Windows 11 24H2 on unsupported hardware. The internet is full of guides showing how to get around the TPM, Secure Boot, and processor requirements, but Flyby11 does all that automatically for you._
|
_Flyby11 offers all the currently working methods to bypass the restrictions for installing Windows 11 24H2 on unsupported hardware. The internet is full of guides showing how to get around the TPM, Secure Boot, and processor requirements, but Flyby11 does all that automatically for you._
|
||||||
|
|
||||||
**Technical Note:** The POPCNT requirement cannot be bypassed; it is essential for running Windows 11 (24H2), as the operating system requires this feature to be supported by the CPU. POPCNT has been included in CPUs since around 2010. However, the patch is expected to work for most users with compatible hardware.Please do not blame me; I am working within the constraints of what is technically possible.
|
**Technical Note:**
|
||||||
|
The POPCNT requirement cannot be bypassed; it is essential for running Windows 11 (24H2), as the operating system requires this feature to be supported by the CPU. POPCNT has been included in CPUs since around 2010. However, the patch is expected to work for most users with compatible hardware. Please do not blame me; I am working within the constraints of what is technically possible.
|
||||||
|
|
||||||
|
**Starting from version 2.3 of Flyby11, I have introduced a compatibility checker specifically for this issue. If you see two green checkmarks, I’m happy for you! Otherwise, unfortunately, it won’t work — and as of now, there’s no way for me to bypass this limitation.**
|
||||||
|
|
||||||
Reference in new issue
Block a user