Compare commits

...
17 Commits
Author SHA1 Message Date
Belim dca537457a Merge pull request #177 from reindex-ot/main
Update & fix typo
2025-07-15 21:27:17 +02:00
Belim 964ed87f76 Merge pull request #192 from JohnFowler58/main
Adding a Hungarian language file.
2025-07-15 21:27:05 +02:00
Belim d91cc98021 Update README.md 2025-06-24 19:42:54 +02:00
Belim cd535d0840 Update README.md 2025-06-24 19:42:00 +02:00
John Fowler 9bd91b4c11 Adding a Hungarian language file.
I have created a Hungarian language file for the program.
Please add it to the next release!
John Fowler.
2025-06-22 12:26:43 +02:00
Re*Index. (ot_inc) 0cf681f443 Update Strings.ja.resx 2025-06-09 18:30:25 +09:00
Re*Index. (ot_inc) b2fe7db07a Update & fix typo 2025-06-09 18:26:22 +09:00
Belim fa324dc48c Merge pull request #168 from Y-PLONI/main
Adding Hebrew translation
2025-06-02 17:33:09 +02:00
Y-Ploni c752d9cb37 Update Flyby11.csproj 2025-06-01 14:43:04 +03:00
Y-Ploni 6f39ffb3bc Adding Hebrew translation 2025-06-01 14:37:23 +03:00
Belim 3ae83bda73 2.4-commit 2025-05-16 08:40:51 +02:00
Belim 631bb2e763 Update README.md 2025-04-26 20:10:13 +02:00
Belim 45cdeab25a Update README.md 2025-04-21 16:15:40 +02:00
Belim dafb636635 Merge branch 'main' of https://github.com/builtbybel/Flyby11 2025-04-21 12:11:57 +02:00
Belim a0e229c792 Init 2.2 2025-04-21 12:11:35 +02:00
Belim fbcbd8f252 Merge pull request #127 from SummonHIM/main
Chinese (Simplified) Supports
2025-04-20 00:08:27 +02:00
SummonHIM 0c8b5acaf4 Chinese (Simplified) Supports 2025-04-12 11:41:43 +08:00
53 changed files with 3120 additions and 1135 deletions

No files matched your search

Binary file not shown.
+166
View File
@@ -0,0 +1,166 @@
<?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>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</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" />
<ClInclude Include="resource.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>
<ItemGroup>
<ResourceCompile Include="CpuCheckNative.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,44 @@
<?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>
<ClInclude Include="resource.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>
<ItemGroup>
<ResourceCompile Include="CpuCheckNative.rc">
<Filter>Ressourcendateien</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
+20
View File
@@ -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;
}
+19
View File
@@ -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;
}
+5
View File
@@ -0,0 +1,5 @@
#pragma once
#define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen
// Windows-Headerdateien
#include <windows.h>
+5
View File
@@ -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.
+13
View File
@@ -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
+14
View File
@@ -0,0 +1,14 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by CpuCheckNative.rc
// Nächste Standardwerte für neue Objekte
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
+27 -1
View File
@@ -3,18 +3,44 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.12.35527.113 VisualStudioVersion = 17.12.35527.113
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "FlybyScript\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "Flyby11\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.Build.0 = Debug|Any CPU {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x64.ActiveCfg = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x64.Build.0 = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x86.ActiveCfg = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x86.Build.0 = Debug|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.ActiveCfg = Release|Any CPU {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.Build.0 = Release|Any CPU {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.Build.0 = Release|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x64.ActiveCfg = Release|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x64.Build.0 = Release|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x86.ActiveCfg = Release|Any CPU
{503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x86.Build.0 = Release|Any CPU
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|Any CPU.ActiveCfg = Debug|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|Any CPU.Build.0 = Debug|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x64.ActiveCfg = Debug|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x64.Build.0 = Debug|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x86.ActiveCfg = Debug|Win32
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x86.Build.0 = Debug|Win32
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|Any CPU.ActiveCfg = Release|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|Any CPU.Build.0 = Release|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x64.ActiveCfg = Release|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x64.Build.0 = Release|x64
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x86.ActiveCfg = Release|Win32
{A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
+123 -127
View File
@@ -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;
} }
} }
+20 -1
View File
@@ -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)
{
}
} }
} }
+113
View File
@@ -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;
}
}
+144
View File
@@ -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();
}
}
}
+123
View File
@@ -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>
+48
View File
@@ -0,0 +1,48 @@
namespace Flyby11
{
partial class CompatibilityForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// CompatibilityForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(530, 304);
this.Name = "CompatibilityForm";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.ResumeLayout(false);
}
#endregion
}
}
+138
View File
@@ -0,0 +1,138 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Flyby11
{
public partial class CompatibilityForm : Form
{
public CompatibilityForm(bool hasPopcnt, bool hasSse42)
{
InitializeComponent();
InitLayout(hasPopcnt, hasSse42);
}
private void InitLayout(bool hasPopcnt, bool hasSse42)
{
this.Text = "Flyby11 - Windows 11 Compatibility Check via CpuCheckNative.dll";
this.StartPosition = FormStartPosition.CenterScreen;
this.Font = new Font("Segoe UI", 10);
// icon font for check marks
var iconFont = new Font("Segoe MDL2 Assets", 18);
// Label for CPU POPCNT Support
var lblPopcnt = new Label { Text = "CPU POPCNT:", Location = new Point(30, 30), AutoSize = true };
var iconPopcnt = new Label
{
Text = hasPopcnt ? "\uE73D" : "\uE10A", // ✔ or ❌
Font = iconFont,
ForeColor = hasPopcnt ? Color.ForestGreen : Color.Crimson,
Location = new Point(280, 30),
AutoSize = true
};
// Label for SSE4.2 Support
var lblSse42 = new Label { Text = "SSE4.2:", Location = new Point(30, 70), AutoSize = true };
var iconSse42 = new Label
{
Text = hasSse42 ? "\uE73D" : "\uE10A",
Font = iconFont,
ForeColor = hasSse42 ? Color.ForestGreen : Color.Crimson,
Location = new Point(280, 70),
AutoSize = true
};
// Label for Upgrade Probability
var lblProb = new Label
{
Text = "Upgrade Probability:",
Location = new Point(30, 120),
AutoSize = true,
Font = new Font("Segoe UI", 10, FontStyle.Bold)
};
var result = new Label
{
Text = (hasPopcnt && hasSse42) ? "Very High" : "Low",
Location = new Point(250, 120),
ForeColor = (hasPopcnt && hasSse42) ? Color.ForestGreen : Color.Crimson,
AutoSize = true
};
// Adding the info about upgrade status
var infoLabel = new Label
{
Text = "Note: If both POPCNT and SSE4.2 are supported, your upgrade chances are very high.\n" +
"Otherwise, you may face issues while upgrading.",
Location = new Point(30, 160),
AutoSize = true,
Font = new Font("Segoe UI", 9, FontStyle.Italic),
ForeColor = Color.Gray
};
// additional info
var additionalInfoLabel = new Label
{
Text = "This app successfully helped upgrade over half a million PCs to Windows 11!\n" +
"Fewer e-waste, lower costs, and no need for a new setup. " +
"Stay updated. Best wishes, Belim. ",
Dock = DockStyle.Bottom,
AutoSize = true,
Font = new Font("Segoe UI", 9, FontStyle.Italic),
ForeColor = Color.DimGray
};
// W10 support-end countdown
var supportEndDate = new DateTime(2025, 10, 14);
var daysLeft = (supportEndDate - DateTime.Today).Days;
var countdownLabel = new Label
{
Text = $"⚠️ Windows 10 support ends in {daysLeft} days – on October 14, 2025!",
Dock = DockStyle.Bottom,
AutoSize = true,
Font = new Font("Segoe UI", 9.5f, FontStyle.Bold),
ForeColor = Color.Red,
};
// Button Upgrade
var upgradeButton = new Button
{
Text = "Start Upgrade Now!",
Dock = DockStyle.Bottom,
AutoSize = true,
Size = new Size(180, 40),
BackColor = Color.ForestGreen,
ForeColor = Color.White,
Font = new Font("Segoe UI", 12, FontStyle.Bold),
FlatStyle = FlatStyle.Flat
};
upgradeButton.FlatAppearance.BorderSize = 0;
upgradeButton.Click += UpgradeButton_Click;
this.Controls.Add(lblPopcnt);
this.Controls.Add(iconPopcnt);
this.Controls.Add(lblSse42);
this.Controls.Add(iconSse42);
this.Controls.Add(lblProb);
this.Controls.Add(result);
this.Controls.Add(infoLabel);
this.Controls.Add(upgradeButton);
this.Controls.Add(countdownLabel);
// this.Controls.Add(additionalInfoLabel);
}
private void UpgradeButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("You are good to go! Proceeding with the upgrade...", "Upgrade Started", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?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>
</root>
+165 -56
View File
@@ -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,111 @@ 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 --
// Donation
private void AddFaq2(FlowLayoutPanel panel)
{ {
var donateContainer = new FlowLayoutPanel
// 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"); FlowDirection = FlowDirection.TopDown,
AutoSize = true,
AutoSizeMode = AutoSizeMode.GrowAndShrink,
BackColor = Color.FromArgb(255, 182, 193),
Padding = new Padding(10),
Margin = new Padding(0, 10, 0, 10),
WrapContents = false
};
// Q: How does the setup process work once the ISO is mounted? var qLabel = new Label
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); Text = Locales.Strings.faq_q2,
Font = new Font("Comic Sans MS", 11.5f, FontStyle.Bold),
AutoSize = true,
Padding = new Padding(0, 0, 0, 5),
UseCompatibleTextRendering = true
};
// Q: What if I encounter issues during installation? var aLabel = new Label
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); Text = Locales.Strings.faq_a2,
Font = new Font("Segoe UI Variable Display", 11),
AutoSize = true,
Padding = new Padding(0, 0, 0, 5),
UseCompatibleTextRendering = true
};
// Q: What is the setup path for Windows 11? var donateLink = new LinkLabel
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); Text = Locales.Strings.faq_a2Link,
Font = new Font("Comic Sans MS", 10.5f, FontStyle.Underline),
LinkColor = Color.MediumBlue,
AutoSize = true,
UseCompatibleTextRendering = true
};
donateLink.LinkClicked += (sender, e) => Process.Start("https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG");
// Q: Is it legal to use this method? donateContainer.Controls.Add(qLabel);
AddLabel(parent, "Q: Is it legal to use this method?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10); donateContainer.Controls.Add(aLabel);
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); donateContainer.Controls.Add(donateLink);
// Q: What are my alternatives if my PC is not supported? // Add to parent panel
AddLabel(parent, "Q: What are my alternatives if my PC is not supported?", new Font("Arial", 10, FontStyle.Bold), ContentAlignment.TopLeft, 10); panel.Controls.Add(donateContainer);
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); }
// Q: Who is the developer? private void AddFaq3(FlowLayoutPanel panel)
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"); {
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);
}
private void AddFaq4(FlowLayoutPanel panel)
{
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);
}
private void AddFaq5(FlowLayoutPanel panel)
{
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);
}
private void AddFaq6(FlowLayoutPanel panel)
{
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);
}
private void AddFaq7(FlowLayoutPanel panel)
{
AddFAQItem(panel, Locales.Strings.faq_q7, Locales.Strings.faq_a7, Locales.Strings.faq_a7Link, "https://github.com/BuiltByBel");
} }
} }
} }
+42 -12
View File
@@ -58,9 +58,26 @@
<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="CompatibilityForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CompatibilityForm.Designer.cs">
<DependentUpon>CompatibilityForm.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,33 +86,45 @@
</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="CompatibilityForm.resx">
<DependentUpon>CompatibilityForm.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" />
<EmbeddedResource Include="Locales\Strings.fr.resx" /> <EmbeddedResource Include="Locales\Strings.fr.resx" />
<EmbeddedResource Include="Locales\Strings.he.resx" />
<EmbeddedResource Include="Locales\Strings.it.resx" /> <EmbeddedResource Include="Locales\Strings.it.resx" />
<EmbeddedResource Include="Locales\Strings.ja.resx" /> <EmbeddedResource Include="Locales\Strings.ja.resx" />
<EmbeddedResource Include="Locales\Strings.pl.resx" /> <EmbeddedResource Include="Locales\Strings.pl.resx" />
<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="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>
@@ -113,5 +142,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
View File
@@ -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)
{ {
+9
View File
@@ -518,5 +518,14 @@ namespace Flyby11.Locales {
return ResourceManager.GetString("msg_InstallReady", resourceCulture); return ResourceManager.GetString("msg_InstallReady", resourceCulture);
} }
} }
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Thank you for using my app!\n\nI developed this application in my free time to help you upgrade from Windows 10 to Windows 11 – even on PCs that, according to Microsoft&apos;s hardware requirements, would normally not be supported.\n\nMy app helps you avoid purchasing a new computer and actively contributes to reducing unnecessary electronic waste.\n\nNormally, I do not charge anything for my projects – neither for development nor for support.\nHowever, since this app is significantly more comprehensive, offers [Rest der Zeichenfolge wurde abgeschnitten]&quot;; ähnelt.
/// </summary>
public static string msgClosing {
get {
return ResourceManager.GetString("msgClosing", resourceCulture);
}
}
} }
} }
+105 -102
View File
@@ -117,166 +117,169 @@
<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>تم إلغاء التصحيح بواسطة المستخدم.</value> <value>تم إلغاء التصحيح بواسطة المستخدم.</value>
</data> </data>
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve"> <data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
<value>حاول المستخدم اختيار محرك أقراص غير قابل للإزالة.</value> <value>حاول المستخدم اختيار محرك أقراص غير قابل للإزالة.</value>
</data> </data>
<data name="compPatch_debugNoUSBDrive" xml:space="preserve"> <data name="compPatch_debugNoUSBDrive" xml:space="preserve">
<value>لم يتم اختيار أي محرك أقراص USB للتصحيح.</value> <value>لم يتم اختيار أي محرك أقراص USB للتصحيح.</value>
</data> </data>
<data name="compPatch_msgFailedEx" xml:space="preserve"> <data name="compPatch_msgFailedEx" xml:space="preserve">
<value>فشل في تطبيق التصحيح:</value> <value>فشل في تطبيق التصحيح:</value>
</data> </data>
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve"> <data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
<value>المسار المحدد ليس محرك أقراص قابل للإزالة. يرجى اختيار محرك أقراص USB.</value> <value>المسار المحدد ليس محرك أقراص قابل للإزالة. يرجى اختيار محرك أقراص USB.</value>
</data> </data>
<data name="compPatch_msgSelectDrive" xml:space="preserve"> <data name="compPatch_msgSelectDrive" xml:space="preserve">
<value>اختر محرك أقراص USB الذي يحتوي على ملفات تثبيت Windows 11 الخاصة بك.\nتضيف هذه الميزة تصحيح توافق لتجاوز متطلبات النظام معينة.\nمتوافق مع الأقراص المعدة بواسطة أي أداة، بما في ذلك Rufus. تأكد من أن المحرك جاهز!</value> <value>اختر محرك أقراص USB الذي يحتوي على ملفات تثبيت Windows 11 الخاصة بك.\nتضيف هذه الميزة تصحيح توافق لتجاوز متطلبات النظام معينة.\nمتوافق مع الأقراص المعدة بواسطة أي أداة، بما في ذلك Rufus. تأكد من أن المحرك جاهز!</value>
</data> </data>
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve"> <data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
<value>سيتم تطبيق إعدادات تجاوز التوافق على محرك أقراص USB المحدد. هل تريد المتابعة؟</value> <value>سيتم تطبيق إعدادات تجاوز التوافق على محرك أقراص USB المحدد. هل تريد المتابعة؟</value>
</data> </data>
<data name="compPatch_msgSuccess" xml:space="preserve"> <data name="compPatch_msgSuccess" xml:space="preserve">
<value>تم تطبيق التصحيح بنجاح!</value> <value>تم تطبيق التصحيح بنجاح!</value>
</data> </data>
<data name="ctl_FormTitle" xml:space="preserve"> <data name="ctl_FormTitle" xml:space="preserve">
<value>مساعد ترقية Flyby11</value> <value>مساعد ترقية Flyby11</value>
</data> </data>
<data name="ctl_inkCompPatch" xml:space="preserve"> <data name="ctl_inkCompPatch" xml:space="preserve">
<value>تطبيق تصحيح التوافق على ISO (تثبيت نظيف)</value> <value>تطبيق تصحيح التوافق على ISO (تثبيت نظيف)</value>
</data> </data>
<data name="ctl_linkCiuv" xml:space="preserve"> <data name="ctl_linkCiuv" xml:space="preserve">
<value>هل يمكنني الترقية إلى Windows 11؟</value> <value>هل يمكنني الترقية إلى Windows 11؟</value>
</data> </data>
<data name="ctl_linkVote" xml:space="preserve"> <data name="ctl_linkVote" xml:space="preserve">
<value>هل نجحت الترقية؟</value> <value>هل نجحت الترقية؟</value>
</data> </data>
<data name="ctl_statusLabel" xml:space="preserve"> <data name="ctl_statusLabel" xml:space="preserve">
<value>اسحب وأفلت ملف ISO الخاص بـ Windows 11 لتصحيحه وتثبيته على الأجهزة غير المدعومة (ترقية مكانية).</value> <value>اسحب وأفلت ملف ISO الخاص بـ Windows 11 لتصحيحه وتثبيته على الأجهزة غير المدعومة (ترقية مكانية).</value>
</data> </data>
<data name="faq_a1" xml:space="preserve"> <data name="faq_a1" xml:space="preserve">
<value>ج: يمكنك تنزيل أحدث ISO من الموقع الرسمي لشركة Microsoft أو استخدام Fido Downloader.</value> <value>ج: يمكنك تنزيل أحدث ISO من الموقع الرسمي لشركة Microsoft أو استخدام Fido Downloader.</value>
</data> </data>
<data name="faq_a2" xml:space="preserve"> <data name="faq_a2" xml:space="preserve">
<value>ج: إذا قمت بتثبيت Windows 11 بنجاح ووفرت بعض المال، فلا تتردد في ترك شيء صغير كعلامة شكر هنا.</value> <value>ج: إذا قمت بتثبيت Windows 11 بنجاح ووفرت بعض المال، فلا تتردد في ترك شيء صغير كعلامة شكر هنا.</value>
</data> </data>
<data name="faq_a2Link" xml:space="preserve"> <data name="faq_a2Link" xml:space="preserve">
<value>انقر هنا للتبرع وإظهار دعمك.</value> <value>انقر هنا للتبرع وإظهار دعمك.</value>
</data> </data>
<data name="faq_a3" xml:space="preserve"> <data name="faq_a3" xml:space="preserve">
<value>ج: بمجرد تحميل ISO، يتم تشغيل عملية الإعداد في الخلفية. يبدأ مثبت Windows، موجهًا إياك خلال الخطوات المطلوبة لتثبيت Windows 11 على جهازك.</value> <value>ج: بمجرد تحميل ISO، يتم تشغيل عملية الإعداد في الخلفية. يبدأ مثبت Windows، موجهًا إياك خلال الخطوات المطلوبة لتثبيت Windows 11 على جهازك.</value>
</data> </data>
<data name="faq_a4" xml:space="preserve"> <data name="faq_a4" xml:space="preserve">
<value>ج: يرجى التحقق من رسائل الخطأ والإبلاغ عنها على GitHub.</value> <value>ج: يرجى التحقق من رسائل الخطأ والإبلاغ عنها على GitHub.</value>
</data> </data>
<data name="faq_a5" xml:space="preserve"> <data name="faq_a5" xml:space="preserve">
<value>ج: نعم، تركت Microsoft بابًا خلفيًا مفتوحًا. تستفيد هذه الطريقة من ميزة في عملية إعداد Windows 11 تستخدم إصدار Windows Server من التثبيت. على عكس إعداد Windows 11 العادي، تتخطى هذه النسخة معظم فحوصات توافق الأجهزة.</value> <value>ج: نعم، تركت Microsoft بابًا خلفيًا مفتوحًا. تستفيد هذه الطريقة من ميزة في عملية إعداد Windows 11 تستخدم إصدار Windows Server من التثبيت. على عكس إعداد Windows 11 العادي، تتخطى هذه النسخة معظم فحوصات توافق الأجهزة.</value>
</data> </data>
<data name="faq_a6" xml:space="preserve"> <data name="faq_a6" xml:space="preserve">
<value>ج: وفقًا لشركة Microsoft، يجب عليك التخلص من جهاز الكمبيوتر الخاص بك. أوصي بتثبيت Linux عليه والابتعاد عن Windows.</value> <value>ج: وفقًا لشركة Microsoft، يجب عليك التخلص من جهاز الكمبيوتر الخاص بك. أوصي بتثبيت Linux عليه والابتعاد عن Windows.</value>
</data> </data>
<data name="faq_a7" xml:space="preserve"> <data name="faq_a7" xml:space="preserve">
<value>ج: المطور هو Belim، المعروف أيضًا باسم Builtbybel، الذي ساهم بالكثير من الشيفرة في مجتمع Windows.</value> <value>ج: المطور هو Belim، المعروف أيضًا باسم Builtbybel، الذي ساهم بالكثير من الشيفرة في مجتمع Windows.</value>
</data> </data>
<data name="faq_a7Link" xml:space="preserve"> <data name="faq_a7Link" xml:space="preserve">
<value>انقر هنا لمعرفة المزيد عن عمل المطور.</value> <value>انقر هنا لمعرفة المزيد عن عمل المطور.</value>
</data> </data>
<data name="faq_downloadFido" xml:space="preserve"> <data name="faq_downloadFido" xml:space="preserve">
<value>تنزيل عبر Fido (موصى به)</value> <value>تنزيل عبر Fido (موصى به)</value>
</data> </data>
<data name="faq_downloadMS" xml:space="preserve"> <data name="faq_downloadMS" xml:space="preserve">
<value>موقع Microsoft</value> <value>موقع Microsoft</value>
</data> </data>
<data name="faq_header" xml:space="preserve"> <data name="faq_header" xml:space="preserve">
<value>الأسئلة الشائعة (FAQ)</value> <value>الأسئلة الشائعة (FAQ)</value>
</data> </data>
<data name="faq_q1" xml:space="preserve"> <data name="faq_q1" xml:space="preserve">
<value>س: أين يمكنني الحصول على أحدث Windows 11 ISO؟</value> <value>س: أين يمكنني الحصول على أحدث Windows 11 ISO؟</value>
</data> </data>
<data name="faq_q2" xml:space="preserve"> <data name="faq_q2" xml:space="preserve">
<value>س: كيف يمكنني دعم المطور؟</value> <value>س: كيف يمكنني دعم المطور؟</value>
</data> </data>
<data name="faq_q3" xml:space="preserve"> <data name="faq_q3" xml:space="preserve">
<value>س: كيف تعمل عملية الإعداد بمجرد تحميل ISO؟</value> <value>س: كيف تعمل عملية الإعداد بمجرد تحميل ISO؟</value>
</data> </data>
<data name="faq_q4" xml:space="preserve"> <data name="faq_q4" xml:space="preserve">
<value>س: ماذا لو واجهت مشاكل أثناء التثبيت؟</value> <value>س: ماذا لو واجهت مشاكل أثناء التثبيت؟</value>
</data> </data>
<data name="faq_q5" xml:space="preserve"> <data name="faq_q5" xml:space="preserve">
<value>س: هل من القانوني استخدام هذه الطريقة؟</value> <value>س: هل من القانوني استخدام هذه الطريقة؟</value>
</data> </data>
<data name="faq_q6" xml:space="preserve"> <data name="faq_q6" xml:space="preserve">
<value>س: ما هي البدائل إذا لم يكن جهازي مدعومًا؟</value> <value>س: ما هي البدائل إذا لم يكن جهازي مدعومًا؟</value>
</data> </data>
<data name="faq_q7" xml:space="preserve"> <data name="faq_q7" xml:space="preserve">
<value>س: من هو المطور؟</value> <value>س: من هو المطور؟</value>
</data> </data>
<data name="ciuView_lblPtAns" xml:space="preserve"> <data name="ciuView_lblPtAns" xml:space="preserve">
<value>1. الجهاز يعمل بإصدار مدعوم حاليًا من Windows 10. إذا لم يكن الجهاز يعمل بإصدار مدعوم حاليًا من Windows 10، قم بالترقية إلى إصدار مدعوم من Windows 10.</value> <value>1. الجهاز يعمل بإصدار مدعوم حاليًا من Windows 10. إذا لم يكن الجهاز يعمل بإصدار مدعوم حاليًا من Windows 10، قم بالترقية إلى إصدار مدعوم من Windows 10.</value>
</data> </data>
<data name="ciuView_lblPtAns2" xml:space="preserve"> <data name="ciuView_lblPtAns2" xml:space="preserve">
<value>2. الجهاز يلبي</value> <value>2. الجهاز يلبي</value>
</data> </data>
<data name="ciuView_lblPtAns3" xml:space="preserve"> <data name="ciuView_lblPtAns3" xml:space="preserve">
<value>1. قم بتنزيل وتشغيل</value> <value>1. قم بتنزيل وتشغيل</value>
</data> </data>
<data name="ciuView_lblPtAns4" xml:space="preserve"> <data name="ciuView_lblPtAns4" xml:space="preserve">
<value>2. اختر اختصار تحديث Windows التالي ثم اختر زر التحقق من التحديثات:</value> <value>2. اختر اختصار تحديث Windows التالي ثم اختر زر التحقق من التحديثات:</value>
</data> </data>
<data name="ciuView_lblPtAns5" xml:space="preserve"> <data name="ciuView_lblPtAns5" xml:space="preserve">
<value>3. جهازك لا يلبي المتطلبات الرسمية لـ Windows 11؟ يمكنك تطبيق تصحيح التوافق لتمكين الترقية المكانية عبر تحديث Windows.</value> <value>3. جهازك لا يلبي المتطلبات الرسمية لـ Windows 11؟ يمكنك تطبيق تصحيح التوافق لتمكين الترقية المكانية عبر تحديث Windows.</value>
</data> </data>
<data name="ciuView_lblPtHdr" xml:space="preserve"> <data name="ciuView_lblPtHdr" xml:space="preserve">
<value>يمكن ترقية جهاز Windows 10 الحالي إلى Windows 11 إذا كان يلبي المعايير التالية:</value> <value>يمكن ترقية جهاز Windows 10 الحالي إلى Windows 11 إذا كان يلبي المعايير التالية:</value>
</data> </data>
<data name="ciuView_lblPtHdr2" xml:space="preserve"> <data name="ciuView_lblPtHdr2" xml:space="preserve">
<value>للتحقق مما إذا كان جهاز Windows 10 مؤهلاً للترقية إلى Windows 11، اتبع إحدى هذه الخيارات:</value> <value>للتحقق مما إذا كان جهاز Windows 10 مؤهلاً للترقية إلى Windows 11، اتبع إحدى هذه الخيارات:</value>
</data> </data>
<data name="ciuView_linkPtAns2" xml:space="preserve"> <data name="ciuView_linkPtAns2" xml:space="preserve">
<value>المواصفات الدنيا للأجهزة لتشغيل Windows 11.</value> <value>المواصفات الدنيا للأجهزة لتشغيل Windows 11.</value>
</data> </data>
<data name="ciuView_linkPtAns3" xml:space="preserve"> <data name="ciuView_linkPtAns3" xml:space="preserve">
<value>تطبيق WhyNotWin11 لتأكيد أن جهازك يلبي الحد الأدنى من متطلبات النظام</value> <value>تطبيق WhyNotWin11 لتأكيد أن جهازك يلبي الحد الأدنى من متطلبات النظام</value>
</data> </data>
<data name="msg_InstallReady" xml:space="preserve"> <data name="msg_InstallReady" xml:space="preserve">
<value>يمكن الآن متابعة تثبيت Windows 11. يرجى اتباع التعليمات في نافذة الإعداد.</value> <value>يمكن الآن متابعة تثبيت Windows 11. يرجى اتباع التعليمات في نافذة الإعداد.</value>
<comment>تثبيت</comment> <comment>تثبيت</comment>
</data> </data>
<data name="_debugInstallReady" xml:space="preserve"> <data name="_debugInstallReady" xml:space="preserve">
<value>أنت جاهز لتثبيت Windows 11 على الأجهزة غير المدعومة! تجاهل رسالة 'Windows Server'؛ أنت جاهز!</value> <value>أنت جاهز لتثبيت Windows 11 على الأجهزة غير المدعومة! تجاهل رسالة 'Windows Server'؛ أنت جاهز!</value>
<comment>تثبيت</comment> <comment>تثبيت</comment>
</data> </data>
<data name="_debugInstallRunElevated" xml:space="preserve"> <data name="_debugInstallRunElevated" xml:space="preserve">
<value>بدء عملية الإعداد بامتيازات مرتفعة...</value> <value>بدء عملية الإعداد بامتيازات مرتفعة...</value>
<comment>تثبيت</comment> <comment>تثبيت</comment>
</data> </data>
<data name="_debugStatusHandleIsoEx" xml:space="preserve"> <data name="_debugStatusHandleIsoEx" xml:space="preserve">
<value>عذرًا! حدث خطأ ما:</value> <value>عذرًا! حدث خطأ ما:</value>
<comment>تحميل</comment> <comment>تحميل</comment>
</data> </data>
<data name="_debugStatusMounting" xml:space="preserve"> <data name="_debugStatusMounting" xml:space="preserve">
<value>يتم تحميل ISO... انتظر قليلاً!</value> <value>يتم تحميل ISO... انتظر قليلاً!</value>
<comment>تحميل</comment> <comment>تحميل</comment>
</data> </data>
<data name="_debugStatusMountingFailed" xml:space="preserve"> <data name="_debugStatusMountingFailed" xml:space="preserve">
<value>فشل تحميل ISO. يرجى المحاولة مرة أخرى.</value> <value>فشل تحميل ISO. يرجى المحاولة مرة أخرى.</value>
<comment>تحميل</comment> <comment>تحميل</comment>
</data> </data>
<data name="_debugStatusMountingSuccess" xml:space="preserve"> <data name="_debugStatusMountingSuccess" xml:space="preserve">
<value>تم تحميل ISO بنجاح! دعنا نجعل هذا Windows 11 جاهزًا!</value> <value>تم تحميل ISO بنجاح! دعنا نجعل هذا Windows 11 جاهزًا!</value>
<comment>تحميل</comment> <comment>تحميل</comment>
</data> </data>
<data name="_debugStatusRunning" xml:space="preserve"> <data name="_debugStatusRunning" xml:space="preserve">
<value>قريبًا! نحن نستعد للإعداد...</value> <value>قريبًا! نحن نستعد للإعداد...</value>
<comment>تثبيت</comment> <comment>تثبيت</comment>
</data> </data>
<data name="_debugStatusSetupFileNotFound" xml:space="preserve"> <data name="_debugStatusSetupFileNotFound" xml:space="preserve">
<value>لم يتم العثور على ملف الإعداد في</value> <value>لم يتم العثور على ملف الإعداد في</value>
<comment>تحميل</comment> <comment>تحميل</comment>
</data> </data>
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>اختر من الكمبيوتر</value> <value>اختر من الكمبيوتر</value>
</data> </data>
</root> <data name="msgClosing" xml:space="preserve">
<value />
</data>
</root>
+3
View File
@@ -279,4 +279,7 @@
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Vyberte z počítače.</value> <value>Vyberte z počítače.</value>
</data> </data>
<data name="msgClosing" xml:space="preserve">
<value />
</data>
</root> </root>
+5 -1
View File
@@ -160,7 +160,7 @@
<value>A: Du kannst die neueste ISO von der offiziellen Microsoft-Website herunterladen oder den Fido Downloader verwenden.</value> <value>A: Du kannst die neueste ISO von der offiziellen Microsoft-Website herunterladen oder den Fido Downloader verwenden.</value>
</data> </data>
<data name="faq_a2" xml:space="preserve"> <data name="faq_a2" xml:space="preserve">
<value>A: Wenn du Windows 11 erfolgreich installiert hast und dabei etwas Geld gespart hast, kannst du hier gerne ein kleines Dankeschön hinterlassen.</value> <value>A: Wenn du Windows 11 erfolgreich installiert hast und dabei etwas Geld gespart hast, kannst du hier gerne ein kleines Dankeschön hinterlassen. Deine Unterstützung hält das Projekt am Leben – und hilft auch anderen. </value>
</data> </data>
<data name="faq_a2Link" xml:space="preserve"> <data name="faq_a2Link" xml:space="preserve">
<value>Klicke hier, um zu spenden und deine Unterstützung zu zeigen.</value> <value>Klicke hier, um zu spenden und deine Unterstützung zu zeigen.</value>
@@ -270,4 +270,8 @@
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Vom Computer auswählen</value> <value>Vom Computer auswählen</value>
</data> </data>
<data name="msgClosing" xml:space="preserve">
<value>Vielen Dank, dass du meine App nutzt!\n\nIch habe diese Anwendung in meiner Freizeit entwickelt, um dir den Umstieg von Windows 10 auf Windows 11 zu erleichtern – auch auf PCs, die laut Microsofts Hardwarevorgaben eigentlich nicht unterstützt werden.\n\nMeine App hilft dir, den Kauf eines neuen Rechners zu vermeiden und trägt aktiv dazu bei, unnötigen Elektroschrott zu verhindern.\n\nNormalerweise verlange ich für meine Projekte keinerlei Geld – weder für die Entwicklung noch für den Support.\nDa diese App jedoch deutlich umfangreicher ist, mehr Funktionen bietet und auch mehr Supportaufwand verursacht, würde ich mich freuen, wenn du – sofern es dir möglich ist – eine kleine freiwillige Spende in Erwägung ziehst.\n\nNatürlich nur, wenn du möchtest und es dir leisten kannst.\n\nMöchtest du jetzt auf PayPal spenden?
</value>
</data>
</root> </root>
+4 -1
View File
@@ -275,4 +275,7 @@
<value>Fichier d'installation introuvable dans</value> <value>Fichier d'installation introuvable dans</value>
<comment>Mounting</comment> <comment>Mounting</comment>
</data> </data>
</root> <data name="msgClosing" xml:space="preserve">
<value />
</data>
</root>
+276
View File
@@ -0,0 +1,276 @@
<?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>
<data name="compPatch_debugCancel" xml:space="preserve">
<value>החלת טלאי העקיפה בוטלה על ידי המשתמש.</value>
</data>
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
<value>המשתמש ניסה לבחור כונן שאינו נשלף.</value>
</data>
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
<value>לא נבחר כונן USB לצורך החלת הטלאי.</value>
</data>
<data name="compPatch_msgFailedEx" xml:space="preserve">
<value>החלת טלאי העקיפה נכשלה:</value>
</data>
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
<value>הנתיב שנבחר אינו כונן נשלף. אנא בחר כונן USB.</value>
</data>
<data name="compPatch_msgSelectDrive" xml:space="preserve">
<value>בחר את כונן ה-USB שמכיל את קובצי ההתקנה של Windows 11.\nפונקציה זו מוסיפה טלאי תאימות כדי לעקוף דרישות מערכת מסוימות.\nתואם לכוננים שהוכנו בכלים שונים, כולל Rufus. ודא שהכונן מוכן!</value>
</data>
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
<value>פעולה זו תחיל הגדרות עקיפת תאימות על כונן ה-USB שנבחר. להמשיך?</value>
</data>
<data name="compPatch_msgSuccess" xml:space="preserve">
<value>טלאי העקיפה הוחל בהצלחה!</value>
</data>
<data name="ctl_FormTitle" xml:space="preserve">
<value>מסייע השדרוג Flyby11</value>
</data>
<data name="ctl_inkCompPatch" xml:space="preserve">
<value>החל טלאי תאימות על ISO (התקנה נקייה)</value>
</data>
<data name="ctl_linkCiuv" xml:space="preserve">
<value>האם אני יכול לשדרג ל-Windows 11?</value>
</data>
<data name="ctl_linkVote" xml:space="preserve">
<value>האם השדרוג הצליח?</value>
</data>
<data name="ctl_statusLabel" xml:space="preserve">
<value>גרור את קובץ ה־ISO של Windows 11 לכאן כדי להחיל עליו טלאי ולהתקין על חומרה שאינה נתמכת (שדרוג במקום).</value>
</data>
<data name="faq_a1" xml:space="preserve">
<value>ת: ניתן להוריד את קובץ ה־ISO העדכני מאתר מיקרוסופט הרשמי או בעזרת Fido Downloader.</value>
</data>
<data name="faq_a2" xml:space="preserve">
<value>ת: אם הצלחת להתקין את Windows 11 וחסכת כסף – תוכל להשאיר כאן תרומה קטנה כהוקרת תודה.</value>
</data>
<data name="faq_a2Link" xml:space="preserve">
<value>לחץ כאן כדי לתרום ולהביע תמיכה.</value>
</data>
<data name="faq_a3" xml:space="preserve">
<value>ת: לאחר שה־ISO נצפה (mount), תהליך ההתקנה פועל ברקע. מתקין Windows יתחיל וידריך אותך בשלבים הנדרשים להתקנה.</value>
</data>
<data name="faq_a4" xml:space="preserve">
<value>ת: בדוק את הודעות השגיאה ודווח עליהן ב-GitHub.</value>
</data>
<data name="faq_a5" xml:space="preserve">
<value>ת: כן, מיקרוסופט השאירה דלת אחורית פתוחה. שיטה זו מנצלת את גרסת ההתקנה של Windows Server, אשר מדלגת על רוב בדיקות התאימות לחומרה.</value>
</data>
<data name="faq_a6" xml:space="preserve">
<value>ת: לפי מיקרוסופט עליך לזרוק את המחשב. אני ממליץ להתקין עליו Linux ולעבור מ-Windows.</value>
</data>
<data name="faq_a7" xml:space="preserve">
<value>ת: המפתח הוא Belim, המוכר גם בשם Builtbybel, שתרם רבות לקהילת Windows.</value>
</data>
<data name="faq_a7Link" xml:space="preserve">
<value>לחץ כאן כדי ללמוד עוד על עבודתו של המפתח.</value>
</data>
<data name="faq_downloadFido" xml:space="preserve">
<value>הורדה דרך Fido (מומלץ)</value>
</data>
<data name="faq_downloadMS" xml:space="preserve">
<value>אתר Microsoft</value>
</data>
<data name="faq_header" xml:space="preserve">
<value>שאלות נפוצות (FAQ)</value>
</data>
<data name="faq_q1" xml:space="preserve">
<value>ש: היכן ניתן להוריד את Windows 11 ISO העדכני?</value>
</data>
<data name="faq_q2" xml:space="preserve">
<value>ש: כיצד ניתן לתמוך במפתח?</value>
</data>
<data name="faq_q3" xml:space="preserve">
<value>ש: כיצד פועל תהליך ההתקנה לאחר צפייה ב־ISO?</value>
</data>
<data name="faq_q4" xml:space="preserve">
<value>ש: מה לעשות במקרה של שגיאה בהתקנה?</value>
</data>
<data name="faq_q5" xml:space="preserve">
<value>ש: האם מותר חוקית להשתמש בשיטה הזו?</value>
</data>
<data name="faq_q6" xml:space="preserve">
<value>ש: מהן החלופות אם המחשב שלי לא נתמך?</value>
</data>
<data name="faq_q7" xml:space="preserve">
<value>ש: מי המפתח?</value>
</data>
<data name="ciuView_lblPtAns" xml:space="preserve">
<value>1. המכשיר פועל עם גרסה נתמכת של Windows 10. אם המכשיר לא מריץ גרסה נתמכת, יש לשדרג לגרסה נתמכת של Windows 10.</value>
</data>
<data name="ciuView_lblPtAns2" xml:space="preserve">
<value>2. המכשיר עומד ב</value>
</data>
<data name="ciuView_lblPtAns3" xml:space="preserve">
<value>1. הורד והפעל את</value>
</data>
<data name="ciuView_lblPtAns4" xml:space="preserve">
<value>2. בחר את קיצור הדרך הבא של Windows Update ולאחר מכן לחץ על הלחצן "בדוק אם קיימים עדכונים":</value>
</data>
<data name="ciuView_lblPtAns5" xml:space="preserve">
<value>3. המכשיר שלך לא עומד בדרישות הרשמיות של Windows 11? ניתן להחיל טלאי תאימות כדי לאפשר שדרוג במקום דרך Windows Update.</value>
</data>
<data name="ciuView_lblPtHdr" xml:space="preserve">
<value>ניתן לשדרג מכשיר עם Windows 10 לגרסה 11 אם הוא עומד בקריטריונים הבאים:</value>
</data>
<data name="ciuView_lblPtHdr2" xml:space="preserve">
<value>כדי לבדוק אם מכשיר Windows 10 זכאי לשדרוג ל-Windows 11, בצע אחת מהאפשרויות הבאות:</value>
</data>
<data name="ciuView_linkPtAns2" xml:space="preserve">
<value>המפרט המינימלי להפעלת Windows 11.</value>
</data>
<data name="ciuView_linkPtAns3" xml:space="preserve">
<value>אפליקציית WhyNotWin11 לאימות עמידת המכשיר בדרישות המערכת המינימליות</value>
</data>
<data name="msg_InstallReady" xml:space="preserve">
<value>ניתן כעת להמשיך בהתקנת Windows 11. נא לעקוב אחר ההוראות בחלון ההתקנה.</value>
</data>
<data name="_debugInstallReady" xml:space="preserve">
<value>אתה מוכן להתקנת Windows 11 על חומרה לא נתמכת! התעלם מההודעה 'Windows Server' – הכל מוכן!</value>
</data>
<data name="_debugInstallRunElevated" xml:space="preserve">
<value>מתחיל את תהליך ההתקנה עם הרשאות מנהל...</value>
</data>
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
<value>אופס! משהו השתבש:</value>
</data>
<data name="_debugStatusMounting" xml:space="preserve">
<value>מצרף את קובץ ה־ISO... אנא המתן!</value>
</data>
<data name="_debugStatusMountingFailed" xml:space="preserve">
<value>צירוף קובץ ה־ISO נכשל. נסה שוב.</value>
</data>
<data name="_debugStatusMountingSuccess" xml:space="preserve">
<value>קובץ ה־ISO צורף בהצלחה! מתחילים את הכנת Windows 11!</value>
</data>
<data name="_debugStatusRunning" xml:space="preserve">
<value>כמעט סיימנו! אנו מכינים את תהליך ההתקנה...</value>
</data>
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
<value>קובץ ההתקנה לא נמצא ב</value>
</data>
<data name="ctl_linkSelectComputer" xml:space="preserve">
<value>בחר מהמחשב</value>
</data>
<data name="msgClosing" xml:space="preserve">
<value>תודה שהשתמשת באפליקציה שלי!\n\nפיתחתי את האפליקציה הזו בזמני הפנוי כדי לעזור לך לשדרג מ־Windows 10 ל־Windows 11 – גם על מחשבים שאינם נתמכים לפי דרישות החומרה של מיקרוסופט.\n\nהאפליקציה שלי עוזרת לך להימנע מקניית מחשב חדש ותורמת להפחתת פסולת אלקטרונית מיותרת.\n\nבדרך כלל אני לא גובה תשלום על הפרויקטים שלי – לא עבור הפיתוח ולא עבור התמיכה.\nאבל מכיוון שאפליקציה זו מקיפה יותר, כוללת יותר תכונות ודורשת יותר תמיכה, אשמח אם תוכל לשקול תרומה קטנה בהתנדבות, אם זה אפשרי עבורך.\n\nכמובן, רק אם אתה רוצה ויכול להרשות לעצמך.\n\nהאם ברצונך לתרום ב-PayPal עכשיו?</value>
</data>
</root>
+285
View File
@@ -0,0 +1,285 @@
<?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>
<data name="compPatch_debugCancel" xml:space="preserve">
<value>A felhasználó megszakította a javítás megkerülését.</value>
</data>
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
<value>A felhasználó megpróbált kiválasztani egy nem cserélhető meghajtót.</value>
</data>
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
<value>Nincs USB-meghajtó kiválasztva a javításhoz.</value>
</data>
<data name="compPatch_msgFailedEx" xml:space="preserve">
<value>Nem sikerült alkalmazni a bypass javítást:</value>
</data>
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
<value>A kiválasztott elérési út nem cserélhető meghajtó. Válasszon egy USB-meghajtót.</value>
</data>
<data name="compPatch_msgSelectDrive" xml:space="preserve">
<value>Válassza ki a Windows 11 telepítőfájljait tartalmazó USB-meghajtót.\nEz a funkció kompatibilitási javítást ad hozzá bizonyos rendszerkövetelmények megkerüléséhez.\nKompatibilis bármely eszközzel előkészített meghajtókkal, beleértve a Rufust is. Győződjön meg arról, hogy a meghajtó készen áll!</value>
</data>
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
<value>Ez alkalmazza a kompatibilitási megkerülési beállításokat a kiválasztott USB-meghajtón. Folytassuk?</value>
</data>
<data name="compPatch_msgSuccess" xml:space="preserve">
<value>A bypass tapasz sikeresen alkalmazva!</value>
</data>
<data name="ctl_FormTitle" xml:space="preserve">
<value>Flyby11 frissítési segéd</value>
</data>
<data name="ctl_inkCompPatch" xml:space="preserve">
<value>Alkalmazza a kompatibilitási javítást az ISO -ra (tiszta telepítés)</value>
</data>
<data name="ctl_linkCiuv" xml:space="preserve">
<value>Frissíthetek Windows 11-re?</value>
</data>
<data name="ctl_linkVote" xml:space="preserve">
<value>Működött a frissítés?</value>
</data>
<data name="ctl_statusLabel" xml:space="preserve">
<value>Húzza a Windows 11 ISO-t a javításhoz és a nem támogatott hardverre való telepítéshez (Helyi frissítés).</value>
</data>
<data name="faq_a1" xml:space="preserve">
<value>V: Letöltheti a legújabb ISO-t a Microsoft hivatalos webhelyéről, vagy használhatja a Fido Downloadert.</value>
</data>
<data name="faq_a2" xml:space="preserve">
<value>V: Ha sikeresen telepítette a Windows 11-et, és pénzt takarított meg, nyugodtan hagyjon itt egy kis köszönetet.</value>
</data>
<data name="faq_a2Link" xml:space="preserve">
<value>Kattintson ide, hogy adományozzon és kifejezze támogatását.</value>
</data>
<data name="faq_a3" xml:space="preserve">
<value>V: Az ISO csatlakoztatása után a beállítási folyamat a háttérben fut. Elindul a Windows telepítője, amely végigvezeti Önt a Windows 11 gépre történő telepítéséhez szükséges lépéseken.</value>
</data>
<data name="faq_a4" xml:space="preserve">
<value>V: Kérjük, ellenőrizze a hibaüzeneteket, és jelentse a GitHubon.</value>
</data>
<data name="faq_a5" xml:space="preserve">
<value>V: Igen, a Microsoft nyitva hagyott egy hátsó ajtót. Ez a módszer a Windows 11 telepítési folyamatának egy olyan funkcióját használja, amely a telepítés Windows Server-változatát használja. A szokásos Windows 11 beállítással ellentétben ez a változat kihagyja a legtöbb hardverkompatibilitási ellenőrzést.</value>
</data>
<data name="faq_a6" xml:space="preserve">
<value>V: A Microsoft szerint ki kell dobnia a számítógépét. Azt javaslom, hogy telepítse rá a Linuxot, és távolodjon el a Windowstól.</value>
</data>
<data name="faq_a7" xml:space="preserve">
<value>V: A fejlesztő Belim, más néven Builtbybel, aki sok kóddal járult hozzá a Windows közösséghez.</value>
</data>
<data name="faq_a7Link" xml:space="preserve">
<value>Kattintson ide, ha többet szeretne megtudni a fejlesztő munkájáról.</value>
</data>
<data name="faq_downloadFido" xml:space="preserve">
<value>Letöltés a Fido-n keresztül (ajánlott)</value>
</data>
<data name="faq_downloadMS" xml:space="preserve">
<value>Microsoft webhely</value>
</data>
<data name="faq_header" xml:space="preserve">
<value>Gyakran Ismételt Kérdések (GYIK)</value>
</data>
<data name="faq_q1" xml:space="preserve">
<value>K: Hol szerezhetem be a legújabb Windows 11 ISO-t?</value>
</data>
<data name="faq_q2" xml:space="preserve">
<value>K: Hogyan támogathatom a fejlesztőt?</value>
</data>
<data name="faq_q3" xml:space="preserve">
<value>K: Hogyan működik a beállítási folyamat az ISO csatlakoztatása után?</value>
</data>
<data name="faq_q4" xml:space="preserve">
<value>K: Mi a teendő, ha problémákat tapasztalok a telepítés során?</value>
</data>
<data name="faq_q5" xml:space="preserve">
<value>K: Legális ennek a módszernek a használata?</value>
</data>
<data name="faq_q6" xml:space="preserve">
<value>K: Milyen alternatívák vannak, ha a számítógépem nem támogatott?</value>
</data>
<data name="faq_q7" xml:space="preserve">
<value>K: Ki a fejlesztő?</value>
</data>
<data name="ciuView_lblPtAns" xml:space="preserve">
<value>1. Az eszközön a Windows 10 jelenleg támogatott verziója fut. Ha az eszközön jelenleg nem a Windows 10 támogatott verziója fut, frissítsen a Windows 10 támogatott verziójára.</value>
</data>
<data name="ciuView_lblPtAns2" xml:space="preserve">
<value>2. Az eszköz megfelel</value>
</data>
<data name="ciuView_lblPtAns3" xml:space="preserve">
<value>1. Töltse le és futtassa a</value>
</data>
<data name="ciuView_lblPtAns4" xml:space="preserve">
<value>2. Válassza ki a következő Windows Update parancsikont, majd válassza a Frissítések keresése gombot:</value>
</data>
<data name="ciuView_lblPtAns5" xml:space="preserve">
<value>3. Eszköze nem felel meg a Windows 11 hivatalos követelményeinek? Kompatibilitási javítás alkalmazásával engedélyezheti a helyben történő frissítést a Windows Update szolgáltatáson keresztül.</value>
</data>
<data name="ciuView_lblPtHdr" xml:space="preserve">
<value>Egy meglévő Windows 10-es eszköz frissíthető Windows 11-re, ha megfelel az alábbi feltételeknek:</value>
</data>
<data name="ciuView_lblPtHdr2" xml:space="preserve">
<value>Ha meg szeretné tudni, hogy egy Windows 10-es eszköz jogosult-e a Windows 11-re való frissítésre, kövesse az alábbi lehetőségek egyikét:</value>
</data>
<data name="ciuView_linkPtAns2" xml:space="preserve">
<value>a Windows 11 futtatásához szükséges minimális hardverspecifikációk.</value>
</data>
<data name="ciuView_linkPtAns3" xml:space="preserve">
<value>WhyNotWin11 alkalmazás annak megerősítéséhez, hogy a készülék megfelel a minimális rendszerkövetelményeknek</value>
</data>
<data name="msg_InstallReady" xml:space="preserve">
<value>A Windows 11 telepítése most folytatható. Kérjük, kövesse a beállítási ablakban található utasításokat.</value>
<comment>Install</comment>
</data>
<data name="_debugInstallReady" xml:space="preserve">
<value>Készen áll a Windows 11 telepítésére nem támogatott hardverre! Hagyja figyelmen kívül a' Windows Server ' parancsot; minden készen áll!</value>
<comment>Install</comment>
</data>
<data name="_debugInstallRunElevated" xml:space="preserve">
<value>A telepítési folyamat indítása emelt jogosultságokkal...</value>
<comment>Install</comment>
</data>
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
<value>Hoppá! Valami elromlott:</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMounting" xml:space="preserve">
<value>Az ISO csatlakoztatása... Kitartás!</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMountingFailed" xml:space="preserve">
<value>Nem sikerült csatlakoztatni az ISO-t. Kérjük, próbálja újra.</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMountingSuccess" xml:space="preserve">
<value>ISO sikeresen csatlakoztatva! Lássunk hozzá a Windows 11 elkészítéséhez!</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusRunning" xml:space="preserve">
<value>Majdnem kész! Előkészítjük a beállítást...</value>
<comment>Install</comment>
</data>
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
<value>A telepítőfájl nem található a(z)</value>
<comment>Mounting</comment>
</data>
<data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Kiválasztás a számítógépről</value>
</data>
<data name="msgClosing" xml:space="preserve">
<value>Thank you for using my app!\n\nI developed this application in my free time to help you upgrade from Windows 10 to Windows 11 – even on PCs that, according to Microsoft's hardware requirements, would normally not be supported.\n\nMy app helps you avoid purchasing a new computer and actively contributes to reducing unnecessary electronic waste.\n\nNormally, I do not charge anything for my projects – neither for development nor for support.\nHowever, since this app is significantly more comprehensive, offers more features, and requires more support, I would be grateful if you would consider making a small voluntary donation, if you are able to.\n\nOf course, only if you want to and can afford it.\n\nWould you like to donate on PayPal now?</value>
</data>
</root>
+3
View File
@@ -279,4 +279,7 @@
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Seleziona dal computer</value> <value>Seleziona dal computer</value>
</data> </data>
<data name="msgClosing" xml:space="preserve">
<value />
</data>
</root> </root>
+17 -10
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
@@ -148,7 +148,7 @@
<value>ISO に互換性パッチを適用する (クリーンインストール)</value> <value>ISO に互換性パッチを適用する (クリーンインストール)</value>
</data> </data>
<data name="ctl_linkCiuv" xml:space="preserve"> <data name="ctl_linkCiuv" xml:space="preserve">
<value>Windows 11 にアップグレードしますか?</value> <value>Windows 11 にアップグレード可能ですか?</value>
</data> </data>
<data name="ctl_linkVote" xml:space="preserve"> <data name="ctl_linkVote" xml:space="preserve">
<value>アップグレードは成功しましたか?</value> <value>アップグレードは成功しましたか?</value>
@@ -214,19 +214,19 @@
<value>Q: 開発者は誰ですか?</value> <value>Q: 開発者は誰ですか?</value>
</data> </data>
<data name="ciuView_lblPtAns" xml:space="preserve"> <data name="ciuView_lblPtAns" xml:space="preserve">
<value>1. デバイスは現在サポートされているバージョンの Windows 10 を実行しています。デバイスが現在サポートされている Windows 10 を実行していない場合は、サポートされている Windows 10 にアップグレードしてください。</value> <value>1. デバイスで現在サポートされているバージョンの Windows 10 を実行している状態である。サポートしていない Windows 10 を実行している場合は、サポートされている Windows 10 にアップグレードしてください。</value>
</data> </data>
<data name="ciuView_lblPtAns2" xml:space="preserve"> <data name="ciuView_lblPtAns2" xml:space="preserve">
<value>2. このデバイス</value> <value>2. デバイスで</value>
</data> </data>
<data name="ciuView_lblPtAns3" xml:space="preserve"> <data name="ciuView_lblPtAns3" xml:space="preserve">
<value>1. ダウンロードして実行する</value> <value>1. ダウンロードで確認</value>
</data> </data>
<data name="ciuView_lblPtAns4" xml:space="preserve"> <data name="ciuView_lblPtAns4" xml:space="preserve">
<value>2. 次の Windows Update ショートカットを選択して「更新プログラムの確認」ボタンを選択します:</value> <value>2. 次に Windows Update を選択後に「更新プログラムのチェック」ボタンを選択します:</value>
</data> </data>
<data name="ciuView_lblPtAns5" xml:space="preserve"> <data name="ciuView_lblPtAns5" xml:space="preserve">
<value>3. 使用しているデバイスは Windows 11 の公式要件を満たしていませんか?互換性パッチを適用して、Windows Update 経由でのインプレース アップグレードを有効化することができます。</value> <value>3. 使用しているデバイスは Windows 11 の要件を満たしていませんか?互換性パッチを適用して、Windows Update 経由でのインプレース アップグレードを有効化することができます。</value>
</data> </data>
<data name="ciuView_lblPtHdr" xml:space="preserve"> <data name="ciuView_lblPtHdr" xml:space="preserve">
<value>既存の Windows 10 デバイスは、次の条件を満たしている場合に Windows 11 にアップグレードできます:</value> <value>既存の Windows 10 デバイスは、次の条件を満たしている場合に Windows 11 にアップグレードできます:</value>
@@ -235,10 +235,10 @@
<value>Windows 10 デバイスが Windows 11 にアップグレードできるかどうかを確認するには、次のいずれかのオプションに従ってください。</value> <value>Windows 10 デバイスが Windows 11 にアップグレードできるかどうかを確認するには、次のいずれかのオプションに従ってください。</value>
</data> </data>
<data name="ciuView_linkPtAns2" xml:space="preserve"> <data name="ciuView_linkPtAns2" xml:space="preserve">
<value>Windows 11 を実行するための最小ハードウェア仕様である。</value> <value>Windows 11 を実行するための最小ハードウェア仕様を確認する。</value>
</data> </data>
<data name="ciuView_linkPtAns3" xml:space="preserve"> <data name="ciuView_linkPtAns3" xml:space="preserve">
<value>WhyNotWin11 アプリは、デバイスが最小のシステム要件を満たしているかどうかを確認できます</value> <value>WhyNotWin11 で最小のシステム要件を満たしているか確認できます。</value>
</data> </data>
<data name="msg_InstallReady" xml:space="preserve"> <data name="msg_InstallReady" xml:space="preserve">
<value>Windows 11 のインストールを続行できます。セットアップ ウィンドウの指示に従ってください。</value> <value>Windows 11 のインストールを続行できます。セットアップ ウィンドウの指示に従ってください。</value>
@@ -270,9 +270,16 @@
</data> </data>
<data name="_debugStatusRunning" xml:space="preserve"> <data name="_debugStatusRunning" xml:space="preserve">
<value>もうすぐです!セットアップを準備しています...</value> <value>もうすぐです!セットアップを準備しています...</value>
<comment>インストール</comment>
</data> </data>
<data name="_debugStatusSetupFileNotFound" xml:space="preserve"> <data name="_debugStatusSetupFileNotFound" xml:space="preserve">
<value>セットアップファイルが見つかりません</value> <value>セットアップファイルが見つかりません</value>
<comment>マウント中</comment> <comment>マウント中</comment>
</data> </data>
</root> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>コンピューターから ISO を選択</value>
</data>
<data name="msgClosing" xml:space="preserve">
<value>私が開発したアプリをご利用いただきありがとうございます!\n\n私は Windows 10 から Windows 11 へのアップグレードを支援するために空き時間を利用してこのアプリを開発しました。Microsoft のハードウェア要件では通常サポートされない PC でもアップグレードできます。\n\nこのアプリは、新しいコンピューターの購入を回避や不要な電子機器廃棄物の削減に積極的に貢献します。\n\n私は開発費やサポート費用、プロジェクトに対して料金を一切請求しません。\nただし、このアプリは非常に包括的で多くの機能を提供し、より多くの機能を提供するためにより多くのサポートを必要とするため、可能であれば任意の寄付を検討していただければ幸いです。少額でも構いません。\n\nもちろんですが、寄付をしたいという希望があることと余裕がある場合に限ります。\n\n今すぐ PayPal で寄付しますか?</value>
</data>
</root>
+284 -281
View File
@@ -1,282 +1,285 @@
<?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>
<data name="msgClosing" xml:space="preserve">
<value />
</data>
</root> </root>
+3
View File
@@ -279,4 +279,7 @@
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Select from computer</value> <value>Select from computer</value>
</data> </data>
<data name="msgClosing" xml:space="preserve">
<value>Thank you for using my app!\n\nI developed this application in my free time to help you upgrade from Windows 10 to Windows 11 – even on PCs that, according to Microsoft's hardware requirements, would normally not be supported.\n\nMy app helps you avoid purchasing a new computer and actively contributes to reducing unnecessary electronic waste.\n\nNormally, I do not charge anything for my projects – neither for development nor for support.\nHowever, since this app is significantly more comprehensive, offers more features, and requires more support, I would be grateful if you would consider making a small voluntary donation, if you are able to.\n\nOf course, only if you want to and can afford it.\n\nWould you like to donate on PayPal now?</value>
</data>
</root> </root>
+4 -1
View File
@@ -279,4 +279,7 @@
<data name="ctl_linkSelectComputer" xml:space="preserve"> <data name="ctl_linkSelectComputer" xml:space="preserve">
<value>Välj från datorn</value> <value>Välj från datorn</value>
</data> </data>
</root> <data name="msgClosing" xml:space="preserve">
<value />
</data>
</root>
+3
View File
@@ -275,4 +275,7 @@
<value>Kurulum dosyası bulunamadı</value> <value>Kurulum dosyası bulunamadı</value>
<comment>Yükle</comment> <comment>Yükle</comment>
</data> </data>
<data name="msgClosing" xml:space="preserve">
<value />
</data>
</root> </root>
+285
View File
@@ -0,0 +1,285 @@
<?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>
<data name="compPatch_debugCancel" xml:space="preserve">
<value>用户取消安装绕过补丁</value>
</data>
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
<value>用户尝试选择了一个不可弹出的设备。</value>
</data>
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
<value>未选择 USB 设备来安装绕过补丁。</value>
</data>
<data name="compPatch_msgFailedEx" xml:space="preserve">
<value>安装绕过补丁失败:</value>
</data>
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
<value>已选位置不是一个可弹出的设备。请选择一个正确的 USB 设备。</value>
</data>
<data name="compPatch_msgSelectDrive" xml:space="preserve">
<value>请选择包含 Windows 11 安装文件的 USB 设备。\n该功能用于添加兼容性补丁来绕过某些强制要求。\n兼容由任何工具(包括 Rufus)准备的设备。请确保设备已准备好!</value>
</data>
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
<value>即将在 USB 设备中安装兼容性绕过补丁。继续?</value>
</data>
<data name="compPatch_msgSuccess" xml:space="preserve">
<value>绕过补丁已成功安装!</value>
</data>
<data name="ctl_FormTitle" xml:space="preserve">
<value>Flyby11 升级助手</value>
</data>
<data name="ctl_inkCompPatch" xml:space="preserve">
<value>为 ISO 应用兼容性补丁(全新安装)</value>
</data>
<data name="ctl_linkCiuv" xml:space="preserve">
<value>我的设备支持升级到 Windows 11 吗?</value>
</data>
<data name="ctl_linkVote" xml:space="preserve">
<value>升级对您来说有用吗?</value>
</data>
<data name="ctl_statusLabel" xml:space="preserve">
<value>拖入 Windows 11 ISO 文件来安装补丁,以支持安装进不支持的硬件(直接升级)。</value>
</data>
<data name="faq_a1" xml:space="preserve">
<value>答:您可从微软官方网站或 Fido 下载器下载最新版 ISO</value>
</data>
<data name="faq_a2" xml:space="preserve">
<value>答:如果您因本程序成功安装了 Windows 11,并让您省了点钱。可以随意在这里留下点小小的感谢!</value>
</data>
<data name="faq_a2Link" xml:space="preserve">
<value>点击这里捐赠并表达您的支持。</value>
</data>
<data name="faq_a3" xml:space="preserve">
<value>答:一旦 ISO 文件被挂载,安装过程将在后台运行。Windows 安装程序会启动,并引导您完成安装 Windows 11 所需的各项步骤。</value>
</data>
<data name="faq_a4" xml:space="preserve">
<value>答:请检查错误信息,并将其报告到 GitHub 上。</value>
</data>
<data name="faq_a5" xml:space="preserve">
<value>答:是的,微软确实留下了一个后门。此方法利用了 Windows 11 安装过程中的一个功能,该功能使用了 Windows Server 版本的安装程序。与常规的 Windows 11 安装程序不同,这个版本会跳过大多数硬件兼容性检查。</value>
</data>
<data name="faq_a6" xml:space="preserve">
<value>答:根据微软的说法,你应该扔掉你的电脑。但我建议你在电脑上安装 Linux,远离 Windows。</value>
</data>
<data name="faq_a7" xml:space="preserve">
<value>答:开发者是 Belim,也被称为 Builtbybel,他为 Windows 社区贡献了大量代码。</value>
</data>
<data name="faq_a7Link" xml:space="preserve">
<value>点击此处了解更多关于该开发者工作的信息。</value>
</data>
<data name="faq_downloadFido" xml:space="preserve">
<value>通过 Fido 下载(推荐)</value>
</data>
<data name="faq_downloadMS" xml:space="preserve">
<value>微软官网</value>
</data>
<data name="faq_header" xml:space="preserve">
<value>常见问题解答</value>
</data>
<data name="faq_q1" xml:space="preserve">
<value>问:我在哪里可以下载最新的 Windows 11 ISO 文件?</value>
</data>
<data name="faq_q2" xml:space="preserve">
<value>问:如何支持开发者?</value>
</data>
<data name="faq_q3" xml:space="preserve">
<value>问:挂载 ISO 文件后,安装过程是如何进行的?</value>
</data>
<data name="faq_q4" xml:space="preserve">
<value>问:如果在安装过程中遇到问题怎么办?</value>
</data>
<data name="faq_q5" xml:space="preserve">
<value>问:使用这种方式是否合法?</value>
</data>
<data name="faq_q6" xml:space="preserve">
<value>问:如果我的电脑不受支持,有哪些替代方案?</value>
</data>
<data name="faq_q7" xml:space="preserve">
<value>问:开发者是谁?</value>
</data>
<data name="ciuView_lblPtAns" xml:space="preserve">
<value>1. 设备正在运行受支持版本的 Windows 10。若设备当前未运行受支持的 Windows 10 版本,则请升级到受支持的 Windows 10 版本。</value>
</data>
<data name="ciuView_lblPtAns2" xml:space="preserve">
<value>2. 该设备符合</value>
</data>
<data name="ciuView_lblPtAns3" xml:space="preserve">
<value>1. 下载并运行</value>
</data>
<data name="ciuView_lblPtAns4" xml:space="preserve">
<value>2. 单击下方 Windows 更新按钮,然后单击检查更新按钮:</value>
</data>
<data name="ciuView_lblPtAns5" xml:space="preserve">
<value>3. 您的设备不支持 Windows 11 官方安装流程?您可安装兼容补丁来启用 Windows 更新中的内置升级</value>
</data>
<data name="ciuView_lblPtHdr" xml:space="preserve">
<value>若满足以下条件,当前运行 Windows 10 的设备可直接升级到 Windows11:</value>
</data>
<data name="ciuView_lblPtHdr2" xml:space="preserve">
<value>要查看 Windows 10 设备是否符合升级到 Windows 11 的条件,请按照以下其中一个选项来检查:</value>
</data>
<data name="ciuView_linkPtAns2" xml:space="preserve">
<value>运行 Windows 11 的最低硬件规格要求。</value>
</data>
<data name="ciuView_linkPtAns3" xml:space="preserve">
<value>WhyNotWin11 应用来确认您的设备是否符合最低硬件规格要求</value>
</data>
<data name="msg_InstallReady" xml:space="preserve">
<value>现在可以继续 Windows 11 的安装。请按照安装窗口中的说明进行操作。</value>
<comment>Install</comment>
</data>
<data name="_debugInstallReady" xml:space="preserve">
<value>您已准备好在不受支持的设备中安装 Windows 11!请忽略 'Windows Server' 提示;一切已准备就绪。</value>
<comment>Install</comment>
</data>
<data name="_debugInstallRunElevated" xml:space="preserve">
<value>正在以管理员权限启动安装程序…</value>
<comment>Install</comment>
</data>
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
<value>啊噢!发生错误:</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMounting" xml:space="preserve">
<value>正在挂载 ISO… 请稍后!</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMountingFailed" xml:space="preserve">
<value>无法挂载 ISO。请重试。</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusMountingSuccess" xml:space="preserve">
<value>已成功挂载 ISO!让我们准备好安装 Windows 11 吧!</value>
<comment>Mounting</comment>
</data>
<data name="_debugStatusRunning" xml:space="preserve">
<value>马上就完成了!我们正在完成安装中…</value>
<comment>Install</comment>
</data>
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
<value>未在此处找到安装文件:</value>
<comment>Mounting</comment>
</data>
<data name="ctl_linkSelectComputer" xml:space="preserve">
<value>从计算机中选择</value>
</data>
<data name="msgClosing" xml:space="preserve">
<value />
</data>
</root>
+45
View File
@@ -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;
}
}
}
}
+52 -69
View File
@@ -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,19 +142,17 @@
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";
this.ShowIcon = false; this.ShowIcon = false;
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.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
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 +161,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;
} }
} }
+273 -55
View File
@@ -1,7 +1,14 @@
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.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using Views; using Views;
@@ -10,45 +17,203 @@ 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; }
// Import the external function to check for POPCNT and SSE4.2 features
[DllImport("CpuCheckNative.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool HasPopcnt();
public MainForm() public MainForm()
{ {
InitializeComponent(); InitializeComponent();
logger = new Logger(this);
_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);
// Check if the DLL exists before performing the compatibility check
if (File.Exists("CpuCheckNative.dll"))
{
// Perform system compatibility check if the DLL is found
bool hasPopcnt = CheckHasPopcnt(); // Check if the CPU supports POPCNT
bool hasSse42 = hasPopcnt; // If POPCNT is supported, SSE4.2 is likely supported as well
new CompatibilityForm(hasPopcnt, hasSse42).ShowDialog();
}
else
{
MessageBox.Show(
"A preliminary compatibility check can be performed by downloading the 'CpuCheckNative.dll' from GitHub " +
"and placing it in the app folder.\nYou'll then get detailed feedback about your system's chances for a successful upgrade.",
"Flyby11 - Heads-up from Clippy",
MessageBoxButtons.OK,
MessageBoxIcon.Warning
);
}
}
// Checks if POPCNT and SSE4.2 are supported by the CPU using the external DLL function
private bool CheckHasPopcnt()
{
try
{
return HasPopcnt(); // Call the external function to check for POPCNT and SSE4.2
}
catch (Exception ex)
{
UpdateStatusLabel($"Error checking system compatibility: {ex.Message}");
return false;
}
}
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) Customize Windows 11 with Crapfixer"); // "Crapfixer 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 +223,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 CFixer Repository
Process.Start("https://github.com/builtbybel/Crapfixer/");
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 +297,72 @@ 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);
} }
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
string raw = Locales.Strings.msgClosing;
string message = Regex.Unescape(raw);
DialogResult result = MessageBox.Show(
message,
"Support @Belim",
MessageBoxButtons.YesNo,
MessageBoxIcon.Information
);
if (result == DialogResult.Yes)
{
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG",
UseShellExecute = true
});
}
}
} }
} }
+4 -4
View File
@@ -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.4.405")]
[assembly: AssemblyFileVersion("2025.2.20.0")] [assembly: AssemblyFileVersion("2.4.405")]
+3 -3
View File
@@ -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;
} }
+8 -5
View File
@@ -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>
+35 -1
View File
@@ -13,6 +13,40 @@ 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.**
## 📚 FAQ
<details>
<summary>❓ Will my unsupported device still get Windows 11 updates?</summary>
**Short answer:** Yes — for now. But there are no guarantees.
Microsoft says: _"These devices aren't guaranteed to receive updates."_
📄 [Source – Microsoft Support](https://support.microsoft.com/en-us/windows/windows-11-on-devices-that-don-t-meet-minimum-system-requirements-0b2dc4a2-5933-4ad4-9c09-ef0a331518f1)
In reality, most unsupported devices **still receive monthly security and quality updates**, just like supported ones.
However:
- 🔄 You likely **won’t get major version/feature updates** (like 24H2) unless you install them manually.
- ⚙️ Future updates might depend on newer hardware features and fail to install.
- 🛡️ Regular updates **work for now**, but Microsoft can change that anytime.
- 🚫 There’s always a risk of updates being blocked in the future.
**Bottom line:** Normal updates work today — but you’re technically on your own.
If you’re using unsupported hardware, you probably already know the deal. 😎
</details>
-1
View File
@@ -1 +0,0 @@
irm christitus.com/win | iex
-16
View File
@@ -1,16 +0,0 @@
{
"PlugID": "Clear Icon Cache",
"PlugInfo": "This feature clears the icon cache in Windows to resolve issues with icons displaying incorrectly.",
"PlugCheck": [],
"PlugCategory": "Tweaks (Plugins)",
"PlugDo": [
"ie4uinit.exe -show",
"taskkill /IM explorer.exe /F",
"DEL /A /Q \"%localappdata%\\IconCache.db\"",
"DEL /A /F /Q \"%localappdata%\\Microsoft\\Windows\\Explorer\\iconcache*\"",
"Start explorer.exe"
],
"PlugUndo": [
"powershell -Command \"Write-Output 'There is no undo operation for clearing the icon cache.'\""
]
}
-37
View File
@@ -1,37 +0,0 @@
# Run as Admin
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Warning "You need to run this script as an Administrator!"
exit
}
# Load Windows Forms assembly for MessageBox
Add-Type -AssemblyName System.Windows.Forms
# Define the restore point description and type
$description = "Flyby11 Restore Point"
$restorePointType = 12 # MODIFY_SETTINGS = 12
# Function to create restore point with progress reporting
function Create-RestorePoint {
Write-Host "Starting to create restore point..." -ForegroundColor Yellow
# Simulate progress
for ($i = 0; $i -le 100; $i += 10) {
Write-Progress -Activity "Creating Restore Point" -Status "$i% Complete" -PercentComplete $i
Start-Sleep -Milliseconds 300 # Simulate some work being done
}
# WMI query to create the restore point
$restorePoint = Get-WmiObject -List Win32_SystemRestore | ForEach-Object {
$_.CreateRestorePoint($description, $restorePointType, 100)
}
Write-Host "Restore point created successfully." -ForegroundColor Green
# Show completion message
[System.Windows.Forms.MessageBox]::Show("Restore point has been created successfully!", "Completion", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
}
# Execute the restore point creation
Create-RestorePoint
-20
View File
@@ -1,20 +0,0 @@
{
"PlugID": "Hide Hidden File Extensions",
"PlugInfo": "This feature shows or hides hidden file extensions in Windows Explorer.",
"PlugCategory": "Tweaks (Plugins)",
"PlugCheck": [
"reg query HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt"
],
"PlugDo": [
"reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt /t REG_DWORD /d 1 /f",
"reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v ShowSuperHidden /t REG_DWORD /d 0 /f",
"taskkill /f /im explorer.exe",
"start explorer.exe"
],
"PlugUndo": [
"reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt /t REG_DWORD /d 0 /f",
"reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v ShowSuperHidden /t REG_DWORD /d 1 /f",
"taskkill /f /im explorer.exe",
"start explorer.exe"
]
}
-172
View File
@@ -1,172 +0,0 @@
# Description:
# This script removes unwanted Apps that come with Windows. If you do not want
# to remove certain Apps comment out the corresponding lines below.
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\New-FolderForced.psm1
Write-Output "Elevating privileges for this process"
do {} until (Elevate-Privileges SeTakeOwnershipPrivilege)
Write-Output "Uninstalling default apps"
$apps = @(
# default Windows 10 apps
"Microsoft.549981C3F5F10" #Cortana
"Microsoft.3DBuilder"
"Microsoft.Appconnector"
"Microsoft.BingFinance"
"Microsoft.BingNews"
"Microsoft.BingSports"
"Microsoft.BingTranslator"
"Microsoft.BingWeather"
#"Microsoft.FreshPaint"
"Microsoft.GamingServices"
"Microsoft.Microsoft3DViewer"
"Microsoft.MicrosoftOfficeHub"
"Microsoft.MicrosoftPowerBIForWindows"
"Microsoft.MicrosoftSolitaireCollection"
#"Microsoft.MicrosoftStickyNotes"
"Microsoft.MinecraftUWP"
"Microsoft.NetworkSpeedTest"
"Microsoft.Office.OneNote"
"Microsoft.People"
"Microsoft.Print3D"
"Microsoft.SkypeApp"
"Microsoft.Wallet"
#"Microsoft.Windows.Photos"
"Microsoft.WindowsAlarms"
#"Microsoft.WindowsCalculator"
"Microsoft.WindowsCamera"
"microsoft.windowscommunicationsapps"
"Microsoft.WindowsMaps"
"Microsoft.WindowsPhone"
"Microsoft.WindowsSoundRecorder"
#"Microsoft.WindowsStore" # can't be re-installed
"Microsoft.Xbox.TCUI"
"Microsoft.XboxApp"
"Microsoft.XboxGameOverlay"
"Microsoft.XboxGamingOverlay"
"Microsoft.XboxSpeechToTextOverlay"
"Microsoft.YourPhone"
"Microsoft.ZuneMusic"
"Microsoft.ZuneVideo"
"Microsoft.SkypeApp"
"Clipchamp.Clipchamp"
# Threshold 2 apps
"Microsoft.CommsPhone"
"Microsoft.ConnectivityStore"
"Microsoft.GetHelp"
"Microsoft.Getstarted"
"Microsoft.Messaging"
"Microsoft.Office.Sway"
"Microsoft.OneConnect"
"Microsoft.WindowsFeedbackHub"
# Creators Update apps
"Microsoft.Microsoft3DViewer"
#"Microsoft.MSPaint"
#Redstone apps
"Microsoft.BingFoodAndDrink"
"Microsoft.BingHealthAndFitness"
"Microsoft.BingTravel"
"Microsoft.WindowsReadingList"
# Redstone 5 apps
"Microsoft.MixedReality.Portal"
"Microsoft.ScreenSketch"
"Microsoft.XboxGamingOverlay"
# non-Microsoft
"2FE3CB00.PicsArt-PhotoStudio"
"46928bounde.EclipseManager"
"4DF9E0F8.Netflix"
"613EBCEA.PolarrPhotoEditorAcademicEdition"
"6Wunderkinder.Wunderlist"
"7EE7776C.LinkedInforWindows"
"89006A2E.AutodeskSketchBook"
"9E2F88E3.Twitter"
"A278AB0D.DisneyMagicKingdoms"
"A278AB0D.MarchofEmpires"
"ActiproSoftwareLLC.562882FEEB491" # next one is for the Code Writer from Actipro Software LLC
"CAF9E577.Plex"
"ClearChannelRadioDigital.iHeartRadio"
"D52A8D61.FarmVille2CountryEscape"
"D5EA27B7.Duolingo-LearnLanguagesforFree"
"DB6EA5DB.CyberLinkMediaSuiteEssentials"
"DolbyLaboratories.DolbyAccess"
"DolbyLaboratories.DolbyAccess"
"Drawboard.DrawboardPDF"
"Facebook.Facebook"
"Fitbit.FitbitCoach"
"Flipboard.Flipboard"
"GAMELOFTSA.Asphalt8Airborne"
"KeeperSecurityInc.Keeper"
"NORDCURRENT.COOKINGFEVER"
"PandoraMediaInc.29680B314EFC2"
"Playtika.CaesarsSlotsFreeCasino"
"ShazamEntertainmentLtd.Shazam"
"SlingTVLLC.SlingTV"
"SpotifyAB.SpotifyMusic"
"ThumbmunkeysLtd.PhototasticCollage"
"TuneIn.TuneInRadio"
"WinZipComputing.WinZipUniversal"
"XINGAG.XING"
"flaregamesGmbH.RoyalRevolt2"
"king.com.*"
"king.com.BubbleWitch3Saga"
"king.com.CandyCrushSaga"
"king.com.CandyCrushSodaSaga"
"BytedancePte.Ltd.TikTok"
"Facebook.InstagramBeta"
# apps which cannot be removed using Remove-AppxPackage
#"Microsoft.BioEnrollment"
#"Microsoft.MicrosoftEdge"
#"Microsoft.Windows.Cortana"
#"Microsoft.WindowsFeedback"
#"Microsoft.XboxGameCallableUI"
#"Microsoft.XboxIdentityProvider"
#"Windows.ContactSupport"
)
$appxprovisionedpackage = Get-AppxProvisionedPackage -Online
foreach ($app in $apps) {
Write-Output "Trying to remove $app"
Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage -AllUsers
($appxprovisionedpackage).Where( {$_.DisplayName -EQ $app}) |
Remove-AppxProvisionedPackage -Online
} Write-Host "Clippy has completed the process and removed all possible apps."
# Prevents Apps from re-installing
$cdm = @(
"ContentDeliveryAllowed"
"FeatureManagementEnabled"
"OemPreInstalledAppsEnabled"
"PreInstalledAppsEnabled"
"PreInstalledAppsEverEnabled"
"SilentInstalledAppsEnabled"
"SubscribedContent-314559Enabled"
"SubscribedContent-338387Enabled"
"SubscribedContent-338388Enabled"
"SubscribedContent-338389Enabled"
"SubscribedContent-338393Enabled"
"SubscribedContentEnabled"
"SystemPaneSuggestionsEnabled"
)
New-FolderForced -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"
foreach ($key in $cdm) {
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" $key 0
}
New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore" "AutoDownload" 2
# Prevents "Suggested Applications" returning
New-FolderForced -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableWindowsConsumerFeatures" 1
-31
View File
@@ -1,31 +0,0 @@
# Get all installed Windows apps for all users
$allApps = Get-AppxPackage -AllUsers
# Counter for tracking progress
$totalApps = $allApps.Count
$currentAppIndex = 1
$reinstalledCount = 0
# Loop through each app and reinstall
foreach ($app in $allApps) {
# Display current status
Write-Host "[$currentAppIndex / $totalApps] Reinstalling $($app.Name)..." -ForegroundColor Yellow
# Try to reinstall the app
try {
Add-AppxPackage -Register "$($app.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode -ErrorAction Stop
Write-Host "[$currentAppIndex / $totalApps] $($app.Name) reinstalled successfully." -ForegroundColor Green
$reinstalledCount++
} catch {
Write-Host "[$currentAppIndex / $totalApps] Error occurred while reinstalling $($app.Name): $_" -ForegroundColor Red
}
# Increment the counter
$currentAppIndex++
}
# Display final status
if ($reinstalledCount -eq $totalApps) {
Write-Host "All apps reinstalled successfully." -ForegroundColor Green
Write-Host "Flyby11 has reinstalled everything possible." -ForegroundColor Cyan
}
-18
View File
@@ -1,18 +0,0 @@
# Function to show a message box
function Show-MessageBox {
param (
[string]$message,
[string]$title = "Information"
)
Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show($message, $title)
}
# Stop Windows Explorer
Stop-Process -Name explorer -Force
# Start Windows Explorer
Start-Process explorer
# Show message box
Show-MessageBox -message "Windows Explorer has been restarted successfully." -title "Flyby11"
-60
View File
@@ -1,60 +0,0 @@
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\force-mkdir.psm1
Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1
Write-Output "Kill OneDrive process"
taskkill.exe /F /IM "OneDrive.exe"
taskkill.exe /F /IM "explorer.exe"
Write-Output "Remove OneDrive"
if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") {
& "$env:systemroot\System32\OneDriveSetup.exe" /uninstall
}
if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") {
& "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall
}
Write-Output "Removing OneDrive leftovers"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp"
# check if directory is empty before removing:
If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) {
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive"
}
Write-Output "Disable OneDrive via Group Policies"
force-mkdir "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive"
Set-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1
Write-Output "Remove Onedrive from explorer sidebar"
New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR"
mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
Set-ItemProperty "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
Set-ItemProperty "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
Remove-PSDrive "HKCR"
# Thank you Matthew Israelsson
Write-Output "Removing run hook for new users"
reg load "hku\Default" "C:\Users\Default\NTUSER.DAT"
reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
reg unload "hku\Default"
Write-Output "Removing startmenu entry"
Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"
Write-Output "Removing scheduled task"
Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
Write-Output "Restarting explorer"
Start-Process "explorer.exe"
Write-Output "Waiting for explorer to complete loading"
Start-Sleep 10
Write-Output "Removing additional OneDrive leftovers"
foreach ($item in (Get-ChildItem "$env:WinDir\WinSxS\*onedrive*")) {
Takeown-Folder $item.FullName
Remove-Item -Recurse -Force $item.FullName
}
Write-Output "Flyby11 can confirm the uninstallation of the OneDrive app."
-12
View File
@@ -1,12 +0,0 @@
{
"PlugID": "Windows Old Remover",
"PlugInfo": "The Windows Old Remover plugin allows users to easily remove the 'Windows.old' folder, which contains files from a previous Windows installation. After upgrading to a new version of Windows, the 'Windows.old' folder may occupy significant disk space. This plugin utilizes the DISM command to safely delete this folder, freeing up valuable storage on your system. Please note that once this folder is deleted, you will no longer be able to revert to the previous Windows version through the Recovery options.\n\n**Error Handling**: If you encounter 'Error 1168' during the removal process, it means the 'Windows.old' folder has already been deleted or is not available for rollback. Ensure you have backups before proceeding!",
"PlugCheck": [],
"PlugCategory": "System (Plugins)",
"PlugDo": [
"cmd.exe /c DISM /Online /Remove-OSUninstall"
],
"PlugUndo": [
"powershell -Command \"Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('No undo is available for this deletion. To restore files, use a backup solution.', 'Info', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning)\""
]
}
-13
View File
@@ -1,13 +0,0 @@
{
"PlugID": "Windows Rollback Timer",
"PlugInfo": "This plugin checks and sets the uninstall window for reverting to a previous Windows version after an upgrade. The time frame can be configured up to 60 days. After a Windows upgrade (e.g., via Windows Update to version 1803), a copy of the previous Windows version is stored in the 'Windows.old' folder. This allows users to return to the prior version through the 'Recovery' option under 'Update & Security' in Windows Settings. By default, this rollback option is available for only 10 days, provided the 'Windows.old' folder hasn’t been deleted. However, this time frame can be extended up to 60 days using this plugin. \n\n**Error Handling**: If 'Error 1168' appears when attempting to set the rollback period, this indicates that the 'Windows.old' folder has been deleted, making a rollback impossible.",
"PlugCheck": [],
"PlugCategory": "System (Plugins)",
"PlugDo": [
"cmd.exe /c DISM /Online /Get-OSUninstallWindow",
"cmd.exe /c DISM /Online /Set-OSUninstallWindow /Value:60"
],
"PlugUndo": [
"powershell -Command \"Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('No undo is available for this rollback time setting. To change it, please use DISM with a new value.', 'Info', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)\""
]
}
-12
View File
@@ -1,12 +0,0 @@
{
"ChrisTitusApp.ps1": "Chris Titus Tech's Windows Utility - Install Programs, Tweaks, Fixes, and Updates. Dev: https://github.com/ChrisTitusTech/winutil",
"Restart Explorer.ps1": "Restarts the Windows Explorer process to refresh the desktop and taskbar.",
"Create Restore Point.ps1": "This script creates a system restore point to save your current system state.",
"Uninstall OneDrive.ps1": "This script completely removes OneDrive from your Windows system.",
"Resore all built-in apps.ps1": "This will restore all preinstalled inbox apps of Microsoft.",
"Remove default apps.ps1": "This script will remove all preinstalled inbox apps using PowerShell.",
"File Extensions Visibility.json": "This plugin shows or hides hidden file extensions in Windows Explorer.",
"Clear Icon Cache.json": "This plugin clears the icon cache in Windows to resolve issues with icons displaying incorrectly.",
"Windows Rollback Timer.json": "This plugin adjusts the time window available to revert to a previous version of Windows after an upgrade.",
"Windows Old Remover.json": "This plugin will remove the ability to roll back a PC to a previous installation of Windows."
}