Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c7dbaa938 | ||
|
|
8f57b0e66e | ||
|
|
0eda51cd73 | ||
|
|
49f8b087cd | ||
|
|
dee378192c | ||
|
|
967f674c4c | ||
|
|
feecd81887 | ||
|
|
30778a3533 | ||
|
|
5dedf5183f | ||
|
|
8deda19617 | ||
|
|
d0e739e2cf | ||
|
|
b65392fbc7 | ||
|
|
bc6049fc39 | ||
|
|
3059c290c4 | ||
|
|
43f3299e03 | ||
|
|
415c009e8a | ||
|
|
bf026d3d81 | ||
|
|
acc7c036e9 | ||
|
|
4dca01dc99 | ||
|
|
8f55e160ba | ||
|
|
dca537457a | ||
|
|
964ed87f76 | ||
|
|
d91cc98021 | ||
|
|
cd535d0840 | ||
|
|
9bd91b4c11 | ||
|
|
0cf681f443 | ||
|
|
b2fe7db07a | ||
|
|
fa324dc48c | ||
|
|
c752d9cb37 | ||
|
|
6f39ffb3bc | ||
|
|
3ae83bda73 | ||
|
|
631bb2e763 | ||
|
|
45cdeab25a | ||
|
|
dafb636635 | ||
|
|
a0e229c792 | ||
|
|
fbcbd8f252 | ||
|
|
0c8b5acaf4 | ||
|
|
bf362cb52f | ||
|
|
46576df1e4 | ||
|
|
d235ddb4f0 | ||
|
|
cc979ca76d | ||
|
|
135aa16d97 | ||
|
|
7f43086d80 | ||
|
|
f02cf945a9 | ||
|
|
d18651c6f3 | ||
|
|
71f5e68343 | ||
|
|
2a5d709e5f | ||
|
|
003d6d177a | ||
|
|
9902f48d47 | ||
|
|
00bfa8ae9a | ||
|
|
e1d9df55d8 | ||
|
|
5f1d4d1d43 | ||
|
|
9896611d65 | ||
|
|
989020214c | ||
|
|
15d1f5ecf8 | ||
|
|
031478ef71 | ||
|
|
07d549ab39 | ||
|
|
14c0348a77 | ||
|
|
347af94a7c | ||
|
|
aba271c936 | ||
|
|
cb9d7a4d67 | ||
|
|
018c787b09 | ||
|
|
90ae8d423d | ||
|
|
e587a86756 | ||
|
|
9bf78793c7 | ||
|
|
1a56cf3432 | ||
|
|
e4b603e79a | ||
|
|
2f63bde9a3 | ||
|
|
6da412f0d8 | ||
|
|
545b2f487a | ||
|
|
9851f46157 | ||
|
|
e7dfdaedec |
No files matched your search
Binary file not shown.
@@ -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>
|
||||
@@ -0,0 +1,20 @@
|
||||
#include "pch.h"
|
||||
#include <intrin.h>
|
||||
|
||||
extern "C" __declspec(dllexport) bool __cdecl HasPopcnt()
|
||||
{
|
||||
int cpuInfo[4] = { 0 };
|
||||
|
||||
// Get CPU info by calling __cpuid, which fills the cpuInfo array with CPU feature flags
|
||||
__cpuid(cpuInfo, 1);
|
||||
|
||||
// Check if the processor supports SSE4.2 (bit 20 of the ECX register)
|
||||
bool hasSSE42 = (cpuInfo[2] & (1 << 20)) != 0;
|
||||
|
||||
// Check if the processor supports POPCNT (bit 23 of the ECX register)
|
||||
bool hasPOPCNT = (cpuInfo[2] & (1 << 23)) != 0;
|
||||
|
||||
// POPCNT is the critical instruction for Windows 11 upgrade compatibility!!
|
||||
// If both SSE4.2 and POPCNT are supported, yeah we can return true; otherwise, false
|
||||
return hasSSE42 && hasPOPCNT;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
|
||||
#include "pch.h"
|
||||
|
||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen
|
||||
// Windows-Headerdateien
|
||||
#include <windows.h>
|
||||
@@ -0,0 +1,5 @@
|
||||
// pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
// Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich.
|
||||
@@ -0,0 +1,13 @@
|
||||
// pch.h: Dies ist eine vorkompilierte Headerdatei.
|
||||
// Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern.
|
||||
// Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen.
|
||||
// Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird.
|
||||
// Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt.
|
||||
|
||||
#ifndef PCH_H
|
||||
#define PCH_H
|
||||
|
||||
// Fügen Sie hier Header hinzu, die vorkompiliert werden sollen.
|
||||
#include "framework.h"
|
||||
|
||||
#endif //PCH_H
|
||||
@@ -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
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.12.35527.113
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "FlybyScript\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{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|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.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
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.11.35327.3
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlybyScript", "FlybyScript\FlybyScript.csproj", "{66DDC36A-9095-4053-941C-8829D44F5F20}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{66DDC36A-9095-4053-941C-8829D44F5F20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{66DDC36A-9095-4053-941C-8829D44F5F20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{66DDC36A-9095-4053-941C-8829D44F5F20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{66DDC36A-9095-4053-941C-8829D44F5F20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {81315C08-1240-44F0-AAEF-36C5A1C885B8}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
</configuration>
|
||||
Generated
+277
@@ -0,0 +1,277 @@
|
||||
namespace Flyby11
|
||||
{
|
||||
partial class CanIUpgradeView
|
||||
{
|
||||
/// <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 Komponenten-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.btnBack = new System.Windows.Forms.Button();
|
||||
this.lblPtHdr = new System.Windows.Forms.Label();
|
||||
this.lblPtAns = new System.Windows.Forms.Label();
|
||||
this.lblPtHdr2 = new System.Windows.Forms.Label();
|
||||
this.lblPtAns3 = new System.Windows.Forms.Label();
|
||||
this.linkPtAns3 = new System.Windows.Forms.LinkLabel();
|
||||
this.statusLabel = new System.Windows.Forms.Label();
|
||||
this.lblPtAns4 = new System.Windows.Forms.Label();
|
||||
this.btnWindowsUpdate = new System.Windows.Forms.Button();
|
||||
this.linkPtAns2 = new System.Windows.Forms.LinkLabel();
|
||||
this.lblPtAns2 = new System.Windows.Forms.Label();
|
||||
this.btnPatch = new System.Windows.Forms.Button();
|
||||
this.lblPtAns5 = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnBack
|
||||
//
|
||||
this.btnBack.AutoSize = true;
|
||||
this.btnBack.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control;
|
||||
this.btnBack.FlatAppearance.BorderSize = 0;
|
||||
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.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.btnBack.Location = new System.Drawing.Point(0, 0);
|
||||
this.btnBack.Name = "btnBack";
|
||||
this.btnBack.Size = new System.Drawing.Size(34, 29);
|
||||
this.btnBack.TabIndex = 232;
|
||||
this.btnBack.Text = "...";
|
||||
this.btnBack.UseVisualStyleBackColor = true;
|
||||
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
|
||||
//
|
||||
// lblPtHdr
|
||||
//
|
||||
this.lblPtHdr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblPtHdr.AutoEllipsis = true;
|
||||
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.lblPtHdr.ForeColor = System.Drawing.Color.Black;
|
||||
this.lblPtHdr.Location = new System.Drawing.Point(12, 55);
|
||||
this.lblPtHdr.Name = "lblPtHdr";
|
||||
this.lblPtHdr.Size = new System.Drawing.Size(534, 17);
|
||||
this.lblPtHdr.TabIndex = 233;
|
||||
this.lblPtHdr.Text = "An existing Windows 10 device can be upgraded to Windows 11 if it meets the follo" +
|
||||
"wing criteria:";
|
||||
//
|
||||
// lblPtAns
|
||||
//
|
||||
this.lblPtAns.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblPtAns.AutoEllipsis = true;
|
||||
this.lblPtAns.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPtAns.Location = new System.Drawing.Point(33, 89);
|
||||
this.lblPtAns.Name = "lblPtAns";
|
||||
this.lblPtAns.Size = new System.Drawing.Size(513, 36);
|
||||
this.lblPtAns.TabIndex = 234;
|
||||
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" +
|
||||
"rted version of Windows 10.";
|
||||
//
|
||||
// lblPtHdr2
|
||||
//
|
||||
this.lblPtHdr2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblPtHdr2.AutoEllipsis = true;
|
||||
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.lblPtHdr2.ForeColor = System.Drawing.Color.Black;
|
||||
this.lblPtHdr2.Location = new System.Drawing.Point(12, 161);
|
||||
this.lblPtHdr2.Name = "lblPtHdr2";
|
||||
this.lblPtHdr2.Size = new System.Drawing.Size(534, 17);
|
||||
this.lblPtHdr2.TabIndex = 236;
|
||||
this.lblPtHdr2.Text = "To see if a Windows 10 device is eligible to upgrade to Windows 11, follow one of" +
|
||||
" these options:";
|
||||
this.lblPtHdr2.Click += new System.EventHandler(this.lblPtHdr2_Click);
|
||||
//
|
||||
// lblPtAns3
|
||||
//
|
||||
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)));
|
||||
this.linkPtAns3.AutoEllipsis = 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.linkPtAns3.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkPtAns3.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.linkPtAns3.Location = new System.Drawing.Point(167, 194);
|
||||
this.linkPtAns3.Name = "linkPtAns3";
|
||||
this.linkPtAns3.Size = new System.Drawing.Size(394, 16);
|
||||
this.linkPtAns3.TabIndex = 261;
|
||||
this.linkPtAns3.TabStop = true;
|
||||
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);
|
||||
//
|
||||
// statusLabel
|
||||
//
|
||||
this.statusLabel.AutoEllipsis = true;
|
||||
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.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.Name = "statusLabel";
|
||||
this.statusLabel.Size = new System.Drawing.Size(561, 33);
|
||||
this.statusLabel.TabIndex = 262;
|
||||
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblPtAns4
|
||||
//
|
||||
this.lblPtAns4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblPtAns4.AutoEllipsis = true;
|
||||
this.lblPtAns4.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPtAns4.Location = new System.Drawing.Point(33, 220);
|
||||
this.lblPtAns4.Name = "lblPtAns4";
|
||||
this.lblPtAns4.Size = new System.Drawing.Size(523, 27);
|
||||
this.lblPtAns4.TabIndex = 263;
|
||||
this.lblPtAns4.Text = "2. Select the following Windows Update shortcut and then select the Check for upd" +
|
||||
"ates button:";
|
||||
//
|
||||
// btnWindowsUpdate
|
||||
//
|
||||
this.btnWindowsUpdate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnWindowsUpdate.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnWindowsUpdate.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnWindowsUpdate.FlatAppearance.BorderSize = 2;
|
||||
this.btnWindowsUpdate.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
|
||||
this.btnWindowsUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnWindowsUpdate.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 12.5F, System.Drawing.FontStyle.Bold);
|
||||
this.btnWindowsUpdate.ForeColor = System.Drawing.Color.White;
|
||||
this.btnWindowsUpdate.Location = new System.Drawing.Point(47, 249);
|
||||
this.btnWindowsUpdate.Name = "btnWindowsUpdate";
|
||||
this.btnWindowsUpdate.Size = new System.Drawing.Size(161, 35);
|
||||
this.btnWindowsUpdate.TabIndex = 264;
|
||||
this.btnWindowsUpdate.TabStop = false;
|
||||
this.btnWindowsUpdate.Text = "Windows Update";
|
||||
this.btnWindowsUpdate.UseCompatibleTextRendering = true;
|
||||
this.btnWindowsUpdate.UseVisualStyleBackColor = false;
|
||||
this.btnWindowsUpdate.Click += new System.EventHandler(this.btnWindowsUpdate_Click);
|
||||
//
|
||||
// linkPtAns2
|
||||
//
|
||||
this.linkPtAns2.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkPtAns2.AutoEllipsis = true;
|
||||
this.linkPtAns2.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.linkPtAns2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkPtAns2.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.linkPtAns2.Location = new System.Drawing.Point(144, 134);
|
||||
this.linkPtAns2.Name = "linkPtAns2";
|
||||
this.linkPtAns2.Size = new System.Drawing.Size(402, 16);
|
||||
this.linkPtAns2.TabIndex = 265;
|
||||
this.linkPtAns2.TabStop = true;
|
||||
this.linkPtAns2.Text = "the minimum hardware specifications to run Windows 11.";
|
||||
this.linkPtAns2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkHardwareSpecs_LinkClicked);
|
||||
//
|
||||
// lblPtAns2
|
||||
//
|
||||
this.lblPtAns2.AutoEllipsis = true;
|
||||
this.lblPtAns2.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPtAns2.Location = new System.Drawing.Point(34, 134);
|
||||
this.lblPtAns2.Name = "lblPtAns2";
|
||||
this.lblPtAns2.Size = new System.Drawing.Size(111, 16);
|
||||
this.lblPtAns2.TabIndex = 266;
|
||||
this.lblPtAns2.Text = "2. The device meets";
|
||||
//
|
||||
// btnPatch
|
||||
//
|
||||
this.btnPatch.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnPatch.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnPatch.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnPatch.FlatAppearance.BorderSize = 2;
|
||||
this.btnPatch.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
|
||||
this.btnPatch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnPatch.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 12.5F, System.Drawing.FontStyle.Bold);
|
||||
this.btnPatch.ForeColor = System.Drawing.Color.White;
|
||||
this.btnPatch.Location = new System.Drawing.Point(47, 344);
|
||||
this.btnPatch.Name = "btnPatch";
|
||||
this.btnPatch.Size = new System.Drawing.Size(161, 35);
|
||||
this.btnPatch.TabIndex = 267;
|
||||
this.btnPatch.TabStop = false;
|
||||
this.btnPatch.Text = "Patch Installation";
|
||||
this.btnPatch.UseCompatibleTextRendering = true;
|
||||
this.btnPatch.UseVisualStyleBackColor = false;
|
||||
this.btnPatch.Click += new System.EventHandler(this.btnPatch_Click);
|
||||
//
|
||||
// lblPtAns5
|
||||
//
|
||||
this.lblPtAns5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblPtAns5.AutoEllipsis = true;
|
||||
this.lblPtAns5.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPtAns5.Location = new System.Drawing.Point(33, 288);
|
||||
this.lblPtAns5.Name = "lblPtAns5";
|
||||
this.lblPtAns5.Size = new System.Drawing.Size(513, 40);
|
||||
this.lblPtAns5.TabIndex = 268;
|
||||
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.";
|
||||
//
|
||||
// CanIUpgradeView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoScroll = true;
|
||||
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.lblPtAns2);
|
||||
this.Controls.Add(this.linkPtAns2);
|
||||
this.Controls.Add(this.btnWindowsUpdate);
|
||||
this.Controls.Add(this.lblPtAns4);
|
||||
this.Controls.Add(this.statusLabel);
|
||||
this.Controls.Add(this.linkPtAns3);
|
||||
this.Controls.Add(this.lblPtAns3);
|
||||
this.Controls.Add(this.lblPtHdr2);
|
||||
this.Controls.Add(this.lblPtAns);
|
||||
this.Controls.Add(this.lblPtHdr);
|
||||
this.Controls.Add(this.btnBack);
|
||||
this.Name = "CanIUpgradeView";
|
||||
this.Size = new System.Drawing.Size(561, 585);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button btnBack;
|
||||
private System.Windows.Forms.Label lblPtHdr;
|
||||
private System.Windows.Forms.Label lblPtAns;
|
||||
private System.Windows.Forms.Label lblPtHdr2;
|
||||
private System.Windows.Forms.Label lblPtAns3;
|
||||
private System.Windows.Forms.LinkLabel linkPtAns3;
|
||||
private System.Windows.Forms.Label statusLabel;
|
||||
private System.Windows.Forms.Label lblPtAns4;
|
||||
private System.Windows.Forms.Button btnWindowsUpdate;
|
||||
private System.Windows.Forms.LinkLabel linkPtAns2;
|
||||
private System.Windows.Forms.Label lblPtAns2;
|
||||
private System.Windows.Forms.Button btnPatch;
|
||||
private System.Windows.Forms.Label lblPtAns5;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Security.Principal;
|
||||
using System.Windows.Forms;
|
||||
using Views;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public partial class CanIUpgradeView : UserControl
|
||||
{
|
||||
private IsoHandler isoHandler;
|
||||
|
||||
public CanIUpgradeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
isoHandler = new IsoHandler(UpdateStatusLabel);
|
||||
InitializeLocalizedStrings();
|
||||
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()
|
||||
{
|
||||
// Segoe MDL2 Assets
|
||||
btnBack.Text = "\uE72B";
|
||||
}
|
||||
|
||||
// Update the status label
|
||||
private void UpdateStatusLabel(string message)
|
||||
{
|
||||
statusLabel.Text = message;
|
||||
statusLabel.Refresh(); // Ensure the label updates in real-time
|
||||
}
|
||||
|
||||
private void btnBack_Click(object sender, EventArgs e)
|
||||
{
|
||||
SwitchView.GoBack(this.Parent as Panel);
|
||||
}
|
||||
|
||||
private async void linkPCHealthCheckApp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
string installAssistantUrl = "https://github.com/rcmaehl/WhyNotWin11/releases/download/2.6.1.1/WhyNotWin11.exe";
|
||||
await isoHandler.DownloadMediaTool(installAssistantUrl, "WhyNotWin11.exe");
|
||||
}
|
||||
|
||||
private void linkHardwareSpecs_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
Process.Start("https://www.microsoft.com/windows/windows-11-specifications?ocid=smc_marvel_ups_support_win11");
|
||||
}
|
||||
|
||||
private void btnWindowsUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Open Windows Update settings
|
||||
Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = "ms-settings:windowsupdate",
|
||||
UseShellExecute = true
|
||||
});
|
||||
|
||||
// Trigger update check via PowerShell
|
||||
Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = "powershell.exe",
|
||||
Arguments = "-Command \"Start-WindowsUpdate -Confirm:$false\"",
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
});
|
||||
UpdateStatusLabel("Checking for updates...");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatusLabel($"Error starting Windows Update: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private void btnPatch_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Check if the application is running with Administrator privileges
|
||||
if (!IsRunningAsAdministrator())
|
||||
{
|
||||
// Request elevation (UAC prompt) and restart the application with admin rights
|
||||
UpdateStatusLabel("This application needs to be run as Administrator. Restarting as Administrator...");
|
||||
RunAsAdministrator();
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateStatusLabel("Checking patch status...");
|
||||
|
||||
// Check if the patch has already been applied
|
||||
if (IsPatchApplied())
|
||||
{
|
||||
UpdateStatusLabel("Patch is already applied. No further action needed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// If patch not applied, attempt to apply the patch
|
||||
UpdateStatusLabel("Applying patch...");
|
||||
if (ApplyPatch())
|
||||
{
|
||||
UpdateStatusLabel("Patch applied successfully! You are ready for the upgrade.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// UpdateStatusLabel("Failed to apply the patch. Please try again.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Helper method to check if the application is running as Administrator
|
||||
private bool IsRunningAsAdministrator()
|
||||
{
|
||||
var identity = System.Security.Principal.WindowsIdentity.GetCurrent();
|
||||
var principal = new System.Security.Principal.WindowsPrincipal(identity);
|
||||
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
// Helper method to restart the application with Administrator privileges
|
||||
private void RunAsAdministrator()
|
||||
{
|
||||
ProcessStartInfo processStartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = Application.ExecutablePath,
|
||||
Verb = "runas" // This triggers the UAC prompt
|
||||
};
|
||||
Process.Start(processStartInfo);
|
||||
Application.Exit(); // Exit the current application to prevent further execution
|
||||
}
|
||||
|
||||
private bool IsPatchApplied()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (Process process = new Process())
|
||||
{
|
||||
process.StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "cmd.exe",
|
||||
Arguments = "/c reg query \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /v HwReqChkVars",
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
process.Start();
|
||||
string output = process.StandardOutput.ReadToEnd();
|
||||
string error = process.StandardError.ReadToEnd();
|
||||
process.WaitForExit();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(error))
|
||||
{
|
||||
UpdateStatusLabel($"Registry query failed: {error}");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (output.Contains("HwReqChkVars"))
|
||||
{
|
||||
UpdateStatusLabel("Patch is already applied.");
|
||||
return true;
|
||||
}
|
||||
|
||||
UpdateStatusLabel("Patch is not applied.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatusLabel($"Error checking patch status: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private bool ApplyPatch()
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] commands = new[]
|
||||
{
|
||||
"reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /f",
|
||||
"reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /v HwReqChkVars /t REG_MULTI_SZ /d \"SQ_SecureBootCapable=TRUE\\0SQ_SecureBootEnabled=TRUE\\0SQ_TpmVersion=2\\0SQ_RamMB=8192\" /f",
|
||||
"reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\CompatMarkers\" /f",
|
||||
"reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Shared\" /f",
|
||||
"reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\TargetVersionUpgradeExperienceIndicators\" /f",
|
||||
"reg add \"HKLM\\SYSTEM\\Setup\\MoSetup\" /f /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1"
|
||||
};
|
||||
|
||||
List<Process> processes = new List<Process>();
|
||||
|
||||
foreach (string command in commands)
|
||||
{
|
||||
Process process = new Process();
|
||||
process.StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "cmd.exe",
|
||||
Arguments = $"/c {command}",
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
process.Start();
|
||||
processes.Add(process);
|
||||
}
|
||||
|
||||
foreach (Process process in processes)
|
||||
{
|
||||
process.WaitForExit();
|
||||
|
||||
string output = process.StandardOutput.ReadToEnd();
|
||||
string error = process.StandardError.ReadToEnd();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(error))
|
||||
{
|
||||
// UpdateStatusLabel($"Error applying patch: {error}");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(output))
|
||||
{
|
||||
UpdateStatusLabel($"{output}");
|
||||
}
|
||||
}
|
||||
|
||||
UpdateStatusLabel("Patch applied successfully!");
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateStatusLabel($"Error applying patch: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void lblPtHdr2_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
File renamed without changes.
Generated
+113
@@ -0,0 +1,113 @@
|
||||
namespace Flyby11
|
||||
{
|
||||
partial class ClippyUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Windows Form-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.assetClippy = new System.Windows.Forms.PictureBox();
|
||||
this.lblClosePane = new System.Windows.Forms.Label();
|
||||
this.lblHelp = new System.Windows.Forms.Label();
|
||||
this.tt = new System.Windows.Forms.ToolTip(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this.assetClippy)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// assetClippy
|
||||
//
|
||||
this.assetClippy.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.assetClippy.Location = new System.Drawing.Point(0, 0);
|
||||
this.assetClippy.Name = "assetClippy";
|
||||
this.assetClippy.Size = new System.Drawing.Size(163, 160);
|
||||
this.assetClippy.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.assetClippy.TabIndex = 0;
|
||||
this.assetClippy.TabStop = false;
|
||||
this.assetClippy.MouseDown += new System.Windows.Forms.MouseEventHandler(this.assetClippy_MouseDown);
|
||||
this.assetClippy.MouseMove += new System.Windows.Forms.MouseEventHandler(this.assetClippy_MouseMove);
|
||||
//
|
||||
// lblClosePane
|
||||
//
|
||||
this.lblClosePane.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblClosePane.AutoEllipsis = true;
|
||||
this.lblClosePane.AutoSize = true;
|
||||
this.lblClosePane.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.lblClosePane.Font = new System.Drawing.Font("Segoe MDL2 Assets", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblClosePane.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.lblClosePane.Location = new System.Drawing.Point(137, 9);
|
||||
this.lblClosePane.Name = "lblClosePane";
|
||||
this.lblClosePane.Size = new System.Drawing.Size(19, 13);
|
||||
this.lblClosePane.TabIndex = 4;
|
||||
this.lblClosePane.Text = "...";
|
||||
this.lblClosePane.Click += new System.EventHandler(this.lblClosePane_Click);
|
||||
//
|
||||
// lblHelp
|
||||
//
|
||||
this.lblHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblHelp.AutoEllipsis = true;
|
||||
this.lblHelp.AutoSize = true;
|
||||
this.lblHelp.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.lblHelp.Font = new System.Drawing.Font("Segoe MDL2 Assets", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblHelp.ForeColor = System.Drawing.Color.DeepPink;
|
||||
this.lblHelp.Location = new System.Drawing.Point(112, 9);
|
||||
this.lblHelp.Name = "lblHelp";
|
||||
this.lblHelp.Size = new System.Drawing.Size(19, 13);
|
||||
this.lblHelp.TabIndex = 5;
|
||||
this.lblHelp.Text = "...";
|
||||
this.tt.SetToolTip(this.lblHelp, "Need more help?");
|
||||
this.lblHelp.Click += new System.EventHandler(this.lblHelp_Click);
|
||||
//
|
||||
// tt
|
||||
//
|
||||
this.tt.IsBalloon = true;
|
||||
//
|
||||
// ClippyUI
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(163, 160);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.lblHelp);
|
||||
this.Controls.Add(this.lblClosePane);
|
||||
this.Controls.Add(this.assetClippy);
|
||||
this.Name = "ClippyUI";
|
||||
this.Opacity = 0.9D;
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
((System.ComponentModel.ISupportInitialize)(this.assetClippy)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox assetClippy;
|
||||
private System.Windows.Forms.Label lblClosePane;
|
||||
private System.Windows.Forms.Label lblHelp;
|
||||
private System.Windows.Forms.ToolTip tt;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public partial class ClippyUI : Form
|
||||
{
|
||||
private Point mouseDownLocation;
|
||||
private Logger logger;
|
||||
private MainForm mainForm;
|
||||
|
||||
public ClippyUI(MainForm mainForm, Logger logger)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.mainForm = mainForm;
|
||||
this.logger = logger;
|
||||
|
||||
// Initialize ClippyUI appearance and position
|
||||
InitializeFormAppearance();
|
||||
}
|
||||
|
||||
private void InitializeFormAppearance()
|
||||
{
|
||||
// Segoe MDL2 Assets
|
||||
lblClosePane.Text = "\uE8BB";
|
||||
lblHelp.Text = "\uE897";
|
||||
|
||||
// Remove the form border
|
||||
this.FormBorderStyle = FormBorderStyle.None;
|
||||
|
||||
// Take a screenshot of the desktop
|
||||
Bitmap desktopScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
|
||||
using (Graphics g = Graphics.FromImage(desktopScreenshot))
|
||||
{
|
||||
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, desktopScreenshot.Size);
|
||||
}
|
||||
|
||||
// Determine color of the pixel under form
|
||||
Point formLocation = this.PointToScreen(Point.Empty);
|
||||
Color desktopColor = desktopScreenshot.GetPixel(formLocation.X + this.Width / 2, formLocation.Y + this.Height / 2);
|
||||
|
||||
// Set PictureBox properties
|
||||
assetClippy.Size = new Size(150, 150);
|
||||
|
||||
// Make the form transparent
|
||||
this.BackColor = desktopColor;
|
||||
this.TransparencyKey = desktopColor;
|
||||
|
||||
// Load default Clippy image
|
||||
string defaultImagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "clippy.png");
|
||||
if (File.Exists(defaultImagePath))
|
||||
{
|
||||
assetClippy.Image = Image.FromFile(defaultImagePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadRandomCharacter(); // fallback, no picture found
|
||||
}
|
||||
}
|
||||
|
||||
public void SetClippyPosition(Form mainForm)
|
||||
{
|
||||
int margin = 10;
|
||||
|
||||
// Get the working area of the screen
|
||||
Rectangle screenBounds = Screen.FromControl(mainForm).WorkingArea;
|
||||
|
||||
// Calculate the position of the Clippy UI (right below the main form)
|
||||
int x = Math.Min(mainForm.Location.X + mainForm.Width + margin, screenBounds.Right - this.Width);
|
||||
int y = Math.Min(mainForm.Location.Y + mainForm.Height - this.Height, screenBounds.Bottom - this.Height);
|
||||
|
||||
this.StartPosition = FormStartPosition.Manual;
|
||||
this.Location = new Point(x, y);
|
||||
}
|
||||
|
||||
private void LoadRandomCharacter()
|
||||
{
|
||||
string directoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app\\assets");
|
||||
string[] searchPatterns = { "clippy*.png", "clippy*.gif" };
|
||||
|
||||
List<string> matchingFiles = new List<string>();
|
||||
foreach (string pattern in searchPatterns)
|
||||
{
|
||||
string[] files = Directory.GetFiles(directoryPath, pattern);
|
||||
matchingFiles.AddRange(files);
|
||||
}
|
||||
|
||||
if (matchingFiles.Count > 0)
|
||||
{
|
||||
Random random = new Random();
|
||||
int randomIndex = random.Next(0, matchingFiles.Count);
|
||||
string randomClippyImagePath = matchingFiles[randomIndex];
|
||||
assetClippy.Image = Image.FromFile(randomClippyImagePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Oops! I can't work if I'm invisible. Please make sure Clippy is in the right place!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void assetClippy_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseDownLocation = e.Location;
|
||||
}
|
||||
}
|
||||
|
||||
// EventHandler for the MouseMove event of the Clippy image
|
||||
private void assetClippy_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
// Update position of the SetupForm based on the movement of the Clippy image
|
||||
this.Left += e.X - mouseDownLocation.X;
|
||||
this.Top += e.Y - mouseDownLocation.Y;
|
||||
|
||||
// Update position of the MainForm relative to the new position of the SetupForm
|
||||
mainForm.Left += e.X - mouseDownLocation.X;
|
||||
mainForm.Top += e.Y - mouseDownLocation.Y;
|
||||
}
|
||||
}
|
||||
|
||||
private async void lblClosePane_Click(object sender, EventArgs e)
|
||||
{
|
||||
logger.Log("Looks like you're giving me the boot! No hard feelings—I'll be here if you need me again.", Color.DeepPink);
|
||||
|
||||
await Task.Delay(1000);
|
||||
|
||||
// Hide Clippy
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void lblHelp_Click(object sender, EventArgs e)
|
||||
{
|
||||
mainForm._faqHandler.AddNextFAQStep();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,4 @@
|
||||
<metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<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
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
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();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
File renamed without changes.
@@ -1,71 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Privacy
|
||||
{
|
||||
internal class ActivityHistory : FeatureBase
|
||||
{
|
||||
public ActivityHistory(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
|
||||
private const string valueName = "ActivityHistoryEnabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable activity history";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "Disable activity history (prevents Windows from tracking and storing your activity)";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (
|
||||
Utils.IntEquals(keyName, valueName, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
namespace FlybyScript
|
||||
{
|
||||
public abstract class FeatureBase
|
||||
{
|
||||
protected readonly Logger logger;
|
||||
|
||||
public Logger Logger => logger;
|
||||
|
||||
protected FeatureBase(Logger logger)
|
||||
{
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
public abstract string ID();
|
||||
|
||||
public abstract string Info();
|
||||
|
||||
public abstract bool CheckFeature();
|
||||
|
||||
public abstract bool DoFeature();
|
||||
|
||||
public abstract bool UndoFeature();
|
||||
|
||||
public abstract string GetRegistryKey();
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
internal class FeatureNode : TreeNode
|
||||
{
|
||||
public FeatureBase Feature { get; private set; }
|
||||
|
||||
public FeatureNode(FeatureBase feature)
|
||||
{
|
||||
Feature = feature;
|
||||
Text = Feature.ID();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,147 +0,0 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
internal class FeaturePanel : Panel
|
||||
{
|
||||
private FeatureBase feature;
|
||||
private Logger logger;
|
||||
private Label statusLabel;
|
||||
|
||||
public FeaturePanel(FeatureBase feature, Logger logger)
|
||||
{
|
||||
this.feature = feature;
|
||||
this.logger = logger;
|
||||
|
||||
// Create a FlowLayoutPanel
|
||||
FlowLayoutPanel flowLayout = new FlowLayoutPanel
|
||||
{
|
||||
Dock = DockStyle.Top,
|
||||
AutoSize = true,
|
||||
FlowDirection = FlowDirection.TopDown,
|
||||
WrapContents = false,
|
||||
AutoScroll = true
|
||||
};
|
||||
|
||||
// Add Components
|
||||
var descriptionLabel = CreateDescriptionLabel();
|
||||
var checkBox = CreateCheckBox();
|
||||
var linkLabel = CreateLinkLabel();
|
||||
statusLabel = CreateStatusLabel(); // Init status label
|
||||
|
||||
// Event Handlers
|
||||
linkLabel.Click += LinkLabel_Click;
|
||||
checkBox.CheckedChanged += CheckBox_CheckedChanged;
|
||||
|
||||
// Add Controls to FlowLayoutPanel
|
||||
flowLayout.Controls.Add(descriptionLabel);
|
||||
flowLayout.Controls.Add(checkBox);
|
||||
flowLayout.Controls.Add(linkLabel);
|
||||
flowLayout.Controls.Add(statusLabel);
|
||||
|
||||
// Add FlowLayoutPanel to the main panel
|
||||
Controls.Add(flowLayout);
|
||||
}
|
||||
|
||||
private Label CreateDescriptionLabel()
|
||||
{
|
||||
return new Label
|
||||
{
|
||||
Text = feature.Info(),
|
||||
AutoSize = true,
|
||||
Font = new Font("Segoe UI", 10, FontStyle.Regular),
|
||||
ForeColor = Color.Black,
|
||||
Padding = new Padding(0, 0, 0, 5) // Padding for better spacing
|
||||
};
|
||||
}
|
||||
|
||||
private CheckBox CreateCheckBox()
|
||||
{
|
||||
return new CheckBox
|
||||
{
|
||||
Text = feature.ID(),
|
||||
AutoSize = true,
|
||||
Checked = feature.CheckFeature(),
|
||||
Dock = DockStyle.Top,
|
||||
Font = new Font("Segoe UI", 10, FontStyle.Bold),
|
||||
ForeColor = Color.Black
|
||||
};
|
||||
}
|
||||
|
||||
private LinkLabel CreateLinkLabel()
|
||||
{
|
||||
return new LinkLabel
|
||||
{
|
||||
Text = "Show Details",
|
||||
AutoSize = true,
|
||||
LinkColor = Color.Blue,
|
||||
Font = new Font("Segoe UI", 10, FontStyle.Italic),
|
||||
Cursor = Cursors.Hand,
|
||||
Padding = new Padding(0, 0, 10, 0) // Adding some padding
|
||||
};
|
||||
}
|
||||
|
||||
private Label CreateStatusLabel()
|
||||
{
|
||||
return new Label
|
||||
{
|
||||
Text = feature.CheckFeature() ? "Accepted" : "Declined",
|
||||
AutoSize = true,
|
||||
Font = new Font("Segoe UI", 10, FontStyle.Italic),
|
||||
ForeColor = Color.Gray,
|
||||
TextAlign = ContentAlignment.MiddleRight,
|
||||
Padding = new Padding(10, 0, 0, 0)
|
||||
};
|
||||
}
|
||||
|
||||
private void LinkLabel_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Copy the registry key associated with the feature to the clipboard
|
||||
string registryKey = feature.GetRegistryKey();
|
||||
if (!string.IsNullOrEmpty(registryKey))
|
||||
{
|
||||
Clipboard.SetText(registryKey);
|
||||
MessageBox.Show($"Registry key '{registryKey}", "Copied to clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("No registry key available for this feature.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
var checkBox = sender as CheckBox;
|
||||
bool success = false;
|
||||
|
||||
if (checkBox != null)
|
||||
{
|
||||
if (checkBox.Checked)
|
||||
{
|
||||
success = feature.DoFeature(); // Enable feature
|
||||
if (success)
|
||||
{
|
||||
logger.Log($"{feature.ID()} enabled", Color.Green);
|
||||
statusLabel.Text = "Accepted"; // Update status label
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
success = feature.UndoFeature(); // Disable feature
|
||||
if (success)
|
||||
{
|
||||
logger.Log($"{feature.ID()} disabled", Color.Red);
|
||||
statusLabel.Text = "Declined";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!success)
|
||||
{
|
||||
MessageBox.Show("Failed to update feature status", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class FileExplorerAds : FeatureBase
|
||||
{
|
||||
public FileExplorerAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
|
||||
private const string valueName = "ShowSyncProviderNotifications";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable File Explorer Ads";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "This feature will disable ads in File Explorer.";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (Utils.IntEquals(keyName, valueName, desiredValue));
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Privacy
|
||||
{
|
||||
internal class FindMyDevice : FeatureBase
|
||||
{
|
||||
public FindMyDevice(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location";
|
||||
private const string valueName = "Value";
|
||||
private const string desiredValue = @"Allow";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable Find my device";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "This feature will disable find my device.";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return !(
|
||||
Utils.StringEquals(keyName, valueName, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, "Deny", RegistryValueKind.String);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, desiredValue, RegistryValueKind.String);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
public class FinishSetupAds : FeatureBase
|
||||
{
|
||||
public FinishSetupAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement";
|
||||
private const string valueName = "ScoobeSystemSettingEnabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Finish Setup Ads";
|
||||
|
||||
public override string Info() => "This feature will disable the \"Lets finish setting up your device\" and other advertising.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return Utils.IntEquals(keyName, valueName, 0);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Privacy
|
||||
{
|
||||
internal class LocationTracking : FeatureBase
|
||||
{
|
||||
public LocationTracking(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\LocationAndSensors";
|
||||
private const string valueName = "LocationEnabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable location tracking";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "Disable location tracking (prevents Windows from accessing your location)";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return Utils.IntEquals(keyName, valueName,desiredValue);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class LockScreenAds : FeatureBase
|
||||
{
|
||||
public LockScreenAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||
private const string valueName = "RotatingLockScreenOverlayEnabled";
|
||||
private const string valueName2 = "SubscribedContent-338387Enabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Lock Screen Tips and Ads";
|
||||
|
||||
public override string Info() => "This feature will disable tips and ads on the lock screen.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (Utils.IntEquals(keyName, valueName, desiredValue) &&
|
||||
Utils.IntEquals(keyName, valueName2, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
public class PersonalizedAds : FeatureBase
|
||||
{
|
||||
public PersonalizedAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo";
|
||||
private const string valueName = "Enabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Personalized Ads";
|
||||
|
||||
public override string Info() => "This feature will disable personalized ads.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return Utils.IntEquals(keyName, valueName, 0);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Privacy
|
||||
{
|
||||
public class PrivacyExperience : FeatureBase
|
||||
{
|
||||
public PrivacyExperience(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OOBE";
|
||||
private const string valueName = "DisablePrivacyExperience";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Privacy Settings Experience at sign-in";
|
||||
|
||||
public override string Info() => "This feature will disable Privacy Settings Experience at sign-in.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return !Utils.IntEquals(keyName, valueName, desiredValue);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class SettingsAds : FeatureBase
|
||||
{
|
||||
public SettingsAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||
private const string valueName = "SubscribedContent-338393Enabled";
|
||||
private const string valueName2 = "SubscribedContent-353694Enabled";
|
||||
private const string valueName3 = "SubscribedContent-353696Enabled";
|
||||
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Settings Ads";
|
||||
|
||||
public override string Info() => "This feature will disable ads in settings.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} + {valueName2} + {valueName3} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (Utils.IntEquals(keyName, valueName, desiredValue) &&
|
||||
Utils.IntEquals(keyName, valueName2, desiredValue) &&
|
||||
Utils.IntEquals(keyName, valueName3, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName3, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Registry.SetValue(keyName, valueName3, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class StartmenuAds : FeatureBase
|
||||
{
|
||||
public StartmenuAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
|
||||
private const string valueName = "Start_IrisRecommendations";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable Start menu Ads";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "This feature will disable ads in the start menu.";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (
|
||||
Utils.IntEquals(keyName, valueName, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class TailoredExperiences : FeatureBase
|
||||
{
|
||||
public TailoredExperiences(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
|
||||
private const string valueName = "TailoredExperiencesWithDiagnosticDataEnabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override string ID()
|
||||
{
|
||||
return "Disable Tailored experiences";
|
||||
}
|
||||
|
||||
public override string Info()
|
||||
{
|
||||
return "Tailored Experiences allows Microsoft to get information from you to deliver personalized tips, ads, and recommendations. Many people would call this telemetry, or even spying.";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (
|
||||
Utils.IntEquals(keyName, valueName, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Privacy
|
||||
{
|
||||
public class Telemetry : FeatureBase
|
||||
{
|
||||
public Telemetry(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string dataCollection = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DataCollection";
|
||||
private const string diagTrack = @"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DiagTrack";
|
||||
|
||||
public override string ID() => "Turn off Telemetry data collection";
|
||||
|
||||
public override string Info() => "This feature will turn off telemetry data collection and prevent the data from being sent to Microsoft.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{dataCollection} | {diagTrack}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (
|
||||
Utils.IntEquals(dataCollection, "AllowTelemetry", 0) &&
|
||||
Utils.IntEquals(diagTrack, "Start", 2)
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(dataCollection, "AllowTelemetry", 0, RegistryValueKind.DWord);
|
||||
Registry.SetValue(diagTrack, "Start", 2, RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(dataCollection, "AllowTelemetry", 1, RegistryValueKind.DWord);
|
||||
Registry.SetValue(diagTrack, "Start", 4, RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
internal class TipsAndSuggestions : FeatureBase
|
||||
{
|
||||
public TipsAndSuggestions(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||
private const string valueName = "SubscribedContent-338389Enabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable General Tips and Ads";
|
||||
|
||||
public override string Info() => "This feature will disable general tips and ads.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return (Utils.IntEquals(keyName, valueName, desiredValue)
|
||||
);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Settings.Ads
|
||||
{
|
||||
public class WelcomeExperienceAds : FeatureBase
|
||||
{
|
||||
public WelcomeExperienceAds(Logger logger) : base(logger)
|
||||
{
|
||||
}
|
||||
|
||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
|
||||
private const string valueName = "SubscribedContent-310093Enabled";
|
||||
private const int desiredValue = 0;
|
||||
|
||||
public override string ID() => "Disable Welcome Experience Ads";
|
||||
|
||||
public override string Info() => "This feature will disable ads in the welcome experience.";
|
||||
|
||||
public override string GetRegistryKey()
|
||||
{
|
||||
return $"{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
|
||||
}
|
||||
|
||||
public override bool CheckFeature()
|
||||
{
|
||||
return Utils.IntEquals(keyName, valueName, 0);
|
||||
}
|
||||
|
||||
public override bool DoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool UndoFeature()
|
||||
{
|
||||
try
|
||||
{
|
||||
Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log("Code red in " + ex.Message, Color.Red);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,351 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public class FAQHandler
|
||||
{
|
||||
// Reference to the panel that will display the FAQ
|
||||
private readonly Panel _faqPanel;
|
||||
|
||||
// Delegate to update the app's status label (from main form)
|
||||
private readonly Action<string> _updateStatus;
|
||||
|
||||
private FlowLayoutPanel _faqContentPanel;
|
||||
|
||||
// List of individual FAQ entry steps
|
||||
private readonly List<Action<FlowLayoutPanel>> _faqSteps = new List<Action<FlowLayoutPanel>>();
|
||||
|
||||
private int _currentFaqStep = 0;
|
||||
|
||||
public FAQHandler(Panel faqPanel, Action<string> updateStatus)
|
||||
{
|
||||
_faqPanel = faqPanel;
|
||||
_updateStatus = updateStatus;
|
||||
}
|
||||
|
||||
// Initializes the FAQ view with basic content only
|
||||
public void InitializeFAQ()
|
||||
{
|
||||
_faqPanel.AutoScroll = true;
|
||||
_faqPanel.Controls.Clear();
|
||||
|
||||
_faqContentPanel = new FlowLayoutPanel
|
||||
{
|
||||
Dock = DockStyle.Fill,
|
||||
AutoScroll = true,
|
||||
Padding = new Padding(10),
|
||||
FlowDirection = FlowDirection.TopDown,
|
||||
|
||||
WrapContents = false
|
||||
};
|
||||
|
||||
// Add static FAQ content (header, ISO info, etc.)
|
||||
AddTitle(_faqContentPanel);
|
||||
AddISOFAQ(_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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
AddLabel(parent, Locales.Strings.faq_q1, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||
AddLabel(parent, Locales.Strings.faq_a1, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||
|
||||
|
||||
var downloadOptions = new ComboBox
|
||||
{
|
||||
DropDownStyle = ComboBoxStyle.DropDownList,
|
||||
Font = new Font("Segoe UI Variable Display", 10.5f),
|
||||
Width = 300,
|
||||
Padding = new Padding(5)
|
||||
};
|
||||
|
||||
downloadOptions.Items.Add("Select Download Source"); // Add default placeholder item
|
||||
downloadOptions.Items.Add(Locales.Strings.faq_downloadMS); // Index 1
|
||||
downloadOptions.Items.Add(Locales.Strings.faq_downloadFido); // Index 2
|
||||
downloadOptions.Items.Add("Media Creation Tool (Beginner-Friendly)"); // Index 3
|
||||
|
||||
downloadOptions.SelectedIndex = 0; // Set default selection
|
||||
|
||||
downloadOptions.SelectedIndexChanged += (s, e) =>
|
||||
{
|
||||
switch (downloadOptions.SelectedIndex)
|
||||
{
|
||||
case 1:
|
||||
// Open Microsoft ISO download page
|
||||
Process.Start("https://www.microsoft.com/software-download/windows11");
|
||||
break;
|
||||
case 2:
|
||||
// Download and run Fido script
|
||||
DownloadAndRunFidoScript("https://raw.githubusercontent.com/pbatard/Fido/refs/heads/master/Fido.ps1");
|
||||
break;
|
||||
case 3:
|
||||
// Handle Media Creation Tool download process
|
||||
HandleMediaCreationToolDownload();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
parent.Controls.Add(downloadOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Downloads and executes the Fido PowerShell script.
|
||||
/// </summary>
|
||||
void DownloadAndRunFidoScript(string scriptUrl)
|
||||
{
|
||||
string tempScriptPath = Path.Combine(Path.GetTempPath(), "Fido.ps1");
|
||||
|
||||
using (var client = new WebClient())
|
||||
{
|
||||
try
|
||||
{
|
||||
client.DownloadFile(scriptUrl, tempScriptPath);
|
||||
_updateStatus("Fido script downloaded successfully. Running it now...");
|
||||
|
||||
Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = "powershell.exe",
|
||||
Arguments = $"-ExecutionPolicy Bypass -File \"{tempScriptPath}\"",
|
||||
Verb = "runas",
|
||||
CreateNoWindow = true,
|
||||
UseShellExecute = true
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_updateStatus("Error downloading or running Fido: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles download, optional tutorial, and execution of the Media Creation Tool.
|
||||
/// </summary>
|
||||
void HandleMediaCreationToolDownload()
|
||||
{
|
||||
var infoResult = MessageBox.Show(
|
||||
"With the Media Creation Tool, you can either upgrade your PC or create an ISO file.\n\nImportant: In the step 'Choose which media to use', make sure to select 'ISO file'.\n\nIf you're unsure, would you like to watch a recommended YouTube tutorial on how to do this?",
|
||||
"Media Creation Tool Information",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Information);
|
||||
|
||||
if (infoResult == DialogResult.Yes)
|
||||
{
|
||||
Process.Start("https://www.youtube.com/watch?v=dNl1FHajW9w");
|
||||
}
|
||||
|
||||
using (var saveDialog = new SaveFileDialog())
|
||||
{
|
||||
saveDialog.Title = "Save Media Creation Tool";
|
||||
saveDialog.Filter = "Executable|*.exe";
|
||||
saveDialog.FileName = "MediaCreationTool.exe";
|
||||
|
||||
if (saveDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
using (var client = new WebClient())
|
||||
{
|
||||
try
|
||||
{
|
||||
client.DownloadFile("https://go.microsoft.com/fwlink/?linkid=2156295", saveDialog.FileName);
|
||||
MessageBox.Show("Media Creation Tool downloaded successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
var runResult = MessageBox.Show("Do you want to run the Media Creation Tool now?", "Run Tool", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (runResult == DialogResult.Yes)
|
||||
{
|
||||
Process.Start(saveDialog.FileName);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Error downloading the Media Creation Tool: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Adds any generic label to the flow panel
|
||||
private void AddLabel(FlowLayoutPanel parent, string text, Font font, ContentAlignment alignment, int padding = 0)
|
||||
{
|
||||
var label = new Label
|
||||
{
|
||||
Text = text,
|
||||
Font = font,
|
||||
Padding = new Padding(padding),
|
||||
TextAlign = alignment,
|
||||
AutoSize = true,
|
||||
UseCompatibleTextRendering = true
|
||||
};
|
||||
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)
|
||||
{
|
||||
var label = new Label
|
||||
{
|
||||
Text = text,
|
||||
Font = font,
|
||||
Padding = new Padding(padding),
|
||||
Dock = dock,
|
||||
TextAlign = alignment,
|
||||
AutoSize = true,
|
||||
UseCompatibleTextRendering = true,
|
||||
};
|
||||
parent.Controls.Add(label);
|
||||
}
|
||||
|
||||
// Adds FAQ entry with question + answer + link
|
||||
private void AddFAQItem(FlowLayoutPanel parent, string question, string answer, string linkText, string linkUrl)
|
||||
{
|
||||
AddLabel(parent, question, new Font("Segoe UI Variable Display", 10.5f, FontStyle.Bold), ContentAlignment.TopLeft, 11);
|
||||
AddLabel(parent, answer, new Font("Segoe UI Variable Display", 11), ContentAlignment.TopLeft, 11);
|
||||
|
||||
var linkLabel = new LinkLabel
|
||||
{
|
||||
Text = linkText,
|
||||
Font = new Font("Segoe UI Variable Display", 10.5f, FontStyle.Underline),
|
||||
LinkColor = Color.Blue,
|
||||
AutoSize = true,
|
||||
Padding = new Padding(10),
|
||||
TextAlign = ContentAlignment.TopLeft,
|
||||
UseCompatibleTextRendering = true,
|
||||
};
|
||||
|
||||
linkLabel.LinkClicked += (sender, e) => Process.Start(linkUrl);
|
||||
parent.Controls.Add(linkLabel);
|
||||
}
|
||||
|
||||
// -- Individual FAQ entries --
|
||||
// Donation
|
||||
private void AddFaq2(FlowLayoutPanel panel)
|
||||
{
|
||||
var donateContainer = new FlowLayoutPanel
|
||||
{
|
||||
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
|
||||
};
|
||||
|
||||
var qLabel = new Label
|
||||
{
|
||||
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
|
||||
};
|
||||
|
||||
var aLabel = new Label
|
||||
{
|
||||
Text = Locales.Strings.faq_a2,
|
||||
Font = new Font("Segoe UI Variable Display", 11),
|
||||
AutoSize = true,
|
||||
Padding = new Padding(0, 0, 0, 5),
|
||||
UseCompatibleTextRendering = true
|
||||
};
|
||||
|
||||
var donateLink = new LinkLabel
|
||||
{
|
||||
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");
|
||||
|
||||
donateContainer.Controls.Add(qLabel);
|
||||
donateContainer.Controls.Add(aLabel);
|
||||
donateContainer.Controls.Add(donateLink);
|
||||
|
||||
// Add to parent panel
|
||||
panel.Controls.Add(donateContainer);
|
||||
}
|
||||
|
||||
private void AddFaq3(FlowLayoutPanel panel)
|
||||
{
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{66DDC36A-9095-4053-941C-8829D44F5F20}</ProjectGuid>
|
||||
<ProjectGuid>{503AF34B-7544-4C43-A099-2B948C3FF49A}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>FlybyScript</RootNamespace>
|
||||
<RootNamespace>Flyby11</RootNamespace>
|
||||
<AssemblyName>Flyby11</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
@@ -40,9 +54,6 @@
|
||||
<ApplicationIcon>AppIcon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -56,82 +67,92 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Experience\ActivityHistory.cs" />
|
||||
<Compile Include="Experience\FeaturePanel.cs">
|
||||
<SubType>Component</SubType>
|
||||
<Compile Include="CanIUpgradeView.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Experience\FileExplorerAds.cs" />
|
||||
<Compile Include="Experience\FinishSetupAds.cs" />
|
||||
<Compile Include="Experience\LocationTracking.cs" />
|
||||
<Compile Include="Experience\LockScreenAds.cs" />
|
||||
<Compile Include="Experience\PersonalizedAds.cs" />
|
||||
<Compile Include="Experience\PrivacyExperience.cs" />
|
||||
<Compile Include="Experience\SettingsAds.cs" />
|
||||
<Compile Include="Experience\StartmenuAds.cs" />
|
||||
<Compile Include="Experience\TailoredExperiences.cs" />
|
||||
<Compile Include="Experience\Telemetry.cs" />
|
||||
<Compile Include="Experience\TipsAndSuggestions.cs" />
|
||||
<Compile Include="Experience\WelcomeExperienceAds.cs" />
|
||||
<Compile Include="Helper\Utils.cs" />
|
||||
<Compile Include="Helper\Views.cs" />
|
||||
<Compile Include="Patcher\ScriptPatcher.cs" />
|
||||
<Compile Include="Helper\Logger.cs" />
|
||||
<Compile Include="CanIUpgradeView.Designer.cs">
|
||||
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
||||
</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="IsoHandler.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">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PluginsForm.cs">
|
||||
<Compile Include="ProblemsForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PluginsForm.Designer.cs">
|
||||
<DependentUpon>PluginsForm.cs</DependentUpon>
|
||||
<Compile Include="ProblemsForm.Designer.cs">
|
||||
<DependentUpon>ProblemsForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Patcher\PSPatcher.cs" />
|
||||
<Compile Include="Patcher\NativePatcher.cs" />
|
||||
<Compile Include="Experience\FeatureBase.cs" />
|
||||
<Compile Include="Experience\FeatureNode.cs" />
|
||||
<Compile Include="USBManagement.cs" />
|
||||
<Compile Include="Views\ExperienceView.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\ExperienceView.Designer.cs">
|
||||
<DependentUpon>ExperienceView.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\MediaView.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\MediaView.Designer.cs">
|
||||
<DependentUpon>MediaView.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PluginsForm.resx">
|
||||
<DependentUpon>PluginsForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Views\ExperienceView.resx">
|
||||
<DependentUpon>ExperienceView.cs</DependentUpon>
|
||||
<Compile Include="SwitchView.cs" />
|
||||
<EmbeddedResource Include="CanIUpgradeView.resx">
|
||||
<DependentUpon>CanIUpgradeView.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\MediaView.resx">
|
||||
<DependentUpon>MediaView.cs</DependentUpon>
|
||||
<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.cs-CZ.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.de.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.fr.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.he.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.nl.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.ru.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
||||
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Locales\Strings.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ProblemsForm.resx">
|
||||
<DependentUpon>ProblemsForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.manifest" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
@@ -148,5 +169,17 @@
|
||||
<ItemGroup>
|
||||
<Content Include="AppIcon.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.8 %28x86 und x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -1,35 +0,0 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
public class Logger
|
||||
{
|
||||
private RichTextBox rtbDescription;
|
||||
|
||||
public Logger(RichTextBox rtbDescription)
|
||||
{
|
||||
this.rtbDescription = rtbDescription;
|
||||
}
|
||||
|
||||
public void Log(string message, Color color)
|
||||
{
|
||||
if (rtbDescription.InvokeRequired)
|
||||
{
|
||||
rtbDescription.Invoke(new Action(() => LogMessage(message, color)));
|
||||
}
|
||||
else
|
||||
{
|
||||
LogMessage(message, color);
|
||||
}
|
||||
}
|
||||
|
||||
private void LogMessage(string message, Color color)
|
||||
{
|
||||
rtbDescription.SelectionColor = color;
|
||||
rtbDescription.AppendText($"{DateTime.Now:HH:mm:ss} - {message}\n");
|
||||
rtbDescription.ScrollToCaret();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
internal class Utils
|
||||
{
|
||||
// Check registry int equal
|
||||
public static bool IntEquals(string keyName, string valueName, int expectedValue)
|
||||
{
|
||||
try
|
||||
{
|
||||
var value = Registry.GetValue(keyName, valueName, null);
|
||||
return (value != null && (int)value == expectedValue);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
{
|
||||
MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Check registry strings equal
|
||||
public static bool StringEquals(string keyName, string valueName, string expectedValue)
|
||||
{
|
||||
try
|
||||
{
|
||||
var value = Registry.GetValue(keyName, valueName, null);
|
||||
|
||||
return (value != null && (string)value == expectedValue);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool KeyExists(string keyPath)
|
||||
{
|
||||
return Registry.GetValue(keyPath, null, null) != null;
|
||||
}
|
||||
|
||||
public static bool IsProcessRunning(string processName)
|
||||
{
|
||||
Process[] processes = Process.GetProcessesByName(processName);
|
||||
return processes.Length > 0;
|
||||
}
|
||||
|
||||
// Launch Urls in richText control
|
||||
public static void LaunchUri(string url)
|
||||
{
|
||||
if (IsHttpURL(url)) Process.Start(url);
|
||||
}
|
||||
|
||||
// Check Urls in in richText control
|
||||
public static bool IsHttpURL(string url)
|
||||
{
|
||||
return
|
||||
((!string.IsNullOrWhiteSpace(url)) &&
|
||||
(url.ToLower().StartsWith("http")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,310 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public class IsoHandler
|
||||
{
|
||||
private static readonly HttpClient httpClient = new HttpClient();
|
||||
private readonly Action<string> _updateStatus;
|
||||
|
||||
public IsoHandler(Action<string> updateStatus)
|
||||
{
|
||||
_updateStatus = updateStatus;
|
||||
}
|
||||
|
||||
public async Task HandleIso(string isoPath, bool experimentalEnabled)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 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!
|
||||
|
||||
// Ensure the ISO path is properly quoted
|
||||
string quotedIsoPath = $"\"{isoPath}\"";
|
||||
|
||||
// Pass the quoted path to ExecutePowerShellCommand
|
||||
string driveLetter = await MountIsoAndGetDriveLetter(isoPath);
|
||||
|
||||
if (string.IsNullOrEmpty(driveLetter))
|
||||
{
|
||||
_updateStatus(Locales.Strings._debugStatusMountingFailed); //Failed to mount the ISO. Please try again.
|
||||
MessageBox.Show(Locales.Strings._debugStatusMountingFailed, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
_updateStatus(Locales.Strings._debugStatusMountingSuccess); //ISO mounted successfully! Let's get this Windows 11 ready!
|
||||
|
||||
string setupPath = Path.Combine(driveLetter, "sources", "setupprep.exe");
|
||||
if (File.Exists(setupPath))
|
||||
{
|
||||
await RunSetupWithAdminRights(setupPath, experimentalEnabled);
|
||||
}
|
||||
else
|
||||
{
|
||||
_updateStatus($"{Locales.Strings._debugStatusSetupFileNotFound} {driveLetter}. Aborting."); // Setup file not found in
|
||||
MessageBox.Show($"{Locales.Strings._debugStatusSetupFileNotFound} {driveLetter}",
|
||||
"Error",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_updateStatus($"{Locales.Strings._debugStatusHandleIsoEx} {ex.Message}"); //Oops! Something went wrong:
|
||||
MessageBox.Show($"Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<string> MountIsoAndGetDriveLetter(string isoPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
_updateStatus("Mounting ISO...");
|
||||
|
||||
// PowerShell script to mount ISO and get the assigned drive letter
|
||||
string script = $@"
|
||||
$iso = Mount-DiskImage -ImagePath '{isoPath}' -PassThru
|
||||
$volumes = Get-Volume -DiskImage $iso
|
||||
$volumes.DriveLetter
|
||||
";
|
||||
|
||||
using (var process = new Process())
|
||||
{
|
||||
process.StartInfo.FileName = "powershell.exe";
|
||||
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{script}\"";
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.StartInfo.RedirectStandardError = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true;
|
||||
|
||||
process.Start();
|
||||
|
||||
string output = await process.StandardOutput.ReadToEndAsync();
|
||||
string error = await process.StandardError.ReadToEndAsync();
|
||||
|
||||
await process.WaitForExitAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(error))
|
||||
{
|
||||
_updateStatus("PowerShell error during mount: " + error);
|
||||
return null;
|
||||
}
|
||||
|
||||
string driveLetter = output.Trim();
|
||||
if (!string.IsNullOrWhiteSpace(driveLetter))
|
||||
{
|
||||
_updateStatus($"ISO mounted successfully at {driveLetter}:\\");
|
||||
return $"{driveLetter}:\\";
|
||||
}
|
||||
else
|
||||
{
|
||||
_updateStatus("Failed to retrieve drive letter after mounting ISO.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_updateStatus("Exception during mounting: " + ex.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RunSetupWithAdminRights(string setupPath, bool experimentalEnabled)
|
||||
{
|
||||
try
|
||||
{
|
||||
_updateStatus(Locales.Strings._debugInstallRunElevated); //Starting the setup process with elevated privileges...
|
||||
|
||||
// Default argument
|
||||
string arguments = "/Product Server";
|
||||
|
||||
// If experimental mode is enabled, append additional setup parameters
|
||||
if (experimentalEnabled)
|
||||
{
|
||||
arguments += " /Compat IgnoreWarning /MigrateDrivers All";
|
||||
}
|
||||
|
||||
var startInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "powershell.exe",
|
||||
Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"Start-Process '{setupPath}' -ArgumentList '{arguments}' -Verb runas\"",
|
||||
Verb = "runas",
|
||||
UseShellExecute = true,
|
||||
CreateNoWindow = false
|
||||
};
|
||||
|
||||
_updateStatus(Locales.Strings._debugStatusRunning); //Almost there! We're getting the setup ready...
|
||||
|
||||
using (var process = Process.Start(startInfo))
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
await process.WaitForExitAsync();
|
||||
}
|
||||
}
|
||||
// Final status message
|
||||
string finalStatus = Locales.Strings._debugInstallReady;
|
||||
|
||||
if (experimentalEnabled)
|
||||
{
|
||||
finalStatus += " (Advanced mode enabled: Compatibility checks bypassed)";
|
||||
}
|
||||
|
||||
_updateStatus(finalStatus);
|
||||
|
||||
//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)
|
||||
{
|
||||
_updateStatus($"Error: {ex.Message}");
|
||||
MessageBox.Show($"Error: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create unattend.xml file in the sources\$OEM$\$$\Panther directory
|
||||
/// </summary>
|
||||
/// <param name="usbDrive">The USB drive where the unattend.xml will be created.</param>
|
||||
public void CreateUnattendXml(string usbDrive)
|
||||
{
|
||||
string unattendDir = Path.Combine(usbDrive, "sources", "$OEM$", "$$", "Panther");
|
||||
Directory.CreateDirectory(unattendDir); // Create the directory if it doesn't exist
|
||||
|
||||
string unattendPath = Path.Combine(unattendDir, "unattend.xml");
|
||||
|
||||
// Check if the file already exists
|
||||
if (!File.Exists(unattendPath))
|
||||
{
|
||||
// Create the unattend.xml content
|
||||
string xmlContent = @"<unattend xmlns='urn:schemas-microsoft-com:unattend'>
|
||||
<settings pass='disabled'>
|
||||
<component xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' name='Microsoft-Windows-Setup' processorArchitecture='amd64' language='neutral' publicKeyToken='31bf3856ad364e35' versionScope='nonSxS'>
|
||||
<UserData>
|
||||
<ProductKey>
|
||||
<Key/>
|
||||
</ProductKey>
|
||||
</UserData>
|
||||
<RunSynchronous>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>1</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>2</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>3</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
</RunSynchronous>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass='specialize'>
|
||||
<component xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' name='Microsoft-Windows-Deployment' processorArchitecture='amd64' language='neutral' publicKeyToken='31bf3856ad364e35' versionScope='nonSxS'>
|
||||
<RunSynchronous>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>1</Order>
|
||||
<Path>reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE /v BypassNRO /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
</RunSynchronous>
|
||||
</component>
|
||||
</settings>
|
||||
</unattend>";
|
||||
|
||||
File.WriteAllText(unattendPath, xmlContent);
|
||||
_updateStatus("Created unattend.xml in the sources\\$OEM$\\$$\\Panther directory.");
|
||||
}
|
||||
else
|
||||
{
|
||||
_updateStatus("unattend.xml already exists in the sources\\$OEM$\\$$\\Panther directory.");
|
||||
|
||||
// Display a message box to inform the user
|
||||
MessageBox.Show("The patch has already been applied. The 'unattend.xml' file already exists in the specified directory.",
|
||||
"Patch Already Applied",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Downloads a specified tool (Media Creation Tool or Installation Assistant) from a provided URL.
|
||||
/// </summary>
|
||||
/// <param name="downloadUrl">The URL of the tool to download.</param>
|
||||
/// <param name="fileName">The name of the file to save.</param>
|
||||
/// <returns>A task representing the asynchronous operation.</returns>
|
||||
public async Task DownloadMediaTool(string downloadUrl, string fileName)
|
||||
{
|
||||
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||
{
|
||||
saveFileDialog.Filter = "Executable Files (*.exe)|*.exe";
|
||||
saveFileDialog.Title = $"Save {fileName}";
|
||||
saveFileDialog.FileName = fileName;
|
||||
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string destinationPath = saveFileDialog.FileName;
|
||||
|
||||
try
|
||||
{
|
||||
_updateStatus($"Preparing to download {fileName}...");
|
||||
_updateStatus("Download may take some time, please wait...");
|
||||
|
||||
var response = await httpClient.GetAsync(downloadUrl);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
using (var fileStream = new FileStream(destinationPath, FileMode.Create, FileAccess.Write, FileShare.None))
|
||||
{
|
||||
await response.Content.CopyToAsync(fileStream);
|
||||
}
|
||||
|
||||
_updateStatus($"{fileName} download completed successfully!");
|
||||
|
||||
// Start the downloaded tool
|
||||
_updateStatus($"Starting {fileName}...");
|
||||
Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = destinationPath,
|
||||
UseShellExecute = true // To run .exe files
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_updateStatus($"An error occurred while downloading {fileName}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_updateStatus($"{fileName} download canceled by user.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ProcessExtensions
|
||||
{
|
||||
public static async Task WaitForExitAsync(this Process process)
|
||||
{
|
||||
var tcs = new TaskCompletionSource<bool>();
|
||||
process.EnableRaisingEvents = true;
|
||||
process.Exited += (sender, args) => tcs.TrySetResult(true);
|
||||
await tcs.Task;
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+531
@@ -0,0 +1,531 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.42000
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Flyby11.Locales {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||
/// </summary>
|
||||
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Strings {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Strings() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Flyby11.Locales.Strings", typeof(Strings).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die You're ready to install Windows 11 on unsupported hardware! Ignore the 'Windows Server' prompt; you're all set! ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugInstallReady {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugInstallReady", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Starting the setup process with elevated privileges... ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugInstallRunElevated {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugInstallRunElevated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Oops! Something went wrong: ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusHandleIsoEx {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusHandleIsoEx", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Mounting the ISO... Hang tight! ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusMounting {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusMounting", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Failed to mount the ISO. Please try again. ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusMountingFailed {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusMountingFailed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die ISO mounted successfully! Let's get this Windows 11 ready! ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusMountingSuccess {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusMountingSuccess", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Almost there! We're getting the setup ready... ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusRunning {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusRunning", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Setup file not found in ähnelt.
|
||||
/// </summary>
|
||||
public static string _debugStatusSetupFileNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("_debugStatusSetupFileNotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 1. The device is running a currently supported version of Windows 10. If the device isn't currently running a supported version of Windows 10, upgrade to a supported version of Windows 10. ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtAns {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtAns", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 2. The device meets ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtAns2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtAns2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 1. Download and run the ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtAns3 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtAns3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 2. Select the following Windows Update shortcut and then select the Check for updates button: ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtAns4 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtAns4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 3. Your device does not meet the official requirements for Windows 11? You can apply a compatibility patch to enable the Inplace Upgrade via Windows Update. ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtAns5 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtAns5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die An existing Windows 10 device can be upgraded to Windows 11 if it meets the following criteria: ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtHdr {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtHdr", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die To see if a Windows 10 device is eligible to upgrade to Windows 11, follow one of these options: ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_lblPtHdr2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_lblPtHdr2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die the minimum hardware specifications to run Windows 11. ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_linkPtAns2 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_linkPtAns2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die WhyNotWin11 app to confirm your device meets the minimum system requirements ähnelt.
|
||||
/// </summary>
|
||||
public static string ciuView_linkPtAns3 {
|
||||
get {
|
||||
return ResourceManager.GetString("ciuView_linkPtAns3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Bypass patch canceled by user. ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_debugCancel {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_debugCancel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die User attempted to select a non-removable drive. ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_debugNotRemovableDrive {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_debugNotRemovableDrive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die No USB drive selected for patching. ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_debugNoUSBDrive {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_debugNoUSBDrive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Failed to apply bypass patch: ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_msgFailedEx {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_msgFailedEx", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die The selected path is not a removable drive. Please select a USB drive. ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_msgNotRemovableDrive {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_msgNotRemovableDrive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Select the USB drive containing your Windows 11 installation files.\nThis feature adds a compatibility patch to bypass certain system requirements.\nCompatible with drives prepared by any tool, including Rufus. Ensure the drive is ready! ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_msgSelectDrive {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_msgSelectDrive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die This will apply compatibility bypass settings on the selected USB drive. Continue? ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_msgSelectDriveConfirm {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_msgSelectDriveConfirm", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Bypass patch applied successfully! ähnelt.
|
||||
/// </summary>
|
||||
public static string compPatch_msgSuccess {
|
||||
get {
|
||||
return ResourceManager.GetString("compPatch_msgSuccess", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Flyby11 Upgrading Assistant ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_FormTitle {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_FormTitle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Apply Compatibility Patch to ISO (Clean Install) ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_inkCompPatch {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_inkCompPatch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Can I upgrade to Windows 11? ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_linkCiuv {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_linkCiuv", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Select from computer ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_linkSelectComputer {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_linkSelectComputer", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Did the upgrade work? ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_linkVote {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_linkVote", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Drag and drop the Windows 11 ISO to patch it and install on unsupported hardware (Inplace Upgrade). ähnelt.
|
||||
/// </summary>
|
||||
public static string ctl_statusLabel {
|
||||
get {
|
||||
return ResourceManager.GetString("ctl_statusLabel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die A: You can download the latest ISO from the official Microsoft website or use the Fido Downloader. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a1 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die A: If you've successfully installed Windows 11 and saved some money, feel free to leave a little something as a thank-you here. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a2 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Click here to donate and show your support. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a2Link {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a2Link", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 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. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a3 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die A: Please check the error messages and report it on GitHub. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a4 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die 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. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a5 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die A: According to Microsoft, you should throw your PC away. I would suggest installing Linux on it and moving away from Windows. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a6 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a6", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die A: The developer is Belim, also known as Builtbybel, who has contributed a lot of code to the Windows community. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a7 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a7", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Click here to learn more about the developer's work. ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_a7Link {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_a7Link", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Download via Fido (Recommended) ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_downloadFido {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_downloadFido", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Microsoft Site ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_downloadMS {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_downloadMS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Frequently Asked Questions (FAQ) ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_header {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_header", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: Where can I get the latest Windows 11 ISO? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q1 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: How can I support the developer? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q2 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: How does the setup process work once the ISO is mounted? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q3 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: What if I encounter issues during installation? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q4 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: Is it legal to use this method? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q5 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: What are my alternatives if my PC is not supported? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q6 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q6", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Q: Who is the developer? ähnelt.
|
||||
/// </summary>
|
||||
public static string faq_q7 {
|
||||
get {
|
||||
return ResourceManager.GetString("faq_q7", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Windows 11 installation can now proceed. Please follow the instructions in the setup window. ähnelt.
|
||||
/// </summary>
|
||||
public static string msg_InstallReady {
|
||||
get {
|
||||
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'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]"; ähnelt.
|
||||
/// </summary>
|
||||
public static string msgClosing {
|
||||
get {
|
||||
return ResourceManager.GetString("msgClosing", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>اختر محرك أقراص USB الذي يحتوي على ملفات تثبيت Windows 11 الخاصة بك.\nتضيف هذه الميزة تصحيح توافق لتجاوز متطلبات النظام معينة.\nمتوافق مع الأقراص المعدة بواسطة أي أداة، بما في ذلك Rufus. تأكد من أن المحرك جاهز!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>سيتم تطبيق إعدادات تجاوز التوافق على محرك أقراص USB المحدد. هل تريد المتابعة؟</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>تم تطبيق التصحيح بنجاح!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>مساعد ترقية Flyby11</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>تطبيق تصحيح التوافق على ISO (تثبيت نظيف)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>هل يمكنني الترقية إلى Windows 11؟</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>هل نجحت الترقية؟</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>اسحب وأفلت ملف ISO الخاص بـ Windows 11 لتصحيحه وتثبيته على الأجهزة غير المدعومة (ترقية مكانية).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>ج: يمكنك تنزيل أحدث ISO من الموقع الرسمي لشركة Microsoft أو استخدام Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>ج: إذا قمت بتثبيت Windows 11 بنجاح ووفرت بعض المال، فلا تتردد في ترك شيء صغير كعلامة شكر هنا.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>انقر هنا للتبرع وإظهار دعمك.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>ج: بمجرد تحميل ISO، يتم تشغيل عملية الإعداد في الخلفية. يبدأ مثبت Windows، موجهًا إياك خلال الخطوات المطلوبة لتثبيت Windows 11 على جهازك.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>ج: يرجى التحقق من رسائل الخطأ والإبلاغ عنها على GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>ج: نعم، تركت Microsoft بابًا خلفيًا مفتوحًا. تستفيد هذه الطريقة من ميزة في عملية إعداد Windows 11 تستخدم إصدار Windows Server من التثبيت. على عكس إعداد Windows 11 العادي، تتخطى هذه النسخة معظم فحوصات توافق الأجهزة.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>ج: وفقًا لشركة Microsoft، يجب عليك التخلص من جهاز الكمبيوتر الخاص بك. أوصي بتثبيت Linux عليه والابتعاد عن Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>ج: المطور هو Belim، المعروف أيضًا باسم Builtbybel، الذي ساهم بالكثير من الشيفرة في مجتمع Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>انقر هنا لمعرفة المزيد عن عمل المطور.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>تنزيل عبر Fido (موصى به)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>موقع Microsoft</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>الأسئلة الشائعة (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>س: أين يمكنني الحصول على أحدث 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 الحالي إلى Windows 11 إذا كان يلبي المعايير التالية:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>للتحقق مما إذا كان جهاز Windows 10 مؤهلاً للترقية إلى Windows 11، اتبع إحدى هذه الخيارات:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>المواصفات الدنيا للأجهزة لتشغيل Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>تطبيق WhyNotWin11 لتأكيد أن جهازك يلبي الحد الأدنى من متطلبات النظام</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>يمكن الآن متابعة تثبيت Windows 11. يرجى اتباع التعليمات في نافذة الإعداد.</value>
|
||||
<comment>تثبيت</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>أنت جاهز لتثبيت Windows 11 على الأجهزة غير المدعومة! تجاهل رسالة 'Windows Server'؛ أنت جاهز!</value>
|
||||
<comment>تثبيت</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>بدء عملية الإعداد بامتيازات مرتفعة...</value>
|
||||
<comment>تثبيت</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>عذرًا! حدث خطأ ما:</value>
|
||||
<comment>تحميل</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>يتم تحميل ISO... انتظر قليلاً!</value>
|
||||
<comment>تحميل</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>فشل تحميل ISO. يرجى المحاولة مرة أخرى.</value>
|
||||
<comment>تحميل</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>تم تحميل ISO بنجاح! دعنا نجعل هذا Windows 11 جاهزًا!</value>
|
||||
<comment>تحميل</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>قريبًا! نحن نستعد للإعداد...</value>
|
||||
<comment>تثبيت</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>لم يتم العثور على ملف الإعداد في</value>
|
||||
<comment>تحميل</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>اختر من الكمبيوتر</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>Bypass patch zrušen uživatelem.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Uživatel nevybral výměné zařízení.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Nebyl vybrán USB disk pro záplatování.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Chyba při aplikování "bypass" záplaty:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Zvolená cesta není vyměnitelný disk. Prosím zvolte USB disk.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Vyberte USB disk obsahující instalační soubory Windows 11. \nTato funkce přidává kompatibilní záplatu, která obejde určité systémové požadavky. \nKompatibilní s disky připravenými jakýmkoli nástrojem, včetně Rufus. Ujistěte se, že je disk připraven!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Tímto se na vybraný USB disk použijí nastavení pro obejití kompatibility ("bypass"). Pokračovat?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Záplata pro obejití ("bypass") byla úspěšně aplikována!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Asistent pro upgrade Flyby11</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Použít záplatu pro kompatibility na ISO (čistá instalace)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Mohu upgradovat na Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Fungoval upgrade?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Přetáhněte Windows 11 ISO, abyste jej opravili a nainstalovali na nepodporovaný hardware (místní upgrade).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>O: Můžete si stáhnout nejnovější ISO z oficiálních stránek Microsoftu nebo použít Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>O: Pokud jste úspěšně nainstalovali Windows 11 a ušetřili nějaké peníze, neváhejte zde zanechat malý příspěvek jako poděkování.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Klikněte zde, abyste přispěli a vyjádřili svou podporu.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>O: Jakmile je ISO připojeno, proces instalace běží na pozadí. Instalátor Windows se spustí a provede vás kroky potřebnými k instalaci Windows 11 na váš počítač.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>O: Zkontrolujte prosím chybové zprávy a nahlaste je na GitHubu.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>O: Ano, Microsoft nechal otevřená zadní vrátka. Tato metoda využívá funkci instalačního procesu Windows 11, která používá variantu instalace Windows Server. Na rozdíl od běžné instalace Windows 11 tato varianta přeskočí většinu kontrol kompatibility hardwaru.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>O: Podle Microsoftu byste měli svůj počítač vyhodit. Doporučil bych na něj nainstalovat Linux a přejít od Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>O: Vývojářem je Belim, známý také jako Builtbybel, který přispěl velkým množstvím kódu do komunity Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Klikněte zde, abyste se dozvěděli více o práci vývojáře.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Stáhnout přes Fido (doporučeno)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Web Microsoft</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Často kladené dotazy (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>Q: Kde mohu získat nejnovější ISO Windows 11?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>Q: Jak mohu podpořit vývojáře?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>Q: Jak funguje proces instalace, jakmile je ISO připojeno?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>Q: Co když narazím na problémy během instalace?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>Q: Je legální použít tuto metodu?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>Q: Jaké mám alternativy, pokud můj počítač není podporován?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>Q: Kdo je vývojář?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Zařízení používá aktuálně podporovanou verzi Windows 10. Pokud zařízení nepoužívá podporovanou verzi Windows 10, upgradujte na podporovanou verzi Windows 10.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Zařízení splňuje...</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Stáhněte a spusťte...</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Vyberte následující zástupce Windows Update a poté vyberte tlačítko Zkontrolovat aktualizace:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Vaše zařízení nesplňuje oficiální požadavky pro Windows 11? Můžete použít kompatibilní patch, který umožní Inplace Upgrade prostřednictvím Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Stávající zařízení s Windows 10 lze upgradovat na Windows 11, pokud splňuje následující kritéria:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Chcete-li zjistit, zda je zařízení s Windows 10 způsobilé k upgradu na Windows 11, postupujte podle jedné z těchto možností:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>minimální hardwarové požadavky pro spuštění Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>Aplikace WhyNotWin11 pro potvrzení, že vaše zařízení splňuje minimální systémové požadavky.</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Instalace Windows 11 může nyní pokračovat. Postupujte prosím podle pokynů v okně nastavení.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Jste připraveni nainstalovat Windows 11 na nepodporovaný hardware! Ignorujte výzvu 'Windows Server'; jste připraveni!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Zahájení procesu instalace s vyššími oprávněními...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Jejda! Něco se pokazilo:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Připojování ISO... Vydržte!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Nepodařilo se připojit ISO. Zkuste to prosím znovu.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO úspěšně připojeno! Pojďme připravit tento Windows 11!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Skoro hotovo! Připravujeme instalaci...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Instalační soubor nebyl nalezen v...</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Vyberte z počítače.</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,277 @@
|
||||
<?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>Umgehungspatch vom Benutzer abgebrochen.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Benutzer hat versucht, ein nicht entfernbares Laufwerk auszuwählen.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Es wurde kein USB-Laufwerk für den Patch ausgewählt.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Fehler beim Anwenden des Umgehungspatches:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Der ausgewählte Pfad ist kein entfernbares Laufwerk. Bitte wähle ein USB-Laufwerk aus.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Wähle das USB-Laufwerk aus, das deine Windows 11-Installationsdateien enthält.\nDiese Funktion fügt einen Kompatibilitäts-Patch hinzu, um bestimmte Systemanforderungen zu umgehen.\nKompatibel mit Laufwerken, die mit jedem Tool vorbereitet wurden, einschließlich Rufus. Stelle sicher, dass das Laufwerk bereit ist!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Dies wird die Kompatibilitäts-Umgehungseinstellungen auf das ausgewählte USB-Laufwerk anwenden. Fortfahren?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Umgehungspatch wurde erfolgreich angewendet!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 Upgrade-Assistent</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Kompatibilitäts-Patch auf ISO anwenden (Saubere Installation)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Kann ich auf Windows 11 upgraden?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Hat das Upgrade funktioniert?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Ziehe die Windows 11 ISO hierher, um sie zu patchen und auf nicht unterstützter Hardware zu installieren (Inplace-Upgrade).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>A: Du kannst die neueste ISO von der offiziellen Microsoft-Website herunterladen oder den Fido Downloader verwenden.</value>
|
||||
</data>
|
||||
<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. Deine Unterstützung hält das Projekt am Leben – und hilft auch anderen. </value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Klicke hier, um zu spenden und deine Unterstützung zu zeigen.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>A: Sobald die ISO eingebunden ist, läuft der Setup-Prozess im Hintergrund. Der Windows-Installer startet und führt dich durch die erforderlichen Schritte, um Windows 11 auf deinem Gerät zu installieren.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>A: Bitte überprüfe die Fehlermeldungen und melde sie auf GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>A: Ja, Microsoft hat eine Hintertür offen gelassen. Diese Methode nutzt eine Funktion des Windows 11-Setup-Prozesses, die die Windows Server-Variante der Installation verwendet. Im Gegensatz zum normalen Windows 11-Setup überspringt diese Variante die meisten Hardware-Kompatibilitätsprüfungen.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>A: Laut Microsoft solltest du deinen PC wegwerfen. Ich würde empfehlen, Linux darauf zu installieren und von Windows wegzugehen.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>A: Der Entwickler ist Belim, auch bekannt als Builtbybel, der viel Code zur Windows-Community beigetragen hat.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Klicke hier, um mehr über die Arbeit des Entwicklers zu erfahren.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Herunterladen über Fido (Empfohlen)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Microsoft-Website</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Häufig gestellte Fragen (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>F: Wo kann ich die neueste Windows 11 ISO herunterladen?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>F: Wie kann ich den Entwickler unterstützen?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>F: Wie funktioniert der Setup-Prozess, sobald die ISO eingebunden ist?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>F: Was, wenn ich während der Installation auf Probleme stoße?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>F: Ist es legal, diese Methode zu verwenden?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>F: Was sind meine Alternativen, wenn mein PC nicht unterstützt wird?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>F: Wer ist der Entwickler?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Auf dem Gerät läuft eine aktuell unterstützte Version von Windows 10. Wenn auf dem Gerät aktuell keine unterstützte Version von Windows 10 läuft, führen Sie ein Upgrade auf eine unterstützte Version von Windows 10 durch.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Das Gerät erfüllt</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Prüfen mit der App</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Wählen Sie die folgende Windows Update-Verknüpfung und dann die Schaltfläche Nach Updates suchen:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Ihr Gerät erfüllt nicht die offiziellen Anforderungen für Windows 11? Sie können einen Kompatibilitätspatch anwenden, um das Inplace Upgrade über Windows Update zu ermöglichen.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Ein vorhandenes Windows 10-Gerät kann auf Windows 11 aktualisiert werden, wenn es die folgenden Kriterien erfüllt:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Um festzustellen, ob ein Windows 10-Gerät für ein Upgrade auf Windows 11 berechtigt ist, folgen Sie einer dieser Optionen:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>die Mindesthardwarespezifikationen zum Ausführen von Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11-App, um zu bestätigen, dass Ihr Gerät die Mindestsystemanforderungen erfüllt</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Die Windows 11-Installation kann jetzt fortgesetzt werden. Bitte folge den Anweisungen im Setup-Fenster.</value>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Du bist bereit, Windows 11 auf nicht unterstützter Hardware zu installieren! Einfach die Meldung „Windows Server“ ignorieren – und los geht's!</value>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Der Setup-Prozess wird mit erhöhten Berechtigungen gestartet...</value>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Ups! Da ist etwas schiefgelaufen:</value>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>ISO wird eingebunden... Bleib dran!</value>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Das Einbinden der ISO ist fehlgeschlagen. Bitte versuche es erneut.</value>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO erfolgreich eingebunden! Los geht's mit der Vorbereitung von Windows 11!</value>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Fast geschafft! Wir bereiten den Setup vor...</value>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Setup-Datei nicht gefunden in</value>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Vom Computer auswählen</value>
|
||||
</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>
|
||||
@@ -0,0 +1,281 @@
|
||||
<?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>Patch de contournement annulé par l'utilisateur.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>L'utilisateur a tenté de sélectionner un lecteur non amovible.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Aucune clé USB sélectionnée pour le correctif.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Échec de l'application du correctif de contournement :</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Le chemin sélectionné n'est pas un lecteur amovible. Veuillez sélectionner une clé USB.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Sélectionnez la clé USB contenant vos fichiers d'installation de Windows 11.\nCette fonctionnalité ajoute un correctif de compatibilité pour contourner certaines exigences système.\nCompatible avec les lecteurs préparés par n'importe quel outil, y compris Rufus. Assurez-vous que le lecteur est prêt !</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Cela appliquera les paramètres de contournement de compatibilité sur la clé USB sélectionnée. Continuer ?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Le patch de contournement a été appliqué avec succès !</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Assistant de mise à niveau Flyby11</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Appliquer le correctif de compatibilité à l'ISO (installation propre)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Puis-je passer à Windows 11 ?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>La mise à niveau a-t-elle fonctionné ?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Glissez et déposez l'ISO Windows 11 pour le corriger et l'installer sur du matériel non pris en charge (mise à niveau sur place).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>R : Vous pouvez télécharger la dernière version ISO à partir du site Web officiel de Microsoft ou utiliser Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>R : Si vous avez réussi à installer Windows 11 et à économiser de l'argent, n'hésitez pas à laisser un petit quelque chose en guise de remerciement ici.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Cliquez ici pour faire un don et montrer votre soutien.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>R : Une fois l'ISO monté, le processus d'installation s'exécute en arrière-plan. Le programme d'installation de Windows démarre et vous guide à travers les étapes requises pour installer Windows 11 sur votre ordinateur.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>R : Veuillez vérifier les messages d’erreur et les signaler sur GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>R : Oui, Microsoft a laissé une porte dérobée ouverte. Cette méthode exploite une fonctionnalité du processus d’installation de Windows 11 qui utilise la variante Windows Server de l’installation. Contrairement à l’installation standard de Windows 11, cette variante ignore la plupart des vérifications de compatibilité matérielle.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>R : Selon Microsoft, vous devriez jeter votre PC. Je vous suggère d'installer Linux dessus et d'abandonner Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>R : Le développeur est Belim, également connu sous le nom de Builtbybel, qui a contribué de nombreux codes à la communauté Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Cliquez ici pour en savoir plus sur le travail du développeur.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Télécharger via Fido (recommandé)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Site Microsoft</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Questions fréquemment posées (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>Q : Où puis-je obtenir la dernière version ISO de Windows 11 ?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>Q : Comment puis-je soutenir le développeur ?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>Q : Comment fonctionne le processus de configuration une fois l'ISO monté ?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>Q : Que faire si je rencontre des problèmes lors de l’installation ?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>Q : Est-il légal d’utiliser cette méthode ?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>Q : Quelles sont mes alternatives si mon PC n’est pas pris en charge ?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>Q : Qui est le développeur ?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. L'appareil exécute une version actuellement prise en charge de Windows 10. Si l'appareil n'exécute pas actuellement une version prise en charge de Windows 10, effectuez une mise à niveau vers une version prise en charge de Windows 10.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. L'appareil répond</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Téléchargez et exécutez le</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Sélectionnez le raccourci Windows Update suivant, puis sélectionnez le bouton Rechercher les mises à jour :</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Votre appareil ne répond pas aux exigences officielles de Windows 11 ? Vous pouvez appliquer un correctif de compatibilité pour activer la mise à niveau sur place via Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Un appareil Windows 10 existant peut être mis à niveau vers Windows 11 s'il répond aux critères suivants :</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Pour voir si un appareil Windows 10 est éligible à la mise à niveau vers Windows 11, suivez l'une de ces options :</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>les spécifications matérielles minimales pour exécuter Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>Application WhyNotWin11 pour confirmer que votre appareil répond à la configuration minimale requise</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>L'installation de Windows 11 peut maintenant commencer. Veuillez suivre les instructions dans la fenêtre d'installation.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Vous êtes prêt à installer Windows 11 sur du matériel non pris en charge ! Ignorez l'invite « Windows Server » : vous êtes prêt !</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Démarrage du processus de configuration avec des privilèges élevés...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Oups ! Une erreur s'est produite :</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Montage de l'ISO... Accrochez-vous !</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Impossible de monter l'ISO. Veuillez réessayer.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>L'ISO a été monté avec succès ! Préparons ce Windows 11 !</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Nous y sommes presque ! préparation de l'installation...</value>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Fichier d'installation introuvable dans</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>
|
||||
@@ -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>Köszönöm, hogy használja az alkalmazásomat!\n\nEzt az alkalmazást a szabadidőmben fejlesztettem ki, hogy segítsek frissíteni a Windows 10-ről a Windows 11-re - még olyan számítógépeken is, amelyek a Microsoft hardverkövetelményei szerint normál esetben nem támogatottak.\n\nAz alkalmazásom segít elkerülni az új számítógép vásárlását, és aktívan hozzájárul a felesleges elektronikai hulladék csökkentéséhez. \nNormális esetben nem számítok fel semmit a projektjeimért - sem a fejlesztésért, sem a támogatásért.\nMivel azonban ez az alkalmazás lényegesen átfogóbb, több funkciót kínál, és több támogatást igényel, hálás lennék, ha fontolóra venné egy kis önkéntes adományozás lehetőségét, ha képes rá.\nTermészetesen csak akkor, ha szeretné és megengedheti magának.\n\nSzeretne most adományozni a PayPal-on?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>Installazione patch bypass annullata dall'utente.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>L'utente ha selezionato un'unità non rimovibile.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Nessuna unità USB selezionata per l'installazione della patch.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Impossibile applicare la patch bypass:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Il percorso selezionato non è un'unità rimovibile.\nSeleziona un'unità USB.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Seleziona l'unità USB contenente i file di installazione di Windows 11.\ntQuesta funzione aggiunge una patch di compatibilità per bypassare determinati requisiti di sistema.\nÈ compatibile con le unità preparate da qualsiasi strumento, incluso Rufus.\nAssicurati che l'unità sia pronta!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Ciò applicherà le impostazioni di bypass compatibilità nell'unità USB selezionata.\nVuoi continuare?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Patch bypass applicata correttamente!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Assistente aggiornamento Flyby11</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Applica patch compatibilità a file ISO (installazione pulita)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Posso eseguire l'aggiornamento a Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>L'aggiornamento ha funzionato? Segnalacelo!</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Trascina e rilascia il file ISO di Windows per patcharlo ed installare con hardware non supportato (aggiornamento inplace).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>R: puoi scaricare la versione ISO più recente dal sito web ufficiale di Microsoft o usare il downloader di Fido.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>R: se hai installato correttamente Windows 11 e hai risparmiato un po' di soldi, non esitare a lasciare qualcosa come ringraziamento qui.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Clic qui per donare e dimostrare il tuo supporto.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>R: una volta montato il file ISO, il processo di configurazione verrà eseguito in background. Il programma di installazione di Windows si avvia, guidando i passaggi necessari per installare Windows 11 nel dispositivo.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>R: controlla i messaggi di errore e segnalali in GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>R: sì, Microsoft ha lasciato aperto un backdoor. Questo metodo sfrutta una funzione del processo di configurazione di Windows 11 che usa la variante di Windows Server dell'installazione. A differenza della normale configurazione di Windows 11, questa variante salta la maggior parte dei controlli di compatibilità hardware.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>R: secondo Microsoft, dovresti buttare via il PC. Io ti suggerisco di installarci Linux e di lasciar stare Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>R: lo sviluppatore è Belim, noto anche come Buildbybel, che ha contribuito molto al codice alla comunità di Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Fai clic qui per saperne di più sui lavori dello sviluppatore.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Scarica tramite Fido (consigliato)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Download dal sito Microsoft</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Domande frequenti (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>D: dove posso scaricare il file ISO della versione più recente di Windows 11?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>D: come posso supportare lo sviluppatore?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>D: come funziona il processo di configurazione una volta montato il file ISO?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>D: e se riscontro problemi durante l'installazione?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>D: è legale usare questo metodo?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>D: quali sono le alternative se l'hardware del PC non è supportato?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>D: chi è lo sviluppatore?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Il dispositivo contiene una versione di Windows 10 attualmente supportata. Se nel dispositivo non è attualmente in esecuzione una versione supportata di Windows 10, aggiorna ad una versione supportata di Windows 10.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Il dispositivo soddisfa</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Download ed esecuzione di</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Seleziona il collegamento di Windows Update, quindi seleziona il pulsante 'Controlla aggiornamenti':</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Il dispositivo non soddisfa i requisiti ufficiali per Windows 11? È possibile applicare una patch di compatibilità per abilitare l'aggiornamento inplace tramite Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Un dispositivo con una installazione Windows 10 esistente può essere aggiornata a Windows 11 se soddisfa i seguenti criteri:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Per vedere se un dispositivo Windows 10 è idoneo a passare a Windows 11, segui una di queste opzioni:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>Le specifiche hardware minime per eseguire Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>l'app WhyNotwin11 per confermare se il dispositivo soddisfa i requisiti minimi di sistema</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>L'installazione di Windows 11 può ora procedere. Segui le istruzioni nella finestra di configurazione.</value>
|
||||
<comment>Installa</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Sei pronto per installare Windows 11 con hardware non supportato! Ignora il prompt "Windows Server"; tutto è pronto!</value>
|
||||
<comment>Installa</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Avvio processo configurazione con privilegi elevati ...</value>
|
||||
<comment>Installa</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Oops! Qualcosa è andato storto:</value>
|
||||
<comment>Montaggio</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Montaggio file...</value>
|
||||
<comment>Montaggio</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Impossibile montare il file ISO. Riprova.</value>
|
||||
<comment>Montaggio</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>File ISO montato correttamente! Procediamo con l'installazione di Windows 11!</value>
|
||||
<comment>Montaggio</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Ci siamo quasi! Preparazione installazione ...</value>
|
||||
<comment>Installazione</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>File configurazione non trovato in</value>
|
||||
<comment>Montaggio</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Seleziona dal computer</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -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この機能は、特定のシステム要件を回避するための互換性パッチを追加します。\nRufus を含む任意のツールで準備されたドライブと互換性があります。\nドライブの準備ができていることを確認してください!</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>A: 最新の ISO は Microsoft の公式 ウェブサイトからダウンロードか、Fido Downloader が使用できます。</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>A: Windows 11 を正常にインストールできてコストが節約できた場合は、ぜひこちらで感謝の気持ちをお伝えください。</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>寄付をして開発をサポートするには、ここをクリックしてください。</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>A: ISO がマウントされるとセットアップ プロセスがバックグラウンドで実行されます。Windows インストーラーが起動し、マシンに Windows 11 をインストールするための必要な手順が案内されます。</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>A: エラーメッセージを確認して GitHub で報告してください。</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>A: はい、Microsoft は、このバックドアを開いたままにしています。この方法は、Windows Server バリアントのインストールを使用する Windows 11 セットアップ プロセスの機能を活用します。通常の Windows 11 セットアップと異なり、このバリアントはほとんどのハードウェア互換性のチェックをスキップします。</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>A: Microsoft によると PC を廃棄した方が良いそうです。Linux をインストールして Windows から離れることを推奨します。</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>A: 開発者は、Windows コミュニティに多くのコードを提供してきた、Builtbybel としても知られている Belim 氏です。</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>Q: 最新の Windows 11 ISO はどこから入手できますか?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>Q: 開発者に寄付するにはどうすればいいですか?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>Q: ISO がマウントされた後、セットアップ プロセスはどのように機能しますか?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>Q: インストール中に問題が発生した場合はどうすれば良いですか?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>Q: この方法を使用することは合法ですか?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>Q: 使用している PC がサポートされていない場合の代替手段は何でしょうか?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>Q: 開発者は誰ですか?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. デバイスで現在サポートされているバージョンの Windows 10 を実行している状態である。サポートしていない Windows 10 を実行している場合は、サポートされている Windows 10 にアップグレードしてください。</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. デバイスで</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. ダウンロードで確認</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. 次に Windows Update を選択後に「更新プログラムのチェック」ボタンを選択します:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. 使用しているデバイスは Windows 11 の要件を満たしていませんか?互換性パッチを適用して、Windows Update 経由でのインプレース アップグレードを有効化することができます。</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>既存の Windows 10 デバイスは、次の条件を満たしている場合に Windows 11 にアップグレードできます:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Windows 10 デバイスが Windows 11 にアップグレードできるかどうかを確認するには、次のいずれかのオプションに従ってください。</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>Windows 11 を実行するための最小ハードウェア仕様を確認する。</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11 で最小のシステム要件を満たしているか確認できます。</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Windows 11 のインストールを続行できます。セットアップ ウィンドウの指示に従ってください。</value>
|
||||
<comment>インストール</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>サポートされていないハードウェアに Windows 11 をインストールする準備ができました。「Windows Server」のプロンプトは無視してください。これで準備完了です!</value>
|
||||
<comment>インストール</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>昇格された権限でセットアップ プロセスを開始しています...</value>
|
||||
<comment>インストール</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>おっと!問題が発生しました:</value>
|
||||
<comment>マウント中</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>ISO をマウント中です... しばらくお待ちください!</value>
|
||||
<comment>マウント中</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>ISO のマウントに失敗しました。再度お試しください。</value>
|
||||
<comment>マウント中</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO のマウントに成功しました! Windows 11 を準備します!</value>
|
||||
<comment>マウント中</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>もうすぐです!セットアップを準備しています...</value>
|
||||
<comment>インストール</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>セットアップファイルが見つかりません</value>
|
||||
<comment>マウント中</comment>
|
||||
</data>
|
||||
<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>
|
||||
@@ -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이 기능은 특정 시스템 요구 사항을 우회하는 호환성 패치를 추가합니다.\nRufus를 포함한 모든 도구로 준비된 드라이브와 호환됩니다. 드라이브가 준비되었는지 확인하세요!</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>답변: Microsoft 공식 웹사이트에서 최신 ISO를 다운로드하거나 Fido 다운로더를 사용할 수 있습니다.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>답변: Windows 11을 성공적으로 설치하고 비용을 약간 절약했다면 감사의 표시로 여기에 작은 글을 남겨주세요.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>여기를 클릭하여 기부하고 지지를 표해주세요.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>답변: ISO가 마운트되면 설치 프로세스가 백그라운드에서 실행됩니다. Windows 설치 프로그램이 시작되어 컴퓨터에 Windows 11을 설치하는 데 필요한 단계를 안내합니다.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>답변: 오류 메시지를 확인하시고 GitHub에 보고해 주세요.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>답변: 네, Microsoft는 백도어를 열어 두었습니다. 이 방법은 Windows Server 설치 변형을 사용하는 Windows 11 설치 프로세스의 기능을 활용합니다. 일반 Windows 11 설치와 달리, 이 변형은 대부분의 하드웨어 호환성 검사를 건너뜁니다.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>답변: Microsoft에 따르면 PC는 폐기해야 한다고 합니다. 저라면 Windows에서 Linux로 바꾸고 PC를 폐기하는 것을 추천합니다.</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>질문: 내 PC가 지원되지 않는 경우 어떤 대안이 있나요?</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 장치를 Windows 11로 업그레이드할 수 있습니다.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Windows 10 장치가 Windows 11로 업그레이드할 수 있는지 확인하려면 다음 옵션 중 하나를 따르세요.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>Windows 11을 실행하기 위한 최소 하드웨어 사양.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11 앱을 사용하여 기기가 최소 시스템 요구 사항을 충족하는지 확인하세요.</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>이제 Windows 11 설치를 진행할 수 있습니다. 설치 창의 지침을 따르세요.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>지원되지 않는 하드웨어에 Windows 11을 설치할 준비가 되었습니다! 'Windows Server' 메시지는 무시하세요. 설치가 완료되었습니다!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>상승된 권한으로 설정 프로세스를 시작합니다...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>어머나! 오류가 발생했습니다.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>ISO 마운트... 잠깐만요!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>ISO를 마운트하지 못했습니다. 다시 시도해 주세요.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO가 성공적으로 마운트되었습니다! 이제 Windows 11을 준비하세요!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>거의 다 왔어요! 설치 준비를 하고 있어요...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>설치 파일을 찾을 수 없습니다</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>컴퓨터에서 선택</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -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>Omzeilingspatch geannuleerd door gebruiker.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Gebruiker probeerde een niet-verwisselbaar station te selecteren.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Geen USB-station geselecteerd voor patching.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Fout bij toepassen van omzeilingspatch:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Het geselecteerde pad is geen verwisselbaar station. Selecteer een USB-station.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Selecteer het USB-station met uw Windows 11 installatiebestanden.\nDeze functie voegt een compatibiliteitspatch toe om bepaalde systeemeisen te omzeilen.\nCompatibel met stations die zijn voorbereid met elke tool, inclusief Rufus. Zorg ervoor dat het station klaar is!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Dit zal compatibiliteits-omzeilingsinstellingen toepassen op het geselecteerde USB-station. Doorgaan?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Omzeilingspatch succesvol toegepast!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 Upgrade-assistent</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Compatibiliteitspatch toepassen op ISO (Schone installatie)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Kan ik upgraden naar Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Werkte de upgrade?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Sleep de Windows 11 ISO hierheen om het te patchen en te installeren op niet-ondersteunde hardware (In-place upgrade).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>A: U kunt de nieuwste ISO downloaden van de officiële Microsoft-website of de Fido Downloader gebruiken.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>A: Als u Windows 11 succesvol heeft geïnstalleerd en wat geld heeft bespaard, voel je vrij om hier een kleine donatie als dank achter te laten.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Klik hier om te doneren en uw steun te tonen.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>A: Zodra de ISO is gekoppeld, wordt het installatieproces op de achtergrond uitgevoerd. Het Windows-installatieprogramma start en begeleidt u door de stappen die nodig zijn om Windows 11 op uw machine te installeren.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>A: Controleer de foutmeldingen en rapporteer het op GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>A: Ja, Microsoft heeft een achterdeur open gelaten. Deze methode maakt gebruik van een functie van het Windows 11 installatieproces die de Windows Server-variant van de installatie gebruikt. In tegenstelling tot de gewone Windows 11-installatie slaat deze variant de meeste hardware-compatibiliteitscontroles over.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>A: Volgens Microsoft zou je je PC weg moeten gooien. Ik zou voorstellen om Linux erop te installeren en weg te gaan van Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>A: De ontwikkelaar is Belim, ook bekend als Builtbybel, die veel code heeft bijgedragen aan de Windows-community.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Klik hier om meer te leren over het werk van de ontwikkelaar.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Downloaden via Fido (Aanbevolen)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Microsoft-site</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Veelgestelde vragen (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>V: Waar kan ik de nieuwste Windows 11 ISO krijgen?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>V: Hoe kan ik de ontwikkelaar ondersteunen?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>V: Hoe werkt het installatieproces zodra de ISO is gekoppeld?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>V: Wat als ik problemen ondervind tijdens de installatie?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>V: Is het legaal om deze methode te gebruiken?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>V: Wat zijn mijn alternatieven als mijn PC niet wordt ondersteund?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>V: Wie is de ontwikkelaar?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Het apparaat draait een momenteel ondersteunde versie van Windows 10. Als het apparaat momenteel geen ondersteunde versie van Windows 10 draait, upgrade dan naar een ondersteunde versie van Windows 10.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Het apparaat voldoet aan</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Download en voer de</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Selecteer de volgende Windows Update-snelkoppeling en selecteer vervolgens de knop Controleren op updates:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Voldoet uw apparaat niet aan de officiële vereisten voor Windows 11? U kunt een compatibiliteitspatch toepassen om de In-place upgrade via Windows Update in te schakelen.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Een bestaand Windows 10-apparaat kan worden geüpgraded naar Windows 11 als het voldoet aan de volgende criteria:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Om te zien of een Windows 10-apparaat in aanmerking komt voor upgrade naar Windows 11, volg een van deze opties:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>de minimale hardwarespecificaties om Windows 11 uit te voeren.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11-app om te bevestigen dat uw apparaat voldoet aan de minimumsysteemvereisten</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Windows 11-installatie kan nu doorgaan. Volg de instructies in het installatievenster.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>U bent klaar om Windows 11 te installeren op niet-ondersteunde hardware! Negeer de 'Windows Server'-prompt; u bent helemaal klaar!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Het installatieproces starten met verhoogde bevoegdheden...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Oeps! Er ging iets mis:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>ISO koppelen... Hou vol!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>ISO koppelen mislukt. Probeer het opnieuw.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO succesvol gekoppeld! Laten we deze Windows 11 klaar maken!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Bijna klaar! We maken de installatie gereed...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Installatiebestand niet gevonden in</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Selecteren van computer</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value>Bedankt voor het gebruiken van mijn app! Ik heb deze applicatie in mijn vrije tijd ontwikkeld om u te helpen upgraden van Windows 10 naar Windows 11 – zelfs op PC's die volgens Microsoft's hardwarevereisten normaal gesproken niet zouden worden ondersteund. Mijn app helpt u een nieuwe computer te vermijden en draagt actief bij aan het verminderen van onnodige elektronische afval. Normaal gesproken vraag ik niets voor mijn projecten – noch voor ontwikkeling, noch voor ondersteuning. Omdat deze app echter aanzienlijk uitgebreider is, meer functies biedt en meer ondersteuning vereist, zou ik dankbaar zijn als u een kleine vrijwillige donatie zou willen overwegen, indien u dat kunt. Natuurlijk alleen als u wilt en het zich kunt veroorloven. Wilt u nu doneren op PayPal?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>Łatka pomijająca została anulowana przez użytkownika.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Użytkownik próbował wybrać niewysuwalny nośnik.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Brak wybranego nośnika USB do aplikowania łatki.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Aplikacja pomijającej łatki zakończyła się niepowodzeniem:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Wybrana ścieżka nie jest wysuwalnym nośnikiem. Wybierz nośnik USB.</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>To zaaplikuje ustawienia pomijające wymagania na tym wybranym nośniku USB. Czy chcesz kontynuować?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Łatka pomijająca wymagania systemowe została pomyślnie zaaplikowana!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 Asystent Uaktualnienia</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Zaaplikuj łatkę kompatybilności do obrazu ISO (czysta instalacja)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Czy mogę zaktualizować do Windowsa 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Czy te uaktualnienie zadziałało?</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Kliknij tutaj, aby wesprzeć mnie i okazać Twoje wsparcie.</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>O: Proszę sprawdzić wiadomości błędów i zgłosić je na GitHubie.</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Kliknij tutaj, aby dowiedzieć się więcej o pracy dewelopera.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Pobierz przez Fido (rekomendowane)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Strona Microsoftu</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Najczęściej zadawane pytanie (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>P: Gdzie mogę pobrać najnowszy obraz ISO Windowsa 11?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>P: Jak mogę wesprzeć dewelopera?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>P: Jak przebiega proces instalacji po zainstalowaniu pliku ISO?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>P: Co jeśli napotkam problemy podczas instalacji?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>P: Czy korzystanie z tej metody jest legalne?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>P: Jakie mam alternatywy, jeśli mój komputer nie jest wspierany?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>P: Kto jest deweloperem?</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Urządzenie spełnia wymagania</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Pobierz i uruchom</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>minimalne specyfikacje sprzętowe umożliwiające uruchomienie systemu Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>Aplikacja WhyNotWin11, aby potwierdzić, że urządzenie spełnia minimalne wymagania systemowe</value>
|
||||
</data>
|
||||
<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>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<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>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Rozpoczęcie procesu instalacji z podwyższonymi uprawnieniami...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Ups! Coś poszło nie tak:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Montowanie obrazu ISO... Trzymaj się mocno!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Montowanie obrazu ISO zakończyło się niepowodzeniem. Spróbuj ponownie.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>Obraz ISO został zamontowany pomyślnie! Przygotujmy Windowsa 11!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Już prawie! Przygotowujemy konfigurację, aby była gotowa...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Nie znaleziono pliku konfiguracyjnego w</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Wybierz z komputera</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -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_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>O usuário tentou selecionar uma mídia não removível.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Nenhuma unidade USB selecionada para aplicar o patch.</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Posso atualizar para o Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>A atualização funcionou?</value>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Ops! Algo deu errado:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Montando o arquivo ISO... Só um momento!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Falha ao montar o arquivo ISO. Tente de novo.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO montado com sucesso! Vamos preparar o Windows 11!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Quase lá! Estamos preparando a instalação...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Arquivo de instalação não encontrado em</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Selecionar do computador</value>
|
||||
</data>
|
||||
<data name="compPatch_debugCancel" xml:space="preserve">
|
||||
<value>Patch de bypass cancelado pelo usuário.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Falha ao aplicar patch de bypass:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>O caminho selecionado não é uma unidade removível. Selecione uma unidade USB.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Selecione a unidade USB contendo os arquivos de instalação do Windows 11.\nEste recurso adiciona um patch de compatibilidade para ignorar certos requerimentos de sistema.\nCompatível com unidades preparadas por qualquer ferramenta, incluindo o Rufus. Garanta que a unidade esteja pronta!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Isso aplicará as configurações de bypass de compatibilidade na unidade USB selecionada. Continuar?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Patch de bypass aplicado com sucesso!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Assistente de Atualização Flyby11</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Aplicar patch de compatibilidade na ISO (Instalação limpa)</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Arraste e solte a ISO do Windows 11 para aplicar o patch e instalá-lo em hardware não suportado (Atualização local).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>R: Você pode baixar o ISO mais recente do site oficial da Microsoft ou usar o Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>R: Se você instalou o Windows 11 com sucesso e economizou algum dinheiro, sinta-se à vontade para deixar algo como agradecimento aqui.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Clique aqui para doar e mostrar seu apoio.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>R: Após a montagem da ISO, o processo de instalação é executado em segundo plano. O instalador do Windows é iniciado, guiando você pelas etapas necessárias para instalar o Windows 11 na sua máquina.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>R: Verifique as mensagens de erro e informe-as no GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>R: Sim, a Microsoft deixou uma brecha. Este método aproveita um recurso do processo de instalação do Windows 11 que utiliza a variante do Windows Server. Ao contrário da instalação padrão do Windows 11, esta variante ignora a maioria das verificações de compatibilidade de hardware.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>R: Segundo a Microsoft, você deve jogar seu PC fora. Eu sugeriria instalar o Linux nele e abandonar o Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>R: O desenvolvedor se chama Belim, também conhecido como Builtbybel, que contribuiu com muito código para a comunidade Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Clique aqui para saber mais sobre o trabalho do desenvolvedor.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Baixar pelo Fido (Recomendado)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Site da Microsoft</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Perguntas Frequentes</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>P: Onde posso obter o ISO mais recente do Windows 11?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>P: Como posso apoiar o desenvolvedor?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>P: Como funciona o processo de instalação depois que a ISO é montada?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>P: E se eu tiver problemas durante a instalação?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>P: É legal usar esse método?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>P: Quais são minhas alternativas se meu PC não for compatível?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>P: Quem é o desenvolvedor?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. O dispositivo está executando uma versão atualmente compatível do Windows 10. Se o dispositivo não estiver executando uma versão compatível, atualize para uma versão que seja compatível.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. O dispositivo atende</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Baixe e execute o</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Selecione o seguinte atalho do Windows Update e então selecione o botão 'Verificar por atualizações':</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Seu dispositivo não atende aos requisitos oficiais do Windows 11? Você pode aplicar um patch de compatibilidade para habilitar a Atualização Local por meio do Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Um dispositivo Windows 10 existente pode ser atualizado para o Windows 11 se atender aos seguintes critérios:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Para verificar se um dispositivo Windows 10 está qualificado para atualização para o Windows 11, siga uma destas opções:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>as especificações mínimas de hardware para executar o Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>aplicativo WhyNotWin11 para confirmar se seu dispositivo atende aos requisitos mínimos do sistema.</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>A instalação do Windows 11 já pode prosseguir. Siga as instruções na janela de instalação.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Você está pronto para instalar o Windows 11 em hardware não suportado! Ignore o prompt "Windows Server"; está tudo pronto!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Iniciando o processo de instalação com privilégios de administrador...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value>Obrigado por usar meu aplicativo!\n\nDesenvolvi este aplicativo no meu tempo livre para ajudar você a atualizar do Windows 10 para o Windows 11, mesmo em PCs que, de acordo com os requisitos de hardware da Microsoft, normalmente não seriam suportados.\n\nMeu aplicativo ajuda você a evitar a compra de um novo computador e contribui ativamente para reduzir o lixo eletrônico desnecessário.\n\nNormalmente, não cobro nada pelos meus projetos, nem pelo desenvolvimento nem pelo suporte.\nNo entanto, como este aplicativo é significativamente mais abrangente, oferece mais recursos e requer mais suporte, eu agradeceria se você considerasse fazer uma pequena doação voluntária, se puder.\n\nClaro, somente se você quiser e puder pagar.\n\nGostaria de doar no PayPal agora?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>Bypass patch canceled by user.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>User attempted to select a non-removable drive.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>No USB drive selected for patching.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Failed to apply bypass patch:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>The selected path is not a removable drive. Please select a USB drive.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Select the USB drive containing your Windows 11 installation files.\nThis feature adds a compatibility patch to bypass certain system requirements.\nCompatible with drives prepared by any tool, including Rufus. Ensure the drive is ready!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>This will apply compatibility bypass settings on the selected USB drive. Continue?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Bypass patch applied successfully!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 Upgrading Assistant</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Apply Compatibility Patch to ISO (Clean Install)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Can I upgrade to Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Did the upgrade work?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Drag and drop the Windows 11 ISO to patch it and install on unsupported hardware (Inplace Upgrade).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>A: You can download the latest ISO from the official Microsoft website or use the Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>A: If you've successfully installed Windows 11 and saved some money, feel free to leave a little something as a thank-you here.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Click here to donate and show your support.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>A: Please check the error messages and report it on GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>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.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>A: According to Microsoft, you should throw your PC away. I would suggest installing Linux on it and moving away from Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>A: The developer is Belim, also known as Builtbybel, who has contributed a lot of code to the Windows community.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Click here to learn more about the developer's work.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Download via Fido (Recommended)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Microsoft Site</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Frequently Asked Questions (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>Q: Where can I get the latest Windows 11 ISO?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>Q: How can I support the developer?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>Q: How does the setup process work once the ISO is mounted?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>Q: What if I encounter issues during installation?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>Q: Is it legal to use this method?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>Q: What are my alternatives if my PC is not supported?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>Q: Who is the developer?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. The device is running a currently supported version of Windows 10. If the device isn't currently running a supported version of Windows 10, upgrade to a supported version of Windows 10.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. The device meets</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Download and run the</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Select the following Windows Update shortcut and then select the Check for updates button:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Your device does not meet the official requirements for Windows 11? You can apply a compatibility patch to enable the Inplace Upgrade via Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>An existing Windows 10 device can be upgraded to Windows 11 if it meets the following criteria:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>To see if a Windows 10 device is eligible to upgrade to Windows 11, follow one of these options:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>the minimum hardware specifications to run Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11 app to confirm your device meets the minimum system requirements</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Windows 11 installation can now proceed. Please follow the instructions in the setup window.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>You're ready to install Windows 11 on unsupported hardware! Ignore the 'Windows Server' prompt; you're all set!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Starting the setup process with elevated privileges...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Oops! Something went wrong:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Mounting the ISO... Hang tight!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Failed to mount the ISO. Please try again.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO mounted successfully! Let's get this Windows 11 ready!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Almost there! We're getting the setup ready...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Setup file not found in</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Select from computer</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>
|
||||
@@ -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>Förbikoppling avbruten av användaren.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Användaren försökte välja en icke flyttbar enhet.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Ingen USB-enhet har valts för modifiering.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Det gick inte att utföra modifieringen av förbikopplingen:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Den valda sökvägen är inte en flyttbar enhet. Välj en USB-enhet.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Välj USB-enheten som innehåller dina Windows 11-installationsfiler.\nDen här funktionen lägger till en kompatibilitetsändring för att kringgå vissa systemkrav.\nKompatibel med enheter förberedda av alla verktyg, inklusive Rufus. Se till att enheten är klar!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Detta kommer att verkställa ändringar för förbikoppling av kompatibilitet på den valda USB-enheten. Fortsätta?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Förbikoppling klar!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 uppgraderingsassistent</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Applicera kompatibilitetskorrigering på ISO-filen (ren installation)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Kan jag uppgradera till Windows 11?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Fungerade uppgraderingen?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Dra och släpp Windows 11 ISO-filen för att förbikoppla och installera den på hårdvara som inte stöds (uppgradering på plats).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>A: Du kan ladda ner den senaste ISO-filen från den officiella Microsoft-webbplatsen eller använda Fido Downloader.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>A: Om du lyckas installera Windows 11 och sparat lite pengar, lämna gärna något som tack för hjälpen här.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Klicka här för att donera och visa ditt stöd.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>A: När ISO-filen är monterad körs installationsprocessen i bakgrunden. Windows-installationsprogrammet startar och guidar dig genom stegen som krävs för att installera Windows 11 på din dator.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>A: Kontrollera felmeddelandena och rapportera det på GitHub.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>A: Ja, Microsoft har lämnat en bakdörr öppen. Den här metoden utnyttjar en funktion i installationsprocessen för Windows 11 som använder Windows Server-varianten av installationen. Till skillnad från den vanliga Windows 11-installationen hoppar denna variant över de flesta kontroller av hårdvarukompatibilitet.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>A: Enligt Microsoft bör du slänga din dator. Jag skulle föreslå att du installerar Linux på den och överger Windows.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>A: Utvecklaren är Belim även känd som Builtbybel som har bidragit med mycket kod till Windows-communityt.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Klicka här för att lära dig mer om utvecklarens arbete.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Ladda ner via Fido (rekommenderas)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Microsofts webbplats</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Vanliga frågor (FAQ)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>Q: Var kan jag få tag i den senaste ISO-filen med Windows 11?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>Q: Hur kan jag stöda utvecklaren?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>Q: Hur fungerar installationsprocessen när ISO-filen är monterad?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>Q: Vad händer om jag stöter på problem under installationen?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>Q: Är det lagligt att använda denna metoden?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>Q: Vilka är mina alternativ om min dator inte stöds?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>Q: Vem är utvecklaren?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Enheten kör en version av Windows 10 som stöds för närvarande. Om enheten för närvarande inte kör en version av Windows 10 som stöds, uppgradera till en version av Windows 10 som stöds.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Enheten uppfyller</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. Ladda ner och kör</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Välj följande genväg för Windows Update och välj sedan knappen sök efter uppdateringar:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Din enhet uppfyller inte de officiella kraven för Windows 11? Du kan använda en kompatibilitetskorrigering för att aktivera uppgradering på plats via Windows Update.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>En befintlig Windows 10-enhet kan uppgraderas till Windows 11 om den uppfyller följande kriterier:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>För att kontrollera om en Windows 10-enhet är lämplig att uppgradera till Windows 11, följ ett av dessa alternativ:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>de minsta hårdvaruspecifikationerna för att köra Windows 11.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>WhyNotWin11-appen för att bekräfta att din enhet uppfyller de lägsta systemkraven</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Installationen av Windows 11 kan nu fortsätta. Följ instruktionerna i installationsfönstret.</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Du är redo att installera Windows 11 på hårdvaran som inte stöds! Ignorera fönstret om 'Windows Server'; du är klar!</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Startar installationsprocessen med förhöjda privilegier...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Hoppsan! Något gick fel:</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>Monterar ISO-filen... Snart klart!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>Det gick inte att montera ISO-filen. Försök igen.</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO-filen monterad! Låt oss göra Windows 11 klar!</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Nästan där! Vi förbereder installationen...</value>
|
||||
<comment>Install</comment>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Installationsfilen hittades inte i</value>
|
||||
<comment>Mounting</comment>
|
||||
</data>
|
||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||
<value>Välj från datorn</value>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,281 @@
|
||||
<?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>Baypas yaması kullanıcı tarafından iptal edildi.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNotRemovableDrive" xml:space="preserve">
|
||||
<value>Kullanıcı çıkarılamayan bir sürücü seçmeye çalıştı.</value>
|
||||
</data>
|
||||
<data name="compPatch_debugNoUSBDrive" xml:space="preserve">
|
||||
<value>Yama için USB sürücüsü seçilmedi.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgFailedEx" xml:space="preserve">
|
||||
<value>Baypas yaması uygulanamadı:</value>
|
||||
</data>
|
||||
<data name="compPatch_msgNotRemovableDrive" xml:space="preserve">
|
||||
<value>Seçilen yol çıkarılabilir bir sürücü değil. Lütfen bir USB sürücüsü seçin.</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDrive" xml:space="preserve">
|
||||
<value>Windows 11 kurulum dosyalarınızı içeren USB sürücüsünü seçin.\nBu özellik, belirli sistem gereksinimlerini atlatmak için bir uyumluluk yaması ekler.\nRufus dahil olmak üzere herhangi bir araç tarafından hazırlanan sürücülerle uyumludur. Sürücünün hazır olduğundan emin olun!</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSelectDriveConfirm" xml:space="preserve">
|
||||
<value>Bu, seçili USB sürücüsünde uyumluluk atlama ayarlarını uygulayacaktır. Devam etmek istiyor musunuz?</value>
|
||||
</data>
|
||||
<data name="compPatch_msgSuccess" xml:space="preserve">
|
||||
<value>Baypas yaması başarıyla uygulandı!</value>
|
||||
</data>
|
||||
<data name="ctl_FormTitle" xml:space="preserve">
|
||||
<value>Flyby11 Yükseltme Asistanı</value>
|
||||
</data>
|
||||
<data name="ctl_inkCompPatch" xml:space="preserve">
|
||||
<value>Uyumluluk Yaması'nı ISO'ya Uygula (Temiz Kurulum)</value>
|
||||
</data>
|
||||
<data name="ctl_linkCiuv" xml:space="preserve">
|
||||
<value>Windows 11'e yükseltebilir miyim?</value>
|
||||
</data>
|
||||
<data name="ctl_linkVote" xml:space="preserve">
|
||||
<value>Yükseltme işe yaradı mı?</value>
|
||||
</data>
|
||||
<data name="ctl_statusLabel" xml:space="preserve">
|
||||
<value>Windows 11 ISO'yu sürükleyip bırakarak yama yapın ve desteklenmeyen donanımlara yükleyin (Yerinde Yükseltme).</value>
|
||||
</data>
|
||||
<data name="faq_a1" xml:space="preserve">
|
||||
<value>C: En son ISO'yu resmi Microsoft web sitesinden indirebilir veya Fido Downloader'ı kullanabilirsiniz.</value>
|
||||
</data>
|
||||
<data name="faq_a2" xml:space="preserve">
|
||||
<value>C: Windows 11'i başarıyla kurduysanız ve biraz para biriktirdiyseniz, buraya teşekkür amaçlı küçük bir şey bırakmaktan çekinmeyin.</value>
|
||||
</data>
|
||||
<data name="faq_a2Link" xml:space="preserve">
|
||||
<value>Bağışta bulunmak ve desteğinizi göstermek için buraya tıklayın.</value>
|
||||
</data>
|
||||
<data name="faq_a3" xml:space="preserve">
|
||||
<value>C: ISO yüklendikten sonra kurulum süreci arka planda çalışır. Windows yükleyicisi başlar ve makinenize Windows 11'i yüklemek için gereken adımlarda size rehberlik eder.</value>
|
||||
</data>
|
||||
<data name="faq_a4" xml:space="preserve">
|
||||
<value>C: Lütfen hata mesajlarını kontrol edin ve GitHub'a bildirin.</value>
|
||||
</data>
|
||||
<data name="faq_a5" xml:space="preserve">
|
||||
<value>C: Evet, Microsoft bir arka kapıyı açık bıraktı. Bu yöntem, kurulumun Windows Server varyantını kullanan Windows 11 kurulum sürecinin bir özelliğinden yararlanır. Normal Windows 11 kurulumunun aksine, bu varyant çoğu donanım uyumluluk denetimini atlar.</value>
|
||||
</data>
|
||||
<data name="faq_a6" xml:space="preserve">
|
||||
<value>C: Microsoft'a göre, bilgisayarınızı atmalısınız. Ben ona Linux kurmanızı ve Windows'tan uzaklaşmanızı öneririm.</value>
|
||||
</data>
|
||||
<data name="faq_a7" xml:space="preserve">
|
||||
<value>C: Geliştirici, Windows topluluğuna çok sayıda kod katkıda bulunan, aynı zamanda Builtbybel olarak da bilinen Belim'dir.</value>
|
||||
</data>
|
||||
<data name="faq_a7Link" xml:space="preserve">
|
||||
<value>Geliştiricinin çalışmaları hakkında daha fazla bilgi edinmek için buraya tıklayın.</value>
|
||||
</data>
|
||||
<data name="faq_downloadFido" xml:space="preserve">
|
||||
<value>Fido üzerinden indirin (Önerilen)</value>
|
||||
</data>
|
||||
<data name="faq_downloadMS" xml:space="preserve">
|
||||
<value>Microsoft Site</value>
|
||||
</data>
|
||||
<data name="faq_header" xml:space="preserve">
|
||||
<value>Sıkça Sorulan Sorular (SSS)</value>
|
||||
</data>
|
||||
<data name="faq_q1" xml:space="preserve">
|
||||
<value>S: En son Windows 11 ISO'sunu nereden edinebilirim?</value>
|
||||
</data>
|
||||
<data name="faq_q2" xml:space="preserve">
|
||||
<value>S: Geliştiriciye nasıl destek olabilirim?</value>
|
||||
</data>
|
||||
<data name="faq_q3" xml:space="preserve">
|
||||
<value>S: ISO yüklendikten sonra kurulum süreci nasıl işliyor?</value>
|
||||
</data>
|
||||
<data name="faq_q4" xml:space="preserve">
|
||||
<value>S: Kurulum sırasında sorunlarla karşılaşırsam ne olur?</value>
|
||||
</data>
|
||||
<data name="faq_q5" xml:space="preserve">
|
||||
<value>S: Bu yöntemi kullanmak yasal mı?</value>
|
||||
</data>
|
||||
<data name="faq_q6" xml:space="preserve">
|
||||
<value>S: Bilgisayarım desteklenmiyorsa alternatiflerim nelerdir?</value>
|
||||
</data>
|
||||
<data name="faq_q7" xml:space="preserve">
|
||||
<value>S: Geliştirici kimdir?</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns" xml:space="preserve">
|
||||
<value>1. Cihaz şu anda desteklenen bir Windows 10 sürümü çalıştırıyor. Cihaz şu anda desteklenen bir Windows 10 sürümü çalıştırmıyorsa, desteklenen bir Windows 10 sürümüne yükseltin.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns2" xml:space="preserve">
|
||||
<value>2. Cihaz karşılar</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns3" xml:space="preserve">
|
||||
<value>1. İndirin ve çalıştırın</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns4" xml:space="preserve">
|
||||
<value>2. Aşağıdaki Windows Update kısayolunu seçin ve ardından Güncelleştirmeleri denetle düğmesini seçin:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtAns5" xml:space="preserve">
|
||||
<value>3. Cihazınız Windows 11'in resmi gereksinimlerini karşılamıyor mu? Windows Update aracılığıyla Yerinde Yükseltmeyi etkinleştirmek için bir uyumluluk yaması uygulayabilirsiniz.</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr" xml:space="preserve">
|
||||
<value>Mevcut bir Windows 10 cihazı, aşağıdaki ölçütleri karşılıyorsa Windows 11'e yükseltilebilir:</value>
|
||||
</data>
|
||||
<data name="ciuView_lblPtHdr2" xml:space="preserve">
|
||||
<value>Bir Windows 10 cihazının Windows 11'e yükseltmeye uygun olup olmadığını görmek için şu seçeneklerden birini izleyin:</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns2" xml:space="preserve">
|
||||
<value>Windows 11'i çalıştırmak için gereken minimum donanım özellikleri.</value>
|
||||
</data>
|
||||
<data name="ciuView_linkPtAns3" xml:space="preserve">
|
||||
<value>Cihazınızın minimum sistem gereksinimlerini karşıladığını doğrulamak için WhyNotWin11 uygulaması</value>
|
||||
</data>
|
||||
<data name="msg_InstallReady" xml:space="preserve">
|
||||
<value>Windows 11 kurulumu artık devam edebilir. Lütfen kurulum penceresindeki talimatları izleyin.</value>
|
||||
<comment>Kur</comment>
|
||||
</data>
|
||||
<data name="_debugInstallReady" xml:space="preserve">
|
||||
<value>Desteklenmeyen donanıma Windows 11 yüklemeye hazırsınız! 'Windows Server' istemini görmezden gelin; artık hazırsınız!</value>
|
||||
<comment>Kur</comment>
|
||||
</data>
|
||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||
<value>Kurulum süreci yükseltilmiş ayrıcalıklarla başlatılıyor...</value>
|
||||
<comment>Kur</comment>
|
||||
</data>
|
||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||
<value>Oops! Bir şeyler ters gitti:</value>
|
||||
<comment>Yükle</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMounting" xml:space="preserve">
|
||||
<value>ISO montajı... Sıkı durun!</value>
|
||||
<comment>Yükle</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||
<value>ISO bağlanamadı. Lütfen tekrar deneyin.</value>
|
||||
<comment>Yükle</comment>
|
||||
</data>
|
||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||
<value>ISO başarıyla bağlandı! Hadi Windows 11'i hazırlayalım!</value>
|
||||
<comment>Yükle</comment>
|
||||
</data>
|
||||
<data name="_debugStatusRunning" xml:space="preserve">
|
||||
<value>Neredeyse bitti! Kurulumu hazırlıyoruz...</value>
|
||||
</data>
|
||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||
<value>Kurulum dosyası bulunamadı</value>
|
||||
<comment>Yükle</comment>
|
||||
</data>
|
||||
<data name="msgClosing" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
</root>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public class Logger
|
||||
{
|
||||
private MainForm mainForm;
|
||||
|
||||
public Logger(MainForm mainForm)
|
||||
{
|
||||
this.mainForm = mainForm ?? throw new ArgumentNullException(nameof(mainForm));
|
||||
}
|
||||
|
||||
// Log method for a single string
|
||||
public void Log(string message, Color color, float fontSize = 10.5f)
|
||||
{
|
||||
if (mainForm.InvokeRequired)
|
||||
{
|
||||
mainForm.Invoke(new Action(() => Log(message, color, fontSize)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
AppendMessageToConversation(message, color, fontSize); // Append message to conversation
|
||||
}
|
||||
|
||||
private void AppendMessageToConversation(string message, Color color, float fontSize)
|
||||
{
|
||||
Label statusLabel = mainForm.Controls.Find("statusLabel", true).FirstOrDefault() as Label;
|
||||
|
||||
if (statusLabel != null)
|
||||
{
|
||||
statusLabel.Text = "";
|
||||
statusLabel.Text += "\r\n" + message;
|
||||
statusLabel.ForeColor = color;
|
||||
statusLabel.Font = new Font(statusLabel.Font.FontFamily, fontSize);
|
||||
statusLabel.TextAlign = ContentAlignment.MiddleCenter;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Generated
+117
-210
@@ -1,4 +1,4 @@
|
||||
namespace FlybyScript
|
||||
namespace Flyby11
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
@@ -28,253 +28,160 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.rtbDescription = new System.Windows.Forms.RichTextBox();
|
||||
this.btnTogglePatch = new System.Windows.Forms.Button();
|
||||
this.linkGitHub = new System.Windows.Forms.LinkLabel();
|
||||
this.btnMountRun = new System.Windows.Forms.Button();
|
||||
this.lblHeader = new System.Windows.Forms.Label();
|
||||
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
||||
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
|
||||
this.panelDragDrop = new System.Windows.Forms.Panel();
|
||||
this.dropdownOptions = new System.Windows.Forms.ComboBox();
|
||||
this.btnExperience = new System.Windows.Forms.Button();
|
||||
this.statusLabel = new System.Windows.Forms.Label();
|
||||
this.panelFAQ = new System.Windows.Forms.Panel();
|
||||
this.panelContainer = new System.Windows.Forms.Panel();
|
||||
this.panelMain = new System.Windows.Forms.Panel();
|
||||
this.treeSettings = new System.Windows.Forms.TreeView();
|
||||
this.checkInstallationMedia = new System.Windows.Forms.CheckBox();
|
||||
this.linkChangeExperience = new System.Windows.Forms.LinkLabel();
|
||||
this.panelForm = new System.Windows.Forms.Panel();
|
||||
this.chkAdvancedMode = new System.Windows.Forms.CheckBox();
|
||||
this.panelDragDrop.SuspendLayout();
|
||||
this.panelContainer.SuspendLayout();
|
||||
this.panelMain.SuspendLayout();
|
||||
this.panelForm.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// rtbDescription
|
||||
// panelDragDrop
|
||||
//
|
||||
this.rtbDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.rtbDescription.BackColor = System.Drawing.Color.White;
|
||||
this.rtbDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.rtbDescription.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.rtbDescription.ForeColor = System.Drawing.Color.Black;
|
||||
this.rtbDescription.Location = new System.Drawing.Point(34, 346);
|
||||
this.rtbDescription.Name = "rtbDescription";
|
||||
this.rtbDescription.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||
this.rtbDescription.Size = new System.Drawing.Size(867, 123);
|
||||
this.rtbDescription.TabIndex = 199;
|
||||
this.rtbDescription.TabStop = false;
|
||||
this.rtbDescription.Text = "";
|
||||
this.panelDragDrop.AllowDrop = true;
|
||||
this.panelDragDrop.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.panelDragDrop.BackColor = System.Drawing.Color.Transparent;
|
||||
this.panelDragDrop.Controls.Add(this.dropdownOptions);
|
||||
this.panelDragDrop.Controls.Add(this.btnExperience);
|
||||
this.panelDragDrop.Controls.Add(this.statusLabel);
|
||||
this.panelDragDrop.Location = new System.Drawing.Point(57, 190);
|
||||
this.panelDragDrop.Name = "panelDragDrop";
|
||||
this.panelDragDrop.Size = new System.Drawing.Size(436, 256);
|
||||
this.panelDragDrop.TabIndex = 0;
|
||||
this.panelDragDrop.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelDragDrop_DragDrop);
|
||||
this.panelDragDrop.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelDragDrop_DragEnter);
|
||||
this.panelDragDrop.Paint += new System.Windows.Forms.PaintEventHandler(this.panelDragDrop_Paint);
|
||||
//
|
||||
// btnTogglePatch
|
||||
// dropdownOptions
|
||||
//
|
||||
this.btnTogglePatch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnTogglePatch.BackColor = System.Drawing.Color.White;
|
||||
this.btnTogglePatch.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnTogglePatch.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnTogglePatch.FlatAppearance.BorderSize = 2;
|
||||
this.btnTogglePatch.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnTogglePatch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnTogglePatch.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnTogglePatch.Location = new System.Drawing.Point(629, 484);
|
||||
this.btnTogglePatch.Name = "btnTogglePatch";
|
||||
this.btnTogglePatch.Size = new System.Drawing.Size(222, 40);
|
||||
this.btnTogglePatch.TabIndex = 201;
|
||||
this.btnTogglePatch.TabStop = false;
|
||||
this.btnTogglePatch.Text = "Start";
|
||||
this.btnTogglePatch.UseCompatibleTextRendering = true;
|
||||
this.btnTogglePatch.UseVisualStyleBackColor = false;
|
||||
this.btnTogglePatch.Click += new System.EventHandler(this.btnTogglePatch_Click);
|
||||
this.dropdownOptions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.dropdownOptions.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.dropdownOptions.Font = new System.Drawing.Font("Segoe UI Variable Display", 11.5F);
|
||||
this.dropdownOptions.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(26)))), ((int)(((byte)(26)))));
|
||||
this.dropdownOptions.FormattingEnabled = true;
|
||||
this.dropdownOptions.Location = new System.Drawing.Point(51, 205);
|
||||
this.dropdownOptions.Name = "dropdownOptions";
|
||||
this.dropdownOptions.Size = new System.Drawing.Size(348, 28);
|
||||
this.dropdownOptions.TabIndex = 507;
|
||||
this.dropdownOptions.SelectedIndexChanged += new System.EventHandler(this.dropdownOptions_SelectedIndexChanged);
|
||||
//
|
||||
// linkGitHub
|
||||
// btnExperience
|
||||
//
|
||||
this.linkGitHub.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkGitHub.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.linkGitHub.AutoEllipsis = true;
|
||||
this.linkGitHub.AutoSize = true;
|
||||
this.linkGitHub.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.75F);
|
||||
this.linkGitHub.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkGitHub.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(65)))), ((int)(((byte)(17)))));
|
||||
this.linkGitHub.Location = new System.Drawing.Point(167, 558);
|
||||
this.linkGitHub.Name = "linkGitHub";
|
||||
this.linkGitHub.Size = new System.Drawing.Size(45, 16);
|
||||
this.linkGitHub.TabIndex = 202;
|
||||
this.linkGitHub.TabStop = true;
|
||||
this.linkGitHub.Text = "GitHub";
|
||||
this.linkGitHub.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkGitHub_LinkClicked);
|
||||
this.btnExperience.AutoEllipsis = true;
|
||||
this.btnExperience.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(239)))), ((int)(((byte)(237)))));
|
||||
this.btnExperience.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExperience.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(141)))), ((int)(((byte)(141)))), ((int)(((byte)(141)))));
|
||||
this.btnExperience.FlatAppearance.BorderSize = 0;
|
||||
this.btnExperience.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Gainsboro;
|
||||
this.btnExperience.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 12F, System.Drawing.FontStyle.Bold);
|
||||
this.btnExperience.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(26)))), ((int)(((byte)(26)))));
|
||||
this.btnExperience.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.btnExperience.Location = new System.Drawing.Point(21, 195);
|
||||
this.btnExperience.Name = "btnExperience";
|
||||
this.btnExperience.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
|
||||
this.btnExperience.Size = new System.Drawing.Size(387, 49);
|
||||
this.btnExperience.TabIndex = 506;
|
||||
this.btnExperience.TabStop = false;
|
||||
this.btnExperience.UseCompatibleTextRendering = true;
|
||||
this.btnExperience.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// btnMountRun
|
||||
// statusLabel
|
||||
//
|
||||
this.btnMountRun.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnMountRun.AutoEllipsis = true;
|
||||
this.btnMountRun.BackColor = System.Drawing.Color.White;
|
||||
this.btnMountRun.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnMountRun.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.btnMountRun.FlatAppearance.BorderSize = 2;
|
||||
this.btnMountRun.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnMountRun.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnMountRun.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnMountRun.Location = new System.Drawing.Point(403, 484);
|
||||
this.btnMountRun.Name = "btnMountRun";
|
||||
this.btnMountRun.Size = new System.Drawing.Size(220, 40);
|
||||
this.btnMountRun.TabIndex = 203;
|
||||
this.btnMountRun.TabStop = false;
|
||||
this.btnMountRun.Text = "Mount and Run ISO";
|
||||
this.btnMountRun.UseVisualStyleBackColor = false;
|
||||
this.btnMountRun.Click += new System.EventHandler(this.btnMountRun_Click);
|
||||
this.statusLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.statusLabel.AutoEllipsis = true;
|
||||
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.Location = new System.Drawing.Point(39, 35);
|
||||
this.statusLabel.Name = "statusLabel";
|
||||
this.statusLabel.Size = new System.Drawing.Size(352, 142);
|
||||
this.statusLabel.TabIndex = 0;
|
||||
this.statusLabel.Text = "Move ISO here";
|
||||
this.statusLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.statusLabel.UseCompatibleTextRendering = true;
|
||||
//
|
||||
// lblHeader
|
||||
// panelFAQ
|
||||
//
|
||||
this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblHeader.AutoEllipsis = true;
|
||||
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 21.25F);
|
||||
this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(115)))), ((int)(((byte)(193)))));
|
||||
this.lblHeader.Location = new System.Drawing.Point(30, 38);
|
||||
this.lblHeader.Name = "lblHeader";
|
||||
this.lblHeader.Size = new System.Drawing.Size(780, 82);
|
||||
this.lblHeader.TabIndex = 205;
|
||||
this.lblHeader.Text = "Use FlybyScript to bypass Windows 11 restrictions and install on unsupported devi" +
|
||||
"ces";
|
||||
this.panelFAQ.AutoScroll = true;
|
||||
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.Location = new System.Drawing.Point(589, 0);
|
||||
this.panelFAQ.Name = "panelFAQ";
|
||||
this.panelFAQ.Size = new System.Drawing.Size(331, 609);
|
||||
this.panelFAQ.TabIndex = 207;
|
||||
//
|
||||
// linkLabel1
|
||||
// panelContainer
|
||||
//
|
||||
this.linkLabel1.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.linkLabel1.AutoEllipsis = true;
|
||||
this.linkLabel1.AutoSize = true;
|
||||
this.linkLabel1.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.75F);
|
||||
this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkLabel1.LinkColor = System.Drawing.Color.Gray;
|
||||
this.linkLabel1.Location = new System.Drawing.Point(31, 558);
|
||||
this.linkLabel1.Name = "linkLabel1";
|
||||
this.linkLabel1.Size = new System.Drawing.Size(119, 16);
|
||||
this.linkLabel1.TabIndex = 206;
|
||||
this.linkLabel1.TabStop = true;
|
||||
this.linkLabel1.Text = "A Belim app creation";
|
||||
//
|
||||
// linkLabel2
|
||||
//
|
||||
this.linkLabel2.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.linkLabel2.AutoEllipsis = true;
|
||||
this.linkLabel2.AutoSize = true;
|
||||
this.linkLabel2.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.75F);
|
||||
this.linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkLabel2.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(186)))), ((int)(((byte)(0)))));
|
||||
this.linkLabel2.Location = new System.Drawing.Point(233, 558);
|
||||
this.linkLabel2.Name = "linkLabel2";
|
||||
this.linkLabel2.Size = new System.Drawing.Size(51, 16);
|
||||
this.linkLabel2.TabIndex = 208;
|
||||
this.linkLabel2.TabStop = true;
|
||||
this.linkLabel2.Text = "0.14.107";
|
||||
this.panelContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232)))));
|
||||
this.panelContainer.Controls.Add(this.panelMain);
|
||||
this.panelContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelContainer.Name = "panelContainer";
|
||||
this.panelContainer.Size = new System.Drawing.Size(589, 609);
|
||||
this.panelContainer.TabIndex = 209;
|
||||
//
|
||||
// panelMain
|
||||
//
|
||||
this.panelMain.Controls.Add(this.treeSettings);
|
||||
this.panelMain.Controls.Add(this.checkInstallationMedia);
|
||||
this.panelMain.Controls.Add(this.linkLabel2);
|
||||
this.panelMain.Controls.Add(this.linkChangeExperience);
|
||||
this.panelMain.Controls.Add(this.lblHeader);
|
||||
this.panelMain.Controls.Add(this.linkLabel1);
|
||||
this.panelMain.Controls.Add(this.rtbDescription);
|
||||
this.panelMain.Controls.Add(this.btnMountRun);
|
||||
this.panelMain.Controls.Add(this.btnTogglePatch);
|
||||
this.panelMain.Controls.Add(this.linkGitHub);
|
||||
this.panelMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelMain.Name = "panelMain";
|
||||
this.panelMain.Size = new System.Drawing.Size(943, 592);
|
||||
this.panelMain.TabIndex = 209;
|
||||
//
|
||||
// treeSettings
|
||||
//
|
||||
this.treeSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
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.treeSettings.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.treeSettings.CheckBoxes = true;
|
||||
this.treeSettings.Font = new System.Drawing.Font("Segoe UI Variable Text Light", 11.25F);
|
||||
this.treeSettings.FullRowSelect = true;
|
||||
this.treeSettings.HotTracking = true;
|
||||
this.treeSettings.Location = new System.Drawing.Point(36, 168);
|
||||
this.treeSettings.Name = "treeSettings";
|
||||
this.treeSettings.ShowLines = false;
|
||||
this.treeSettings.ShowNodeToolTips = true;
|
||||
this.treeSettings.ShowPlusMinus = false;
|
||||
this.treeSettings.Size = new System.Drawing.Size(865, 172);
|
||||
this.treeSettings.TabIndex = 210;
|
||||
this.treeSettings.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeSettings_AfterCheck);
|
||||
this.treeSettings.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeSettings_NodeMouseClick);
|
||||
this.panelMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
|
||||
this.panelMain.Controls.Add(this.chkAdvancedMode);
|
||||
this.panelMain.Controls.Add(this.panelDragDrop);
|
||||
this.panelMain.Location = new System.Drawing.Point(5, 3);
|
||||
this.panelMain.Name = "panelMain";
|
||||
this.panelMain.Size = new System.Drawing.Size(580, 596);
|
||||
this.panelMain.TabIndex = 1;
|
||||
//
|
||||
// checkInstallationMedia
|
||||
// chkAdvancedMode
|
||||
//
|
||||
this.checkInstallationMedia.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.checkInstallationMedia.AutoSize = true;
|
||||
this.checkInstallationMedia.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.checkInstallationMedia.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.checkInstallationMedia.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.checkInstallationMedia.Location = new System.Drawing.Point(34, 527);
|
||||
this.checkInstallationMedia.Name = "checkInstallationMedia";
|
||||
this.checkInstallationMedia.Size = new System.Drawing.Size(249, 18);
|
||||
this.checkInstallationMedia.TabIndex = 209;
|
||||
this.checkInstallationMedia.Text = "I want to create Windows 11 installation media";
|
||||
this.checkInstallationMedia.UseVisualStyleBackColor = true;
|
||||
this.checkInstallationMedia.CheckedChanged += new System.EventHandler(this.checkInstallationMedia_CheckedChanged);
|
||||
//
|
||||
// linkChangeExperience
|
||||
//
|
||||
this.linkChangeExperience.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkChangeExperience.AutoEllipsis = true;
|
||||
this.linkChangeExperience.AutoSize = true;
|
||||
this.linkChangeExperience.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.linkChangeExperience.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkChangeExperience.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.linkChangeExperience.Location = new System.Drawing.Point(33, 139);
|
||||
this.linkChangeExperience.Name = "linkChangeExperience";
|
||||
this.linkChangeExperience.Size = new System.Drawing.Size(209, 16);
|
||||
this.linkChangeExperience.TabIndex = 1;
|
||||
this.linkChangeExperience.TabStop = true;
|
||||
this.linkChangeExperience.Text = "Change how you experience Windows";
|
||||
this.linkChangeExperience.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkChangeExperience_LinkClicked);
|
||||
this.linkChangeExperience.Paint += new System.Windows.Forms.PaintEventHandler(this.linkChangeExperience_Paint);
|
||||
//
|
||||
// panelForm
|
||||
//
|
||||
this.panelForm.Controls.Add(this.panelMain);
|
||||
this.panelForm.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelForm.Location = new System.Drawing.Point(0, 0);
|
||||
this.panelForm.Name = "panelForm";
|
||||
this.panelForm.Size = new System.Drawing.Size(943, 592);
|
||||
this.panelForm.TabIndex = 210;
|
||||
this.chkAdvancedMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.chkAdvancedMode.AutoSize = true;
|
||||
this.chkAdvancedMode.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.chkAdvancedMode.Location = new System.Drawing.Point(8, 566);
|
||||
this.chkAdvancedMode.Name = "chkAdvancedMode";
|
||||
this.chkAdvancedMode.Size = new System.Drawing.Size(397, 17);
|
||||
this.chkAdvancedMode.TabIndex = 1;
|
||||
this.chkAdvancedMode.Text = "Enable advanced upgrade mode (bypass compatibility and driver checks)";
|
||||
this.chkAdvancedMode.UseVisualStyleBackColor = true;
|
||||
this.chkAdvancedMode.CheckedChanged += new System.EventHandler(this.chkAdvancedMode_CheckedChanged);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(943, 592);
|
||||
this.Controls.Add(this.panelForm);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.AutoScroll = true;
|
||||
this.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.ClientSize = new System.Drawing.Size(920, 609);
|
||||
this.Controls.Add(this.panelContainer);
|
||||
this.Controls.Add(this.panelFAQ);
|
||||
this.Name = "MainForm";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Flyby11 Upgrading Assistant";
|
||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
||||
this.panelDragDrop.ResumeLayout(false);
|
||||
this.panelContainer.ResumeLayout(false);
|
||||
this.panelMain.ResumeLayout(false);
|
||||
this.panelMain.PerformLayout();
|
||||
this.panelForm.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
public System.Windows.Forms.RichTextBox rtbDescription;
|
||||
private System.Windows.Forms.Button btnTogglePatch;
|
||||
private System.Windows.Forms.LinkLabel linkGitHub;
|
||||
private System.Windows.Forms.Button btnMountRun;
|
||||
private System.Windows.Forms.Label lblHeader;
|
||||
private System.Windows.Forms.LinkLabel linkLabel1;
|
||||
private System.Windows.Forms.LinkLabel linkLabel2;
|
||||
|
||||
private System.Windows.Forms.Panel panelDragDrop;
|
||||
private System.Windows.Forms.Label statusLabel;
|
||||
private System.Windows.Forms.Panel panelFAQ;
|
||||
private System.Windows.Forms.Panel panelContainer;
|
||||
private System.Windows.Forms.Panel panelMain;
|
||||
private System.Windows.Forms.LinkLabel linkChangeExperience;
|
||||
private System.Windows.Forms.Panel panelForm;
|
||||
private System.Windows.Forms.CheckBox checkInstallationMedia;
|
||||
private System.Windows.Forms.TreeView treeSettings;
|
||||
private System.Windows.Forms.Button btnExperience;
|
||||
private System.Windows.Forms.ComboBox dropdownOptions;
|
||||
private System.Windows.Forms.CheckBox chkAdvancedMode;
|
||||
}
|
||||
}
|
||||
|
||||
+332
-221
@@ -1,276 +1,387 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Views;
|
||||
|
||||
namespace FlybyScript
|
||||
namespace Flyby11
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
private Dictionary<TreeNode, bool> pendingChanges = new Dictionary<TreeNode, bool>(); // Store pending changes
|
||||
private PSPatcher PSPatcher;
|
||||
|
||||
private readonly IsoHandler _isoHandler;
|
||||
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()
|
||||
{
|
||||
InitializeComponent();
|
||||
logger = new Logger(this);
|
||||
|
||||
// Initialize the logger
|
||||
logger = new Logger(rtbDescription);
|
||||
_isoHandler = new IsoHandler(UpdateStatusLabel);
|
||||
_faqHandler = new FAQHandler(panelFAQ, UpdateStatusLabel);
|
||||
_faqHandler.InitializeFAQ();
|
||||
|
||||
// Set the default view to the main panel
|
||||
SwitchView.DefaultView = panelMain;
|
||||
InitializeLocalizedStrings();
|
||||
InitializeClippyUI();
|
||||
|
||||
// Subscribe to the AfterSelect event for importing plugins
|
||||
treeSettings.AfterSelect += TreeSettings_AfterSelect;
|
||||
}
|
||||
// Drag and drop the Windows 11 ISO to patch it and install on unsupported hardware (Inplace Upgrade).
|
||||
UpdateStatusLabel(Locales.Strings.ctl_statusLabel);
|
||||
|
||||
private async void MainForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Add NativePatcher parent node
|
||||
TreeNode nativePatcherNode = new TreeNode("Native (Recommended)");
|
||||
treeSettings.Nodes.Add(nativePatcherNode);
|
||||
|
||||
// Add Method 1 as a child of NativePatcher
|
||||
TreeNode method1Node = new TreeNode("(Method 1) Inplace Upgrade via Server Setup")
|
||||
// Check if the DLL exists before performing the compatibility check
|
||||
if (File.Exists("CpuCheckNative.dll"))
|
||||
{
|
||||
Tag = "Method1",
|
||||
BackColor = Color.LightBlue
|
||||
};
|
||||
nativePatcherNode.Nodes.Add(method1Node);
|
||||
|
||||
// Load plugins
|
||||
await ScriptPatcher.LoadPlugins("upgraider", treeSettings.Nodes, logger);
|
||||
|
||||
// Load PowerShell plugins
|
||||
PSPatcher = new PSPatcher();
|
||||
PSPatcher.LoadPowerShellPlugins(treeSettings);
|
||||
|
||||
// Add the Import node at the end
|
||||
TreeNode importNode = new TreeNode("Import [...]")
|
||||
{
|
||||
NodeFont = new Font(treeSettings.Font, FontStyle.Italic),
|
||||
Checked = false,
|
||||
ForeColor = Color.Black
|
||||
};
|
||||
treeSettings.Nodes.Add(importNode);
|
||||
|
||||
// Expand all nodes
|
||||
ExpandAllNodes(treeSettings.Nodes);
|
||||
}
|
||||
|
||||
private void TreeSettings_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (e.Node.Text == "Import [...]")
|
||||
{
|
||||
OpenPluginsForm();
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenPluginsForm()
|
||||
{
|
||||
var pluginsForm = new PluginsForm(this);
|
||||
pluginsForm.ShowDialog();
|
||||
}
|
||||
|
||||
// Refresh the tree view
|
||||
public void RefreshTreeView()
|
||||
{
|
||||
treeSettings.Nodes.Clear();
|
||||
|
||||
// Reload
|
||||
MainForm_Load(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
// Expand all nodes
|
||||
private void ExpandAllNodes(TreeNodeCollection nodes)
|
||||
{
|
||||
foreach (TreeNode node in nodes)
|
||||
{
|
||||
node.Expand();
|
||||
ExpandAllNodes(node.Nodes);
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnTogglePatch_Click(object sender, EventArgs e)
|
||||
{
|
||||
btnTogglePatch.Enabled = false;
|
||||
foreach (var entry in pendingChanges)
|
||||
{
|
||||
var node = entry.Key; // The TreeNode
|
||||
bool shouldApply = entry.Value; // Whether this patch should be applied (true) or undone (false)
|
||||
|
||||
// Check if the entry is Method2 and if the patch is enabled
|
||||
if (node.Tag?.ToString() == "Method1" && shouldApply)
|
||||
{
|
||||
// Start Method2 (Setup Server variant)
|
||||
logger.Log("(Method 1) Automating Windows 11 Inplace Upgrade...", Color.Blue);
|
||||
NativePatcher automation = new NativePatcher(logger);
|
||||
await automation.AutomateWindowsInstallation();
|
||||
|
||||
node.BackColor = Color.LightGreen;
|
||||
logger.Log("Method 1 Started: Windows 11 Installation Automated", Color.Black);
|
||||
}
|
||||
else if (node.Tag is ScriptPatcher plugin)
|
||||
{
|
||||
if (shouldApply)
|
||||
{
|
||||
// Apply the patch
|
||||
logger.Log($"Applying patch: {plugin.PlugID}", Color.Blue);
|
||||
plugin.PlugDoFeature();
|
||||
node.BackColor = Color.LightGreen;
|
||||
logger.Log($"Activated patch: {plugin.PlugID}", Color.Black);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Undo the patch
|
||||
logger.Log($"Undoing patch: {plugin.PlugID}", Color.Blue);
|
||||
plugin.PlugUndoFeature();
|
||||
node.BackColor = Color.LightGray;
|
||||
logger.Log($"Deactivated patch: {plugin.PlugID}", Color.Crimson);
|
||||
}
|
||||
}
|
||||
// Handle PowerShell scripts
|
||||
else if (node.Tag is string psScriptPath)
|
||||
{
|
||||
if (shouldApply)
|
||||
{
|
||||
// Log and execute the PowerShell script
|
||||
logger.Log($"Executing PowerShell script: {Path.GetFileName(psScriptPath)}", Color.Blue);
|
||||
|
||||
var PSPatcher = new PSPatcher();
|
||||
await PSPatcher.ExecutePlugin(psScriptPath, logger);
|
||||
|
||||
node.BackColor = Color.LightGreen;
|
||||
logger.Log($"Executed PowerShell script: {Path.GetFileName(psScriptPath)}", Color.Black);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Log for deactivation (not reversible for PS scripts)
|
||||
logger.Log($"PowerShell script cannot be undone: {Path.GetFileName(psScriptPath)}", Color.Crimson);
|
||||
node.BackColor = Color.LightGray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Clear pending changes after applying
|
||||
pendingChanges.Clear();
|
||||
btnTogglePatch.Enabled = true;
|
||||
}
|
||||
|
||||
private void treeSettings_AfterCheck(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
// Check if the node's checked status has changed
|
||||
if (e.Node.Checked)
|
||||
{
|
||||
// Add the node and set its status to true (enabled)
|
||||
pendingChanges[e.Node] = true;
|
||||
e.Node.BackColor = Color.LightGreen; // Mark the node as active
|
||||
|
||||
// Check the type of node (either JSONPluginLoader/Patch or PowerShell script)
|
||||
if (e.Node.Tag is ScriptPatcher jsonPlugin)
|
||||
{
|
||||
logger.Log($"Patch activated: {jsonPlugin.PlugID}", Color.Black);
|
||||
}
|
||||
else if (e.Node.Tag is string psScriptPath)
|
||||
{
|
||||
logger.Log($"PowerShell script activated: {Path.GetFileName(psScriptPath)}", Color.Black);
|
||||
}
|
||||
// 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
|
||||
{
|
||||
// Add the node and set its status to false (disabled)
|
||||
pendingChanges[e.Node] = false;
|
||||
e.Node.BackColor = Color.LightGray; // Mark the node as inactive
|
||||
|
||||
// Check the type of node again (either JSONPluginLoader or PowerShell script)
|
||||
if (e.Node.Tag is ScriptPatcher jsonPlugin)
|
||||
{
|
||||
logger.Log($"Patch deactivated: {jsonPlugin.PlugID}", Color.Crimson);
|
||||
}
|
||||
else if (e.Node.Tag is string psScriptPath)
|
||||
{
|
||||
logger.Log($"PowerShell script deactivated: {Path.GetFileName(psScriptPath)}", Color.Crimson);
|
||||
}
|
||||
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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Synchronize parent-child node states, so when a child node is checked or unchecked, its parent node automatically reflects this change
|
||||
if (e.Node.Parent != null)
|
||||
// Checks if POPCNT and SSE4.2 are supported by the CPU using the external DLL function
|
||||
private bool CheckHasPopcnt()
|
||||
{
|
||||
try
|
||||
{
|
||||
e.Node.Parent.Checked = e.Node.Checked;
|
||||
return HasPopcnt(); // Call the external function to check for POPCNT and SSE4.2
|
||||
}
|
||||
}
|
||||
|
||||
private void treeSettings_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
||||
{
|
||||
TreeNode node = treeSettings.GetNodeAt(e.Location);
|
||||
|
||||
if (node != null)
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Check if the node's Tag is the native "Method1"
|
||||
if (node.Tag?.ToString() == "Method1")
|
||||
UpdateStatusLabel($"Error checking system compatibility: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeLocalizedStrings()
|
||||
{
|
||||
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.Items.Add("Troubleshoot Compatibility Issues"); // Problems form
|
||||
dropdownOptions.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void InitializeClippyUI()
|
||||
{
|
||||
clippyUI = new ClippyUI(this, logger);
|
||||
clippyUI.SetClippyPosition(this);
|
||||
clippyUI.Show();
|
||||
}
|
||||
|
||||
private void panelDragDrop_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var borderThickness = 8;
|
||||
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
|
||||
);
|
||||
|
||||
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||
e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||
|
||||
// subtle shadow
|
||||
using (var shadowBrush = new SolidBrush(Color.FromArgb(30, 0, 0, 0)))
|
||||
{
|
||||
var shadowRect = new Rectangle(6, 6, control.Width - 12, control.Height - 12);
|
||||
using (var shadowPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||
{
|
||||
rtbDescription.Text = "(Current release: Windows 11 2024 Update l Version 24H2)\nThis method leverages the Windows Server variant of the Windows setup, " +
|
||||
"which skips most hardware compatibility checks. It allows Windows 11 to be installed on unsupported PCs, " +
|
||||
"bypassing the usual system requirements. Importantly, while the setup runs in server mode, " +
|
||||
"it installs the standard Windows 11 (not the server version).\n\nHow it works:\n1. " +
|
||||
"The app automatically downloads the Windows 11 version 24H2 ISO using the 'Fido' dependency script.\n2. " +
|
||||
"The ISO image is mounted automatically.\n3. Simply follow the on-screen instructions to complete the upgrade.\n\n" +
|
||||
"**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."
|
||||
;
|
||||
shadowPath.AddArc(shadowRect.X, shadowRect.Y, cornerRadius, cornerRadius, 180, 90);
|
||||
shadowPath.AddArc(shadowRect.Right - cornerRadius, shadowRect.Y, cornerRadius, cornerRadius, 270, 90);
|
||||
shadowPath.AddArc(shadowRect.Right - cornerRadius, shadowRect.Bottom - cornerRadius, cornerRadius, cornerRadius, 0, 90);
|
||||
shadowPath.AddArc(shadowRect.X, shadowRect.Bottom - cornerRadius, cornerRadius, cornerRadius, 90, 90);
|
||||
shadowPath.CloseFigure();
|
||||
e.Graphics.FillPath(shadowBrush, shadowPath);
|
||||
}
|
||||
else if (node.Tag is ScriptPatcher plugin) // Handle JSON plugin description
|
||||
}
|
||||
|
||||
//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))
|
||||
{
|
||||
using (var frostedPath = new System.Drawing.Drawing2D.GraphicsPath())
|
||||
{
|
||||
string pluginInfo = $"ID: {plugin.PlugID}\nHow-to:\n{plugin.PlugInfo}";
|
||||
rtbDescription.Text = pluginInfo;
|
||||
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);
|
||||
}
|
||||
else if (node.Tag is string psScriptPath) // Handle PowerShell script description
|
||||
}
|
||||
|
||||
// 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())
|
||||
{
|
||||
rtbDescription.Clear();
|
||||
string scriptInfo = $"PowerShell Script: {Path.GetFileName(psScriptPath)}\nPath: {psScriptPath}";
|
||||
rtbDescription.Text = scriptInfo;
|
||||
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);
|
||||
}
|
||||
else // Clear description if no node is hovered
|
||||
}
|
||||
|
||||
// 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())
|
||||
{
|
||||
rtbDescription.Clear();
|
||||
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 void linkGitHub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
private async Task HandleIsoInput(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start("https://github.com/builtbybel/Flyby11");
|
||||
string isoPath = null;
|
||||
bool experimentalEnabled = chkAdvancedMode.Checked;
|
||||
|
||||
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, experimentalEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnMountRun_Click(object sender, EventArgs e)
|
||||
private void panelDragDrop_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
NativePatcher patcher = new NativePatcher(logger);
|
||||
await patcher.RunSetupFromMountedISO();
|
||||
// Check if the file is an ISO
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||
{
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
e.Effect = (files.Length == 1 && Path.GetExtension(files[0]).Equals(".iso", StringComparison.OrdinalIgnoreCase))
|
||||
? DragDropEffects.Copy
|
||||
: DragDropEffects.None;
|
||||
}
|
||||
}
|
||||
|
||||
private void linkChangeExperience_Paint(object sender, PaintEventArgs e)
|
||||
private async void panelDragDrop_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
// Linkoption gains focus, so trigger a vivid focus rectangle
|
||||
ControlPaint.DrawFocusRectangle(e.Graphics, linkChangeExperience.ClientRectangle);
|
||||
await HandleIsoInput(sender, e);
|
||||
}
|
||||
|
||||
private void linkChangeExperience_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
// Update the status label
|
||||
private void UpdateStatusLabel(string message)
|
||||
{
|
||||
ExperienceView experienceView = new ExperienceView();
|
||||
SwitchView.SetView(experienceView, panelForm);
|
||||
statusLabel.Text = message;
|
||||
statusLabel.Refresh();
|
||||
}
|
||||
|
||||
private void checkInstallationMedia_CheckedChanged(object sender, EventArgs e)
|
||||
private async void dropdownOptions_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
checkInstallationMedia.Checked = false;
|
||||
MediaView installMediaView = new MediaView();
|
||||
SwitchView.SetView(installMediaView, panelForm);
|
||||
{
|
||||
// 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;
|
||||
|
||||
case 6:
|
||||
// Open Troubleshoot Compatibility Issues
|
||||
ProblemsForm problemsForm = new ProblemsForm();
|
||||
problemsForm.ShowDialog();
|
||||
break;
|
||||
}
|
||||
// Reset selection back to default prompt after action
|
||||
dropdownOptions.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles the event for the compatibility patch.
|
||||
/// </summary>
|
||||
private void HandleCompatibilityPatch()
|
||||
{
|
||||
using (var folderDialog = new FolderBrowserDialog())
|
||||
{
|
||||
/* Select the USB drive containing your Windows 11 installation files. " +
|
||||
"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! */
|
||||
|
||||
folderDialog.Description = Locales.Strings.compPatch_msgSelectDrive.Replace(@"\n", Environment.NewLine);
|
||||
|
||||
if (folderDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string selectedPath = folderDialog.SelectedPath;
|
||||
var driveInfo = new DriveInfo(Path.GetPathRoot(selectedPath));
|
||||
|
||||
if (driveInfo.DriveType == DriveType.Removable && driveInfo.IsReady)
|
||||
{
|
||||
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)
|
||||
{
|
||||
try
|
||||
{
|
||||
_isoHandler.CreateUnattendXml(selectedPath);
|
||||
// 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)
|
||||
{
|
||||
// Failed to apply bypass patch:
|
||||
UpdateStatusLabel($"{Locales.Strings.compPatch_msgFailedEx} {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateStatusLabel(Locales.Strings.compPatch_debugCancel); // Bypass patch canceled by user.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// The selected path is not a removable drive. Please select a USB 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
|
||||
{
|
||||
UpdateStatusLabel(Locales.Strings.compPatch_debugNoUSBDrive); // No USB drive selected for patching.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens the "Can I Upgrade" view.
|
||||
/// </summary>
|
||||
private void HandleCanIUpgradeView()
|
||||
{
|
||||
CanIUpgradeView canIUpgradeView = new CanIUpgradeView();
|
||||
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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void chkAdvancedMode_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (chkAdvancedMode.Checked)
|
||||
{
|
||||
var result = MessageBox.Show(
|
||||
"You are enabling an advanced setup mode. This option adds extra setup parameters that may improve compatibility on unsupported hardware. " +
|
||||
"\r\nSuccess may vary depending on your system and drivers.\n\nDo you want to continue?",
|
||||
"Advanced Mode Warning",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Warning);
|
||||
|
||||
if (result == DialogResult.No)
|
||||
{
|
||||
chkAdvancedMode.Checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,33 +117,4 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAAAAAAAEAIABeBQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFv
|
||||
ck5UAc+id5oAAAUYSURBVHja7dwxSsNQAMfhgJObbp7AE/QOgmKrYCk4ODg4CgXBWhGxi4jg4Kg36KCD
|
||||
DQrSRVwERw/h6A1q3uYamtr3wveH35gML823NVlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZma13kZvtNw6
|
||||
zTtKp2Y/b5R9zuEaZ5dW4d2cOQDhh1E0UTpt9kd3ZZ9zuMbZJVcDAAIAAP4PgM5grAjbPnupDIBwL2ca
|
||||
Z3MH4Pr5RxF2cPtZGQDhXs40zgAgAAAAAAIAAAAgAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAQAAABAAAAAAAUAAEAAE
|
||||
AAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAABA
|
||||
AAAAAAQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIAAAAgAAAAAAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAA
|
||||
CAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAIAAAAgAAAAAAIAAAAgAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwpAAAA
|
||||
AAEAAAAQAAAAAAHAQwCAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgOoAwN7VuyJs5+K1MgDCvZxp
|
||||
nM0dAMXftAAomQAgAABghls/Gq0UP45jpVOr/7RW9jmHa5xdWoV3MzMzMzMzMzMzMzMzMzMzMzMzMzMz
|
||||
MzMzM/u7rV6+2jwZjZVU3bLPOVzj3NIqvJszB8Dfgf0dWL4H4LABIADkk8P7L0XY7uVbZQCEeznTOPNR
|
||||
UPkoqI+CAkAAAAAABAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAAACAAAAIAAIAAKAACAACAACgAAgAAgAAoAAIAAI
|
||||
AAKAACAACAACgAAgAAgAAoAAIAAIAAKAACAACAACgAAgAAgAAoAAAAAACAAAAIAAAAAACAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAABAAAAEAAAAAABAAAAEAAEAAEAAFAABAABAABQAAQAAQAAUAAEAAEAAFAABAABAABQAAQAAQAAUAA
|
||||
EAAEAAFAABAABAABQAAQAAQAAQAAABAAAAAAAQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAzBQAAACAAAAAAAgAAACAAeAgAEAAE
|
||||
AAFAABAABAABQAAQAAQAAUAAEAAEAAFAAFAdABg8fCvC9m8+KgMg3MuZxtncAVD8TQuAkgkAAgAAACAA
|
||||
AGAWa7eHC63zxyWlU7s7XCz9nItrnF1iz7l4NzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM6v1fgFi3pGw
|
||||
zf9AVwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,343 +0,0 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
/*
|
||||
* NativePatcher class is responsible for automating the Windows 11 24H2 installation process.
|
||||
* It uses the Fido.ps1 script https://github.com/pbatard/Fido to download the ISO, mounts the ISO, and runs Server setupprep.exe
|
||||
*/
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
public class NativePatcher
|
||||
{
|
||||
private Logger _logger;
|
||||
private string _fidoScriptPath;
|
||||
|
||||
public NativePatcher(Logger logger)
|
||||
{
|
||||
this._fidoScriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "upgraider", "Fido.ps1");
|
||||
this._logger = logger;
|
||||
}
|
||||
|
||||
public async Task AutomateWindowsInstallation()
|
||||
{
|
||||
// Step 1: Download Windows 24H2 ISO using Fido.ps1
|
||||
await DownloadISO();
|
||||
|
||||
// Step 2: Allow user to select the ISO after download
|
||||
MessageBox.Show("Please select the ISO file to mount.", "ISO Selection", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
// Step 3: Mount the ISO and get the mounted drive letter
|
||||
string mountedDriveLetter = await MountISO();
|
||||
|
||||
if (string.IsNullOrEmpty(mountedDriveLetter))
|
||||
{
|
||||
_logger.Log("Failed to mount ISO. Exiting.", Color.Crimson);
|
||||
return;
|
||||
}
|
||||
|
||||
// Step 2: Run the setup process with the mounted drive letter
|
||||
await RunSetup(mountedDriveLetter);
|
||||
}
|
||||
|
||||
// Step 1: Download Windows 24H2 ISO by running the Fido.ps1 script
|
||||
private async Task DownloadISO()
|
||||
{
|
||||
try
|
||||
{
|
||||
_logger.Log("Starting the download of the Windows 24H2 ISO...", Color.Blue);
|
||||
|
||||
// Run Fido.ps1 to download the ISO (PowerShell script)
|
||||
string downloadCommand = $"& \"{_fidoScriptPath}\"";
|
||||
await ExecutePowerShellCommand(downloadCommand);
|
||||
|
||||
_logger.Log("Windows 24H2 ISO download completed.", System.Drawing.Color.Green);
|
||||
|
||||
MessageBox.Show("Please wait for the ISO file to download, and then select the ISO file.",
|
||||
"Information",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
|
||||
_logger.Log("Please wait for the ISO file to download, and then select the ISO file. " +
|
||||
"If you cancel the process here and wait for the ISO download, you will need to restart the patching process, " +
|
||||
"but you can skip the ISO download.", System.Drawing.Color.Black);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error during ISO download: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<string> MountISO()
|
||||
{
|
||||
try
|
||||
{
|
||||
string isoFilePath = SelectISOFile();
|
||||
|
||||
if (!string.IsNullOrEmpty(isoFilePath))
|
||||
{
|
||||
MessageBox.Show($"Selected ISO file: {isoFilePath}. Now mounting the ISO.", "ISO Selected", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
_logger.Log($"Mounting ISO: {isoFilePath}...", System.Drawing.Color.Blue);
|
||||
|
||||
string mountCommand = $"Mount-DiskImage -ImagePath \"{isoFilePath}\"";
|
||||
await ExecutePowerShellCommand(mountCommand); // Run asynchronously for mounting
|
||||
|
||||
// After mounting, try to get the drive letter
|
||||
string mountedDriveLetter = await GetMountedDriveLetter();
|
||||
|
||||
if (string.IsNullOrEmpty(mountedDriveLetter))
|
||||
{
|
||||
_logger.Log("Failed to get mounted drive letter.", System.Drawing.Color.Crimson);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log($"ISO mounted successfully. Drive letter: {mountedDriveLetter}", System.Drawing.Color.Green);
|
||||
return mountedDriveLetter; // Return the mounted drive letter
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log("No ISO file selected.", System.Drawing.Color.Black);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error mounting ISO: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task RunSetup(string mountedDriveLetter)
|
||||
{
|
||||
if (string.IsNullOrEmpty(mountedDriveLetter))
|
||||
{
|
||||
_logger.Log("No mounted drive found. Exiting.", System.Drawing.Color.Crimson);
|
||||
return;
|
||||
}
|
||||
|
||||
// Log the drive letter and build the sources folder path
|
||||
string sourcesFolderPath = Path.Combine(mountedDriveLetter, "sources");
|
||||
_logger.Log($"Mounted drive letter: {mountedDriveLetter}", System.Drawing.Color.Gray);
|
||||
_logger.Log($"Checking Sources folder at: {sourcesFolderPath}", System.Drawing.Color.Gray);
|
||||
|
||||
// Check if Sources folder exists
|
||||
if (!Directory.Exists(sourcesFolderPath))
|
||||
{
|
||||
_logger.Log($"Sources folder not found at {sourcesFolderPath}.", System.Drawing.Color.Crimson);
|
||||
return;
|
||||
}
|
||||
|
||||
await LaunchSetupFromSourcesFolder(sourcesFolderPath);
|
||||
}
|
||||
|
||||
private async Task LaunchSetupFromSourcesFolder(string sourcesFolderPath)
|
||||
{
|
||||
var processInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = Path.Combine(sourcesFolderPath, "setupprep.exe"),
|
||||
Arguments = "/product server",
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
using (var process = Process.Start(processInfo))
|
||||
{
|
||||
// Capture output and wait for exit
|
||||
string output = await process.StandardOutput.ReadToEndAsync();
|
||||
string error = await process.StandardError.ReadToEndAsync();
|
||||
await process.WaitForExitAsync();
|
||||
|
||||
// Log output and errors if any
|
||||
if (!string.IsNullOrEmpty(output)) _logger.Log($"Output: {output}", System.Drawing.Color.Gray);
|
||||
if (!string.IsNullOrEmpty(error)) _logger.Log($"Error: {error}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
|
||||
MessageBox.Show("Follow the Windows Server Setup window now. You can close this message box and the FlybyScript.",
|
||||
"Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error running setupprep.exe: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task RunSetupFromMountedISO()
|
||||
{
|
||||
// Choose an ISO file
|
||||
string isoFilePath = SelectISOFile();
|
||||
if (isoFilePath == null) return;
|
||||
|
||||
try
|
||||
{
|
||||
_logger.Log($"Please wait...", System.Drawing.Color.Crimson);
|
||||
|
||||
// Mount the selected ISO
|
||||
await ExecutePowerShellCommand($"Mount-DiskImage -ImagePath \"{isoFilePath}\"");
|
||||
|
||||
// Get the mounted drive letter
|
||||
string mountedDriveLetter = await GetMountedDriveLetter();
|
||||
if (string.IsNullOrEmpty(mountedDriveLetter))
|
||||
{
|
||||
_logger.Log("Failed to get mounted drive letter.", System.Drawing.Color.Crimson);
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.Log($"Mounted drive letter: {mountedDriveLetter}", System.Drawing.Color.Gray);
|
||||
|
||||
// Define Sources folder path and check if it exists
|
||||
string sourcesFolderPath = Path.Combine(mountedDriveLetter, "sources");
|
||||
if (Directory.Exists(sourcesFolderPath))
|
||||
{
|
||||
await LaunchSetupFromSourcesFolder(sourcesFolderPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log($"Sources folder not found at {sourcesFolderPath}.", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error mounting ISO or launching setup: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessStart(string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var process = new Process())
|
||||
{
|
||||
process.StartInfo.FileName = "cmd.exe";
|
||||
process.StartInfo.Arguments = command;
|
||||
process.StartInfo.UseShellExecute = true;
|
||||
process.StartInfo.CreateNoWindow = false;
|
||||
|
||||
// Start the process
|
||||
process.Start();
|
||||
|
||||
// Wait for the process to finish
|
||||
process.WaitForExit();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error executing CMD command: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<string> ExecutePowerShellCommand(string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var process = new Process())
|
||||
{
|
||||
process.StartInfo.FileName = "powershell.exe";
|
||||
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{command}\"";
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.StartInfo.RedirectStandardError = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true;
|
||||
|
||||
// Output and error handlers
|
||||
var outputBuilder = new StringBuilder();
|
||||
var errorBuilder = new StringBuilder();
|
||||
|
||||
process.OutputDataReceived += (sender, args) =>
|
||||
{
|
||||
if (args.Data != null)
|
||||
{
|
||||
outputBuilder.AppendLine(args.Data); // Collect output data
|
||||
_logger.Log(args.Data, System.Drawing.Color.LightPink);
|
||||
}
|
||||
};
|
||||
|
||||
process.ErrorDataReceived += (sender, args) =>
|
||||
{
|
||||
if (args.Data != null)
|
||||
{
|
||||
errorBuilder.AppendLine(args.Data); // Collect error data
|
||||
_logger.Log(args.Data, System.Drawing.Color.Crimson);
|
||||
}
|
||||
};
|
||||
|
||||
// Start the process
|
||||
process.Start();
|
||||
process.BeginOutputReadLine();
|
||||
process.BeginErrorReadLine();
|
||||
|
||||
// Wait for the process to exit
|
||||
await Task.Run(() => process.WaitForExit());
|
||||
|
||||
// Combine the full output and error logs
|
||||
string output = outputBuilder.ToString();
|
||||
string error = errorBuilder.ToString();
|
||||
|
||||
if (!string.IsNullOrEmpty(error))
|
||||
{
|
||||
_logger.Log(error, System.Drawing.Color.Crimson);
|
||||
}
|
||||
|
||||
// Return the entire output of ps command
|
||||
return output;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"PowerShell command execution failed: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
return string.Empty; // Return an empty string if an error occurs
|
||||
}
|
||||
}
|
||||
|
||||
// Get the mounted drive letter
|
||||
private async Task<string> GetMountedDriveLetter()
|
||||
{
|
||||
try
|
||||
{
|
||||
// List all the drives to find the mounted drive letter
|
||||
var drives = DriveInfo.GetDrives();
|
||||
|
||||
foreach (var drive in drives)
|
||||
{
|
||||
// Check if the drive is a CD/DVD and if it's mounted
|
||||
if (drive.DriveType == DriveType.CDRom && drive.IsReady)
|
||||
{
|
||||
// Return the letter of the mounted drive
|
||||
return drive.Name.Substring(0, 2);
|
||||
}
|
||||
}
|
||||
|
||||
return null; // Return null if no mounted drive is found
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error getting mounted drive letter: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private string SelectISOFile()
|
||||
{
|
||||
using (var openFileDialog = new OpenFileDialog
|
||||
{
|
||||
Title = "Select Windows 11 ISO File",
|
||||
Filter = "ISO Files (*.iso)|*.iso|All Files (*.*)|*.*",
|
||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer)
|
||||
})
|
||||
{
|
||||
return openFileDialog.ShowDialog() == DialogResult.OK ? openFileDialog.FileName : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
using FlybyScript;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
public class PSPatcher
|
||||
{
|
||||
public void LoadPowerShellPlugins(TreeView treeView)
|
||||
{
|
||||
var scriptDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "upgraider");
|
||||
|
||||
if (!Directory.Exists(scriptDirectory))
|
||||
{
|
||||
MessageBox.Show("upgraider directory does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Create a Dependencies category in the TreeView
|
||||
TreeNode dependencyCategory = new TreeNode("Dependencies");
|
||||
treeView.Nodes.Add(dependencyCategory);
|
||||
|
||||
var scriptFiles = Directory.GetFiles(scriptDirectory, "*.ps1");
|
||||
|
||||
foreach (var file in scriptFiles)
|
||||
{
|
||||
var scriptName = Path.GetFileNameWithoutExtension(file);
|
||||
|
||||
// Create a TreeNode for each ps script
|
||||
var scriptNode = new TreeNode
|
||||
{
|
||||
ToolTipText = file,
|
||||
Text = $"{scriptName} [PS]",
|
||||
Tag = file // Store the file path as the Tag
|
||||
};
|
||||
|
||||
// Add the script node to the Dependecy category
|
||||
dependencyCategory.Nodes.Add(scriptNode);
|
||||
}
|
||||
}
|
||||
|
||||
// Execute the selected PowerShell script
|
||||
public async Task ExecutePlugin(string pluginPath, Logger logger)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var process = new Process())
|
||||
{
|
||||
process.StartInfo.FileName = "powershell.exe";
|
||||
process.StartInfo.Arguments = $"-NoProfile -ExecutionPolicy Bypass -File \"{pluginPath}\"";
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.StartInfo.RedirectStandardError = true;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.CreateNoWindow = true;
|
||||
|
||||
var outputBuilder = new StringBuilder();
|
||||
var errorBuilder = new StringBuilder();
|
||||
|
||||
// Handle output from PowerShell script
|
||||
process.OutputDataReceived += (sender, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
outputBuilder.AppendLine(e.Data);
|
||||
logger.Log($"PowerShell script output: {e.Data}", System.Drawing.Color.Black);
|
||||
}
|
||||
};
|
||||
|
||||
// Handle error from PowerShell script
|
||||
process.ErrorDataReceived += (sender, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
errorBuilder.AppendLine(e.Data);
|
||||
logger.Log($"PowerShell script error: {e.Data}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
};
|
||||
|
||||
process.Start();
|
||||
process.BeginOutputReadLine();
|
||||
process.BeginErrorReadLine();
|
||||
|
||||
await Task.Run(() =>
|
||||
{
|
||||
process.WaitForExit();
|
||||
});
|
||||
|
||||
logger.Log($"PowerShell script executed successfully: {pluginPath}", System.Drawing.Color.Green);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log($"Error executing PowerShell script: {pluginPath}. Exception: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,238 +0,0 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
/*
|
||||
* Imported from my xd-AntiSpy app https://github.com/builtbybel/xd-AntiSpy
|
||||
*/
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
public class ScriptPatcher
|
||||
{
|
||||
public string PlugID { get; set; }
|
||||
public string PlugInfo { get; set; }
|
||||
public string[] PlugCheck { get; set; }
|
||||
public string[] PlugDo { get; set; }
|
||||
public string[] PlugUndo { get; set; }
|
||||
public string PlugCategory { get; set; }
|
||||
|
||||
private Logger logger;
|
||||
|
||||
public ScriptPatcher(Logger logger)
|
||||
{
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
public bool PlugCheckFeature()
|
||||
{
|
||||
bool isFeatureActive = true;
|
||||
foreach (var command in PlugCheck)
|
||||
{
|
||||
if (!ExecuteCommandAndCheckResult(command))
|
||||
{
|
||||
isFeatureActive = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
logger.Log($"Feature '{PlugID}' is {(isFeatureActive ? "active" : "inactive")}", System.Drawing.Color.Black);
|
||||
return isFeatureActive;
|
||||
}
|
||||
|
||||
// PlugCheck Helper to execute commands and check the result
|
||||
private bool ExecuteCommandAndCheckResult(string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
var process = new Process
|
||||
{
|
||||
StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "cmd.exe",
|
||||
Arguments = $"/c {command}",
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
}
|
||||
};
|
||||
process.Start();
|
||||
process.WaitForExit();
|
||||
|
||||
// Read the output of the command
|
||||
string output = process.StandardOutput.ReadToEnd();
|
||||
|
||||
// Check if output contains "1" (indicating active) or "0" (indicating inactive)
|
||||
bool isActive = output.Contains("1");
|
||||
|
||||
// logger.Log($"Plugin executed successfully: {command}. Result: {(isActive ? "active" : "inactive")}", System.Drawing.Color.Black);
|
||||
return isActive;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log($"Error executing plugin: {command}. Exception: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async void PlugDoFeature()
|
||||
{
|
||||
await ExecuteFeatureCommands(PlugDo);
|
||||
}
|
||||
|
||||
public async void PlugUndoFeature()
|
||||
{
|
||||
await ExecuteFeatureCommands(PlugUndo);
|
||||
}
|
||||
|
||||
private async Task ExecuteFeatureCommands(string[] commands)
|
||||
{
|
||||
foreach (var command in commands)
|
||||
{
|
||||
await ExecuteCommand(command);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ExecuteCommand(string command)
|
||||
{
|
||||
try
|
||||
{
|
||||
var process = new Process
|
||||
{
|
||||
StartInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = IsPowerShellCommand(command) ? "powershell.exe" : "cmd.exe",
|
||||
Arguments = IsPowerShellCommand(command) ? $"-Command \"{command}\"" : $"/c \"{command}\"",
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
}
|
||||
};
|
||||
|
||||
// Event handler for handling output data
|
||||
process.OutputDataReceived += (sender, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
logger.Log($"Output: {e.Data}", System.Drawing.Color.Green);
|
||||
}
|
||||
};
|
||||
|
||||
// Event handler for handling error data
|
||||
process.ErrorDataReceived += (sender, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
logger.Log($"Error: {e.Data}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
};
|
||||
|
||||
process.Start();
|
||||
|
||||
// Begin asynchronous reading of the output and error streams
|
||||
process.BeginOutputReadLine();
|
||||
process.BeginErrorReadLine();
|
||||
|
||||
// Wait for the process to exit
|
||||
await process.WaitForExitAsync();
|
||||
|
||||
// Log command execution
|
||||
logger.Log($"Plugin executed command: {command}", System.Drawing.Color.Green);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log($"Error executing plugin: {command}. Exception: {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
|
||||
// Determine if our command should be run with PowerShell
|
||||
private bool IsPowerShellCommand(string command)
|
||||
{
|
||||
return command.StartsWith("powershell.exe") || command.Contains("Get-") || command.Contains("Set-");
|
||||
}
|
||||
|
||||
// Get plugin information
|
||||
public string GetPluginInformation()
|
||||
{
|
||||
return $"{PlugInfo.Replace("\\n", Environment.NewLine)}";
|
||||
}
|
||||
|
||||
private static void AddToPluginCategory(TreeNodeCollection pluginCategory, TreeNode node, string category)
|
||||
{
|
||||
if (pluginCategory == null)
|
||||
throw new ArgumentNullException(nameof(pluginCategory));
|
||||
var existingCategory = pluginCategory.Cast<TreeNode>().FirstOrDefault(n => n.Text == category);
|
||||
|
||||
if (existingCategory == null)
|
||||
{
|
||||
existingCategory = new TreeNode(category)
|
||||
{
|
||||
// BackColor = System.Drawing.Color.LightBlue,
|
||||
ForeColor = System.Drawing.Color.Black
|
||||
};
|
||||
pluginCategory.Add(existingCategory);
|
||||
}
|
||||
|
||||
existingCategory.Nodes.Add(node);
|
||||
}
|
||||
|
||||
public static async Task LoadPlugins(string pluginDirectory, TreeNodeCollection pluginCategory, Logger logger)
|
||||
{
|
||||
if (Directory.Exists(pluginDirectory))
|
||||
{
|
||||
var pluginFiles = Directory.GetFiles(pluginDirectory, "*.json");
|
||||
|
||||
foreach (var file in pluginFiles)
|
||||
{
|
||||
// Exclude JSON files of our DLL Plugins as they are loaded separately
|
||||
if (Path.GetFileName(file).IndexOf("Plugin", StringComparison.OrdinalIgnoreCase) >= 0)
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
var json = File.ReadAllText(file);
|
||||
var plugin = JsonConvert.DeserializeObject<ScriptPatcher>(json);
|
||||
|
||||
if (plugin != null)
|
||||
{
|
||||
plugin.logger = logger; // Set logger for the plugin
|
||||
|
||||
// Execute all commands for the plugin to check its feature
|
||||
bool isActive = plugin.PlugCheckFeature();
|
||||
|
||||
var pluginNode = new TreeNode(plugin.PlugID)
|
||||
{
|
||||
ToolTipText = plugin.PlugInfo,
|
||||
Checked = isActive,
|
||||
Tag = plugin // Store plugin object in Tag property
|
||||
};
|
||||
|
||||
// Add to the appropriate category
|
||||
AddToPluginCategory(pluginCategory, pluginNode, plugin.PlugCategory);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log($"Error loading plugin from file '{file}': {ex.Message}", System.Drawing.Color.Crimson);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Extension method to make WaitForExit async in ExecuteCommand
|
||||
public static class ProcessExtensions
|
||||
{
|
||||
public static async Task WaitForExitAsync(this Process process)
|
||||
{
|
||||
var tcs = new TaskCompletionSource<bool>();
|
||||
process.EnableRaisingEvents = true;
|
||||
process.Exited += (sender, args) => tcs.TrySetResult(true);
|
||||
await tcs.Task;
|
||||
}
|
||||
}
|
||||
Generated
-217
@@ -1,217 +0,0 @@
|
||||
namespace FlybyScript
|
||||
{
|
||||
partial class PluginsForm
|
||||
{
|
||||
/// <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.checkedListBoxPlugins = new System.Windows.Forms.CheckedListBox();
|
||||
this.textDescription = new System.Windows.Forms.TextBox();
|
||||
this.btnDownload = new System.Windows.Forms.Button();
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.lblHeader = new System.Windows.Forms.Label();
|
||||
this.btnUninstall = new System.Windows.Forms.Button();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnImport = new System.Windows.Forms.Button();
|
||||
this.panelBottom = new System.Windows.Forms.Panel();
|
||||
this.linkPluginsDirectory = new System.Windows.Forms.LinkLabel();
|
||||
this.panelBottom.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkedListBoxPlugins
|
||||
//
|
||||
this.checkedListBoxPlugins.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.checkedListBoxPlugins.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
|
||||
this.checkedListBoxPlugins.Font = new System.Drawing.Font("Segoe UI Variable Text Light", 10.25F);
|
||||
this.checkedListBoxPlugins.ForeColor = System.Drawing.Color.Black;
|
||||
this.checkedListBoxPlugins.FormattingEnabled = true;
|
||||
this.checkedListBoxPlugins.Location = new System.Drawing.Point(-1, 50);
|
||||
this.checkedListBoxPlugins.Name = "checkedListBoxPlugins";
|
||||
this.checkedListBoxPlugins.Size = new System.Drawing.Size(275, 340);
|
||||
this.checkedListBoxPlugins.TabIndex = 0;
|
||||
this.checkedListBoxPlugins.ThreeDCheckBoxes = true;
|
||||
this.checkedListBoxPlugins.SelectedIndexChanged += new System.EventHandler(this.checkedListBoxPlugins_SelectedIndexChanged);
|
||||
//
|
||||
// textDescription
|
||||
//
|
||||
this.textDescription.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.textDescription.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(252)))), ((int)(((byte)(252)))));
|
||||
this.textDescription.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.textDescription.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9.75F);
|
||||
this.textDescription.Location = new System.Drawing.Point(281, 50);
|
||||
this.textDescription.Multiline = true;
|
||||
this.textDescription.Name = "textDescription";
|
||||
this.textDescription.Size = new System.Drawing.Size(348, 309);
|
||||
this.textDescription.TabIndex = 1;
|
||||
//
|
||||
// btnDownload
|
||||
//
|
||||
this.btnDownload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnDownload.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
|
||||
this.btnDownload.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.btnDownload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnDownload.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnDownload.ForeColor = System.Drawing.Color.Black;
|
||||
this.btnDownload.Location = new System.Drawing.Point(536, 9);
|
||||
this.btnDownload.Name = "btnDownload";
|
||||
this.btnDownload.Size = new System.Drawing.Size(93, 24);
|
||||
this.btnDownload.TabIndex = 2;
|
||||
this.btnDownload.Text = "Install";
|
||||
this.btnDownload.UseVisualStyleBackColor = false;
|
||||
this.btnDownload.Click += new System.EventHandler(this.btnDownload_Click);
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.progressBar.Location = new System.Drawing.Point(281, 360);
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Size = new System.Drawing.Size(348, 23);
|
||||
this.progressBar.TabIndex = 3;
|
||||
//
|
||||
// lblHeader
|
||||
//
|
||||
this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblHeader.AutoEllipsis = true;
|
||||
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.lblHeader.Location = new System.Drawing.Point(277, 15);
|
||||
this.lblHeader.Name = "lblHeader";
|
||||
this.lblHeader.Size = new System.Drawing.Size(356, 30);
|
||||
this.lblHeader.TabIndex = 206;
|
||||
this.lblHeader.Text = "Welcome to Plugins Manager";
|
||||
//
|
||||
// btnUninstall
|
||||
//
|
||||
this.btnUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnUninstall.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(221)))), ((int)(((byte)(221)))), ((int)(((byte)(221)))));
|
||||
this.btnUninstall.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.btnUninstall.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnUninstall.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnUninstall.Location = new System.Drawing.Point(437, 9);
|
||||
this.btnUninstall.Name = "btnUninstall";
|
||||
this.btnUninstall.Size = new System.Drawing.Size(93, 24);
|
||||
this.btnUninstall.TabIndex = 207;
|
||||
this.btnUninstall.Text = "Uninstall";
|
||||
this.btnUninstall.UseVisualStyleBackColor = false;
|
||||
this.btnUninstall.Click += new System.EventHandler(this.btnUninstall_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(65)))), ((int)(((byte)(65)))), ((int)(((byte)(65)))));
|
||||
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(-1, 18);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(100, 33);
|
||||
this.label1.TabIndex = 208;
|
||||
this.label1.Text = "Available";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// btnImport
|
||||
//
|
||||
this.btnImport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnImport.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F);
|
||||
this.btnImport.Location = new System.Drawing.Point(96, 18);
|
||||
this.btnImport.Name = "btnImport";
|
||||
this.btnImport.Size = new System.Drawing.Size(100, 33);
|
||||
this.btnImport.TabIndex = 209;
|
||||
this.btnImport.Text = "Import";
|
||||
this.btnImport.UseVisualStyleBackColor = true;
|
||||
this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
|
||||
//
|
||||
// panelBottom
|
||||
//
|
||||
this.panelBottom.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
|
||||
this.panelBottom.Controls.Add(this.linkPluginsDirectory);
|
||||
this.panelBottom.Controls.Add(this.btnUninstall);
|
||||
this.panelBottom.Controls.Add(this.btnDownload);
|
||||
this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.panelBottom.Location = new System.Drawing.Point(0, 401);
|
||||
this.panelBottom.Name = "panelBottom";
|
||||
this.panelBottom.Size = new System.Drawing.Size(646, 45);
|
||||
this.panelBottom.TabIndex = 210;
|
||||
//
|
||||
// linkPluginsDirectory
|
||||
//
|
||||
this.linkPluginsDirectory.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkPluginsDirectory.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.linkPluginsDirectory.AutoEllipsis = true;
|
||||
this.linkPluginsDirectory.AutoSize = true;
|
||||
this.linkPluginsDirectory.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.75F);
|
||||
this.linkPluginsDirectory.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkPluginsDirectory.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.linkPluginsDirectory.Location = new System.Drawing.Point(12, 17);
|
||||
this.linkPluginsDirectory.Name = "linkPluginsDirectory";
|
||||
this.linkPluginsDirectory.Size = new System.Drawing.Size(97, 16);
|
||||
this.linkPluginsDirectory.TabIndex = 208;
|
||||
this.linkPluginsDirectory.TabStop = true;
|
||||
this.linkPluginsDirectory.Text = "Plugins directory";
|
||||
this.linkPluginsDirectory.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPluginsDirectory_LinkClicked);
|
||||
//
|
||||
// PluginsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(248)))), ((int)(((byte)(248)))), ((int)(((byte)(248)))));
|
||||
this.ClientSize = new System.Drawing.Size(646, 446);
|
||||
this.Controls.Add(this.panelBottom);
|
||||
this.Controls.Add(this.btnImport);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.lblHeader);
|
||||
this.Controls.Add(this.progressBar);
|
||||
this.Controls.Add(this.textDescription);
|
||||
this.Controls.Add(this.checkedListBoxPlugins);
|
||||
this.Name = "PluginsForm";
|
||||
this.ShowIcon = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Plugins-Manager";
|
||||
this.panelBottom.ResumeLayout(false);
|
||||
this.panelBottom.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.CheckedListBox checkedListBoxPlugins;
|
||||
private System.Windows.Forms.TextBox textDescription;
|
||||
private System.Windows.Forms.Button btnDownload;
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.Windows.Forms.Label lblHeader;
|
||||
private System.Windows.Forms.Button btnUninstall;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button btnImport;
|
||||
private System.Windows.Forms.Panel panelBottom;
|
||||
private System.Windows.Forms.LinkLabel linkPluginsDirectory;
|
||||
}
|
||||
}
|
||||
@@ -1,220 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Newtonsoft.Json;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
public partial class PluginsForm : Form
|
||||
{
|
||||
private const string PluginJsonUrl = "https://raw.githubusercontent.com/builtbybel/Flyby11/main/plugins/plugins_manifest.json";
|
||||
private const string PluginBaseUrl = "https://github.com/builtbybel/Flyby11/raw/main/plugins/";
|
||||
|
||||
// Dictionary to store plugin filenames and descriptions
|
||||
private Dictionary<string, string> pluginDescriptions;
|
||||
|
||||
private readonly string pluginsDirectory = Path.Combine(Application.StartupPath, "upgraider");
|
||||
|
||||
|
||||
private MainForm _mainForm;
|
||||
|
||||
public PluginsForm(MainForm mainForm)
|
||||
{
|
||||
InitializeComponent();
|
||||
_mainForm = mainForm;
|
||||
|
||||
LoadPlugins();
|
||||
}
|
||||
|
||||
private async void LoadPlugins()
|
||||
{
|
||||
try
|
||||
{
|
||||
var json = await DownloadJsonAsync(PluginJsonUrl);
|
||||
pluginDescriptions = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
|
||||
|
||||
foreach (var pluginFileName in pluginDescriptions.Keys)
|
||||
{
|
||||
// Add each plugin to the CheckedListBox
|
||||
bool isInstalled = File.Exists(Path.Combine(pluginsDirectory, pluginFileName));
|
||||
int index = checkedListBoxPlugins.Items.Add(pluginFileName);
|
||||
|
||||
// Check the item if the plugin is installed
|
||||
checkedListBoxPlugins.SetItemChecked(index, isInstalled);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Error loading plugins: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<string> DownloadJsonAsync(string url)
|
||||
{
|
||||
using (HttpClient client = new HttpClient())
|
||||
{
|
||||
return await client.GetStringAsync(url);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkedListBoxPlugins_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var selectedPlugin = checkedListBoxPlugins.SelectedItem?.ToString();
|
||||
if (selectedPlugin != null && pluginDescriptions.ContainsKey(selectedPlugin))
|
||||
{
|
||||
textDescription.Text = pluginDescriptions[selectedPlugin];
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnDownload_Click(object sender, EventArgs e)
|
||||
{
|
||||
var selectedPlugins = new List<string>();
|
||||
foreach (var plugin in checkedListBoxPlugins.CheckedItems)
|
||||
{
|
||||
selectedPlugins.Add(plugin.ToString());
|
||||
}
|
||||
|
||||
if (selectedPlugins.Count > 0)
|
||||
{
|
||||
await DownloadPluginsAsync(selectedPlugins);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Please select at least one plugin to download.");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DownloadPluginsAsync(List<string> plugins)
|
||||
{
|
||||
progressBar.Value = 0;
|
||||
progressBar.Maximum = plugins.Count;
|
||||
|
||||
using (HttpClient client = new HttpClient())
|
||||
{
|
||||
foreach (var pluginFileName in plugins)
|
||||
{
|
||||
try
|
||||
{
|
||||
var pluginUrl = $"{PluginBaseUrl}{pluginFileName}";
|
||||
var downloadPath = Path.Combine(pluginsDirectory, pluginFileName);
|
||||
|
||||
var data = await client.GetByteArrayAsync(pluginUrl);
|
||||
await WriteAllBytesAsync(downloadPath, data);
|
||||
|
||||
progressBar.Value += 1;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Failed to download {pluginFileName}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("All selected plugins have been downloaded.");
|
||||
}
|
||||
|
||||
private async Task WriteAllBytesAsync(string path, byte[] data)
|
||||
{
|
||||
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, useAsync: true))
|
||||
{
|
||||
await fs.WriteAsync(data, 0, data.Length);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
base.OnFormClosing(e);
|
||||
_mainForm.RefreshTreeView();
|
||||
}
|
||||
|
||||
private void btnUninstall_Click(object sender, EventArgs e)
|
||||
{
|
||||
var pluginsToRemove = new List<string>();
|
||||
foreach (var plugin in checkedListBoxPlugins.CheckedItems)
|
||||
{
|
||||
pluginsToRemove.Add(plugin.ToString());
|
||||
}
|
||||
|
||||
foreach (var pluginFileName in pluginsToRemove)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filePath = Path.Combine("upgraider", pluginFileName);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
checkedListBoxPlugins.Items.Remove(pluginFileName);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Failed to uninstall {pluginFileName}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("Selected plugins have been uninstalled.");
|
||||
checkedListBoxPlugins.Items.Clear();
|
||||
LoadPlugins(); // Refresh the list of plugins
|
||||
}
|
||||
|
||||
private void btnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var folderBrowserDialog = new FolderBrowserDialog())
|
||||
{
|
||||
// Open the folder browser dialog to select the source directory
|
||||
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string sourceDirectory = folderBrowserDialog.SelectedPath;
|
||||
string[] files = Directory.GetFiles(sourceDirectory, "*.*", SearchOption.TopDirectoryOnly)
|
||||
.Where(file => file.EndsWith(".json") || file.EndsWith(".ps1")).ToArray();
|
||||
|
||||
List<string> importedPlugins = new List<string>(); // List to store imported plugin names
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
try
|
||||
{
|
||||
string fileName = Path.GetFileName(file);
|
||||
string destinationPath = Path.Combine(pluginsDirectory, fileName);
|
||||
File.Copy(file, destinationPath, true); // Overwrite if file exists
|
||||
importedPlugins.Add(fileName); // Add to the imported plugins list
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Failed to import {file}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// Show message box with the names of the imported plugins
|
||||
if (importedPlugins.Count > 0)
|
||||
{
|
||||
string message = "Imported Plugins:\n" + string.Join("\n", importedPlugins);
|
||||
MessageBox.Show(message, "Import Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("No plugins were imported.", "Import Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void linkPluginsDirectory_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Process.Start("explorer.exe", pluginsDirectory);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Failed to open plugins directory: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+113
@@ -0,0 +1,113 @@
|
||||
namespace Flyby11
|
||||
{
|
||||
partial class ProblemsForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.dataGridViewIssues = new System.Windows.Forms.DataGridView();
|
||||
this.ErrorCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Link = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewIssues)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// dataGridViewIssues
|
||||
//
|
||||
this.dataGridViewIssues.AllowUserToAddRows = false;
|
||||
this.dataGridViewIssues.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
|
||||
this.dataGridViewIssues.BackgroundColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dataGridViewIssues.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.dataGridViewIssues.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("Segoe UI Variable Display Semib", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridViewIssues.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dataGridViewIssues.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridViewIssues.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.ErrorCode,
|
||||
this.Link});
|
||||
this.dataGridViewIssues.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridViewIssues.GridColor = System.Drawing.SystemColors.Control;
|
||||
this.dataGridViewIssues.Location = new System.Drawing.Point(0, 0);
|
||||
this.dataGridViewIssues.Name = "dataGridViewIssues";
|
||||
this.dataGridViewIssues.ReadOnly = true;
|
||||
this.dataGridViewIssues.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI Variable Display", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridViewIssues.RowHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dataGridViewIssues.RowHeadersVisible = false;
|
||||
this.dataGridViewIssues.Size = new System.Drawing.Size(645, 377);
|
||||
this.dataGridViewIssues.TabIndex = 0;
|
||||
this.dataGridViewIssues.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridViewIssues_CellContentClick);
|
||||
//
|
||||
// ErrorCode
|
||||
//
|
||||
this.ErrorCode.FillWeight = 149.2386F;
|
||||
this.ErrorCode.HeaderText = "ErrorCode";
|
||||
this.ErrorCode.Name = "ErrorCode";
|
||||
this.ErrorCode.ReadOnly = true;
|
||||
//
|
||||
// Link
|
||||
//
|
||||
this.Link.FillWeight = 50.76142F;
|
||||
this.Link.HeaderText = "Link";
|
||||
this.Link.Name = "Link";
|
||||
this.Link.ReadOnly = true;
|
||||
//
|
||||
// ProblemsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(645, 377);
|
||||
this.Controls.Add(this.dataGridViewIssues);
|
||||
this.Name = "ProblemsForm";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Troubleshoot compatibility issues";
|
||||
this.Load += new System.EventHandler(this.ProblemsForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridViewIssues)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView dataGridViewIssues;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ErrorCode;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn Link;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Flyby11
|
||||
{
|
||||
public partial class ProblemsForm : Form
|
||||
{
|
||||
private readonly Dictionary<string, string> _issues = new Dictionary<string, string>()
|
||||
{
|
||||
{"Can't upgrade to Windows 11 – Error 0x80888002","https://github.com/builtbybel/Flyby11/discussions/135"},
|
||||
{ "Upgrading without losing all programs and settings", "https://github.com/builtbybel/Flyby11/discussions/54"},
|
||||
{ "Upgrade Driver issue 0xC1900101", "https://github.com/builtbybel/Flyby11/issues/157"},
|
||||
{ "We are enable to complete your request at this time", "https://github.com/builtbybel/Flyby11/issues/158"},
|
||||
{ "Upgrade succeeded, but future updates not possible ", "https://github.com/builtbybel/Flyby11/discussions/144"},
|
||||
{ "We couldn't install Windows Server - We've set your PC back the way it was Error 0xC1900101 - 0x20017", "https://github.com/builtbybel/Flyby11/issues/103 "},
|
||||
{ "Mounting ISO fails", "https://github.com/builtbybel/Flyby11/issues/156"},
|
||||
{ "Can't find your issue? Browse the community discussions for help", "https://github.com/builtbybel/Flyby11/discussions"},
|
||||
};
|
||||
|
||||
public ProblemsForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void ProblemsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var kv in _issues)
|
||||
{
|
||||
dataGridViewIssues.Rows.Add(kv.Key, "Details…");
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridViewIssues_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (dataGridViewIssues.Columns[e.ColumnIndex] is DataGridViewLinkColumn &&
|
||||
e.RowIndex >= 0)
|
||||
{
|
||||
var code = dataGridViewIssues.Rows[e.RowIndex].Cells["ErrorCode"].Value.ToString();
|
||||
if (_issues.TryGetValue(code, out var url))
|
||||
{
|
||||
System.Diagnostics.Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = url,
|
||||
UseShellExecute = true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ErrorCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Link.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -1,16 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
namespace Flyby11
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// Der Haupteinstiegspunkt für die Anwendung.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main()
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
@@ -7,9 +8,9 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyTitle("Flyby11")]
|
||||
[assembly: AssemblyDescription("Bypassing Windows 11 hardware requirements")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Builtbybel")]
|
||||
[assembly: AssemblyCompany("A Belim app creation")]
|
||||
[assembly: AssemblyProduct("Flyby11")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2024 A Belim app creation")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2025 A Belim app creation")]
|
||||
[assembly: AssemblyTrademark("Builtbybel")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -19,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("66ddc36a-9095-4053-941c-8829d44f5f20")]
|
||||
[assembly: Guid("503af34b-7544-4c43-a099-2b948c3ff49a")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
@@ -28,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("0.14.107")]
|
||||
[assembly: AssemblyFileVersion("0.14.107")]
|
||||
[assembly: AssemblyVersion("3.0.500")]
|
||||
[assembly: AssemblyFileVersion("3.0.500")]
|
||||
+5
-5
@@ -8,7 +8,7 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace FlybyScript.Properties {
|
||||
namespace Flyby11.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace FlybyScript.Properties {
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
public class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
@@ -36,10 +36,10 @@ namespace FlybyScript.Properties {
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FlybyScript.Properties.Resources", typeof(Resources).Assembly);
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Flyby11.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
@@ -51,7 +51,7 @@ namespace FlybyScript.Properties {
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
@@ -60,6 +60,7 @@
|
||||
: 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">
|
||||
@@ -68,9 +69,10 @@
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</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="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
@@ -85,9 +87,10 @@
|
||||
<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" 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="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
@@ -109,9 +112,9 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<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 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>
|
||||
</root>
|
||||
+2
-2
@@ -8,11 +8,11 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace FlybyScript.Properties {
|
||||
namespace Flyby11.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
File renamed without changes.
@@ -1,448 +0,0 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FlybyScript
|
||||
{
|
||||
public class USBManagement
|
||||
{
|
||||
private readonly Logger _logger;
|
||||
private ProgressBar _progressBar;
|
||||
|
||||
public Action<string> UpdateLabelStatus;
|
||||
private int currentStep = 0;
|
||||
|
||||
private static readonly HttpClient httpClient = new HttpClient();
|
||||
|
||||
public USBManagement(Logger logger, Action<string> updateLabelStatus, ProgressBar progressBar)
|
||||
{
|
||||
_logger = logger;
|
||||
_progressBar = progressBar;
|
||||
UpdateLabelStatus = updateLabelStatus; // Set the delegate to update UI
|
||||
}
|
||||
|
||||
private string[] steps = new[]
|
||||
{
|
||||
"Format and Boot USB Drive",
|
||||
"Mount ISO",
|
||||
"Copy ISO to USB",
|
||||
"Split Install.wim",
|
||||
"Finalize Installation Media (Install.wim)"
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Updates the LabelStatus with the current step
|
||||
/// </summary>
|
||||
public void UpdateStatusLabel()
|
||||
{
|
||||
currentStep++;
|
||||
if (currentStep <= steps.Length)
|
||||
{
|
||||
string statusText = $"{currentStep}/{steps.Length} - {steps[currentStep - 1]}";
|
||||
|
||||
// Call the delegate to update the label in the user control
|
||||
UpdateLabelStatus?.Invoke(statusText);
|
||||
|
||||
// Log to the logger as well
|
||||
_logger.Log($"Step {currentStep}: {steps[currentStep - 1]} started.", Color.Blue);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the progress bar with the specified value
|
||||
/// </summary>
|
||||
private void UpdateProgress(int value)
|
||||
{
|
||||
if (_progressBar.InvokeRequired)
|
||||
{
|
||||
_progressBar.Invoke(new Action(() => _progressBar.Value = value));
|
||||
}
|
||||
else
|
||||
{
|
||||
_progressBar.Value = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats the USB drive using DiskPart
|
||||
/// </summary>
|
||||
/// <param name="diskNumber">Diskpart Device ID</param>
|
||||
/// <returns></returns>
|
||||
public async Task FormatDriveAsync(string diskNumber, string partitionScheme)
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
ProcessStartInfo processInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "diskpart.exe",
|
||||
RedirectStandardInput = true,
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
using (Process process = Process.Start(processInfo))
|
||||
{
|
||||
using (StreamWriter writer = process.StandardInput)
|
||||
{
|
||||
if (writer.BaseStream.CanWrite)
|
||||
{
|
||||
// Step 1: Format and Boot USB Drive
|
||||
UpdateStatusLabel(); // Updates to 1/5 - Format and Boot USB Drive
|
||||
|
||||
// Send commands to DiskPart
|
||||
writer.WriteLine($"select disk {diskNumber}"); // Select the disk
|
||||
|
||||
UpdateProgress(10); // Update progress
|
||||
writer.WriteLine("clean"); // Clean the disk
|
||||
|
||||
// Check partition scheme selection
|
||||
if (partitionScheme == "GPT")
|
||||
{
|
||||
writer.WriteLine("convert gpt"); // Convert to GPT
|
||||
}
|
||||
else if (partitionScheme == "MBR")
|
||||
{
|
||||
writer.WriteLine("convert mbr"); // Convert to MBR
|
||||
}
|
||||
|
||||
UpdateProgress(20);
|
||||
writer.WriteLine("create partition primary"); // Create a new partition
|
||||
writer.WriteLine("select partition 1"); // Select the new partition
|
||||
writer.WriteLine("active"); // Set the new partition active
|
||||
|
||||
UpdateProgress(60);
|
||||
writer.WriteLine("format fs=fat32 quick label=\"FlybyWin11\""); // Quick format to FAT32
|
||||
|
||||
writer.WriteLine("exit"); // Exit DiskPart
|
||||
UpdateProgress(100); // Final progress
|
||||
}
|
||||
}
|
||||
|
||||
string output = process.StandardOutput.ReadToEnd(); // Get the output from DiskPart
|
||||
process.WaitForExit();
|
||||
_logger.Log($"Formatting completed: {output}", Color.Black);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error formatting drive: {ex.Message}", Color.Red);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Copies the contents of the specified ISO file to the USB drive using Robocopy.
|
||||
/// </summary>
|
||||
/// <param name="usbDrive">The drive letter of the USB drive.</param>
|
||||
/// <param name="isoPath">The path to the ISO file.</param>
|
||||
public async Task CopyISOAsync(string usbDrive, string isoPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Step 1: Mount the ISO using PowerShell
|
||||
UpdateStatusLabel(); // Updates to "2/5 - Mount ISO"
|
||||
string mountCommand = $"Mount-DiskImage -ImagePath \"{isoPath}\"";
|
||||
ProcessStartInfo mountInfo = new ProcessStartInfo("powershell", mountCommand)
|
||||
{
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
using (Process mountProcess = Process.Start(mountInfo))
|
||||
{
|
||||
string output = await mountProcess.StandardOutput.ReadToEndAsync();
|
||||
await mountProcess.WaitForExitAsync(); // Wait for the process to complete
|
||||
_logger.Log($"ISO mounted: {output}", Color.Black);
|
||||
}
|
||||
|
||||
// Step 2: Get the drive letter of the mounted ISO
|
||||
string isoDriveLetter = await GetMountedDriveLetterAsync(); // Get the drive letter of the mounted ISO
|
||||
if (string.IsNullOrEmpty(isoDriveLetter))
|
||||
{
|
||||
_logger.Log("Failed to get the mounted ISO drive letter.", Color.Red);
|
||||
return; // Exit if we cant find the drive letter
|
||||
}
|
||||
|
||||
_logger.Log($"Mounted ISO drive letter: {isoDriveLetter}", Color.Black);
|
||||
_logger.Log($"USB drive letter: {usbDrive}", Color.Black);
|
||||
|
||||
// Step 3: Prepare the Robocopy command to copy everything except install.wim
|
||||
string robocopyCommand = $"robocopy {isoDriveLetter.TrimEnd('\\')} {usbDrive.TrimEnd('\\')} /MIR /XF \"install.wim\"";
|
||||
|
||||
// Step 4: Execute the Robocopy command
|
||||
ProcessStartInfo robocopyInfo = new ProcessStartInfo("cmd.exe", $"/C {robocopyCommand}")
|
||||
{
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
};
|
||||
|
||||
// Step 3: Copy ISO to USB
|
||||
UpdateStatusLabel(); // Updates to "3/5 - Copy ISO to USB"
|
||||
using (Process robocopyProcess = Process.Start(robocopyInfo))
|
||||
{
|
||||
robocopyProcess.OutputDataReceived += (s, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
_logger.Log(e.Data, Color.Black);
|
||||
|
||||
// Calculate and update progress based on Robocopy output
|
||||
int progress = CalculateProgressFromRobocopy(e.Data);
|
||||
UpdateProgress(progress);
|
||||
}
|
||||
};
|
||||
|
||||
robocopyProcess.BeginOutputReadLine();
|
||||
|
||||
// Wait for the process to finish
|
||||
await robocopyProcess.WaitForExitAsync();
|
||||
}
|
||||
|
||||
// Step 5: Get the path to the original WIM file (from the ISO)
|
||||
string wimFilePath = Path.Combine(isoDriveLetter, "sources", "install.wim");
|
||||
_logger.Log("Preparing install.wim... This may take a moment, please wait.", Color.Blue);
|
||||
|
||||
// Step 4: Split Install.wim
|
||||
UpdateStatusLabel(); // Updates to "4/5 - Split Install.wim"
|
||||
if (File.Exists(wimFilePath))
|
||||
{
|
||||
// Step 7: Define the path for the split files
|
||||
string swmFilePath = Path.Combine(usbDrive, "sources", "install.swm"); // First split file
|
||||
|
||||
// Step 8: Dism command to split WIM
|
||||
string splitDismCommand = $"/C Dism /Split-Image /ImageFile:\"{wimFilePath}\" /SWMFile:\"{swmFilePath}\" /FileSize:3000";
|
||||
|
||||
// Execute the command
|
||||
ProcessStartInfo splitInfo = new ProcessStartInfo("cmd.exe", splitDismCommand)
|
||||
{
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
// Step 5: Finalize Installation Media
|
||||
UpdateStatusLabel(); // Updates to 5/5 - Finalize Installation Media
|
||||
|
||||
using (Process splitProcess = Process.Start(splitInfo))
|
||||
{
|
||||
splitProcess.OutputDataReceived += (s, e) =>
|
||||
{
|
||||
if (!string.IsNullOrEmpty(e.Data))
|
||||
{
|
||||
_logger.Log(e.Data, Color.Black); // Log the output from Dism
|
||||
}
|
||||
};
|
||||
|
||||
splitProcess.BeginOutputReadLine();
|
||||
|
||||
// Wait for the process to finish
|
||||
await splitProcess.WaitForExitAsync();
|
||||
_logger.Log($"WIM file split completed with exit code: {splitProcess.ExitCode}", Color.Blue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log($"WIM file not found at {wimFilePath}.", Color.Red);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error copying ISO: {ex.Message}", Color.Red);
|
||||
}
|
||||
|
||||
MessageBox.Show("Your installation media is ready! You can now proceed with the installation.", "Installation Media", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves the drive letter of the currently mounted drive.
|
||||
/// </summary>
|
||||
/// <returns>The drive letter of the mounted CD/DVD drive, or null if not found.</returns>
|
||||
private async Task<string> GetMountedDriveLetterAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
// List all the drives to find the mounted CD/DVD drive
|
||||
var drives = DriveInfo.GetDrives();
|
||||
|
||||
foreach (var drive in drives)
|
||||
{
|
||||
// Check if the drive is a CD/DVD and if it's mounted
|
||||
if (drive.DriveType == DriveType.CDRom && drive.IsReady)
|
||||
{
|
||||
// Return the letter of the mounted drive
|
||||
return drive.Name; // Returns "D:\", "E:\", etc.
|
||||
}
|
||||
}
|
||||
|
||||
return null; // Return null if no mounted CD/DVD drive is found
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"Error getting mounted drive letter: {ex.Message}", Color.Crimson);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Downloads a specified tool (Media Creation Tool or Installation Assistant) from a provided URL.
|
||||
/// </summary>
|
||||
/// <param name="downloadUrl">The URL of the tool to download.</param>
|
||||
/// <param name="fileName">The name of the file to save.</param>
|
||||
/// <returns>A task representing the asynchronous operation.</returns>
|
||||
public async Task DownloadMediaTool(string downloadUrl, string fileName)
|
||||
{
|
||||
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||
{
|
||||
saveFileDialog.Filter = "Executable Files (*.exe)|*.exe";
|
||||
saveFileDialog.Title = $"Save {fileName}";
|
||||
saveFileDialog.FileName = fileName;
|
||||
|
||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string destinationPath = saveFileDialog.FileName;
|
||||
|
||||
try
|
||||
{
|
||||
_logger.Log($"Preparing to download {fileName}...", Color.Black);
|
||||
_logger.Log("Download may take some time, please wait...", Color.RoyalBlue);
|
||||
|
||||
var response = await httpClient.GetAsync(downloadUrl);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
using (var fileStream = new FileStream(destinationPath, FileMode.Create, FileAccess.Write, FileShare.None))
|
||||
{
|
||||
await response.Content.CopyToAsync(fileStream);
|
||||
}
|
||||
|
||||
_logger.Log($"{fileName} download completed successfully!", Color.Green);
|
||||
|
||||
// Start the downloaded tool
|
||||
_logger.Log($"Starting {fileName}...", Color.Black);
|
||||
Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = destinationPath,
|
||||
UseShellExecute = true // To run .exe files
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Log($"An error occurred while downloading {fileName}: {ex.Message}", Color.Red);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log($"{fileName} download canceled by user.", Color.Red);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Calculates progress based on Robocopy output
|
||||
/// </summary>
|
||||
private int CalculateProgressFromRobocopy(string robocopyOutput)
|
||||
{
|
||||
// Find the percentage completion in Robocopy output
|
||||
var match = Regex.Match(robocopyOutput, @"(\d+)\%");
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
// Extract the percentage number from the match and convert it to an integer
|
||||
if (int.TryParse(match.Groups[1].Value, out int progress))
|
||||
{
|
||||
return progress;
|
||||
}
|
||||
}
|
||||
|
||||
return 0; // Return 0 if no percentage was found
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copy the ISO to the USB drive and optionally create an unattend.xml file
|
||||
/// </summary>
|
||||
/// <param name="usbDrive"></param>
|
||||
/// <param name="isoPath"></param>
|
||||
/// <param name="createUnattend"></param>
|
||||
/// <returns></returns>
|
||||
public async Task CopyISOWithUnattendAsync(string usbDrive, string isoPath, bool createUnattend)
|
||||
{
|
||||
await CopyISOAsync(usbDrive, isoPath);
|
||||
|
||||
if (createUnattend)
|
||||
{
|
||||
CreateUnattendXml(usbDrive); // Only create unattend.xml if checkbox is checked
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// // Create unattend.xml file in the sources\$OEM$\$$\Panther directory
|
||||
/// </summary>
|
||||
/// <param name="usbDrive"></param>
|
||||
public void CreateUnattendXml(string usbDrive)
|
||||
{
|
||||
string unattendDir = Path.Combine(usbDrive, "sources", "$OEM$", "$$", "Panther");
|
||||
Directory.CreateDirectory(unattendDir); // Create the directory if it doesn't exist
|
||||
|
||||
string unattendPath = Path.Combine(unattendDir, "unattend.xml");
|
||||
|
||||
// Check if the file already exists
|
||||
if (!File.Exists(unattendPath))
|
||||
{
|
||||
// Create the unattend.xml content
|
||||
string xmlContent = @"<unattend xmlns='urn:schemas-microsoft-com:unattend'>
|
||||
<settings pass='disabled'>
|
||||
<component xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' name='Microsoft-Windows-Setup' processorArchitecture='amd64' language='neutral' publicKeyToken='31bf3856ad364e35' versionScope='nonSxS'>
|
||||
<UserData>
|
||||
<ProductKey>
|
||||
<Key/>
|
||||
</ProductKey>
|
||||
</UserData>
|
||||
<RunSynchronous>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>1</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>2</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>3</Order>
|
||||
<Path>reg add HKLM\SYSTEM\Setup\LabConfig /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
</RunSynchronous>
|
||||
</component>
|
||||
</settings>
|
||||
<settings pass='specialize'>
|
||||
<component xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' name='Microsoft-Windows-Deployment' processorArchitecture='amd64' language='neutral' publicKeyToken='31bf3856ad364e35' versionScope='nonSxS'>
|
||||
<RunSynchronous>
|
||||
<RunSynchronousCommand wcm:action='add'>
|
||||
<Order>1</Order>
|
||||
<Path>reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE /v BypassNRO /t REG_DWORD /d 1 /f</Path>
|
||||
</RunSynchronousCommand>
|
||||
</RunSynchronous>
|
||||
</component>
|
||||
</settings>
|
||||
</unattend>";
|
||||
|
||||
File.WriteAllText(unattendPath, xmlContent);
|
||||
_logger.Log("Created unattend.xml in the sources\\$OEM$\\$$\\Panther directory.", Color.Green);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Log("unattend.xml already exists in the sources\\$OEM$\\$$\\Panther directory.", Color.Blue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-194
@@ -1,194 +0,0 @@
|
||||
namespace Views
|
||||
{
|
||||
partial class ExperienceView
|
||||
{
|
||||
/// <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 Komponenten-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.btnBack = new System.Windows.Forms.Button();
|
||||
this.featurePanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.rtbDescription = new System.Windows.Forms.RichTextBox();
|
||||
this.lblHeader = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnRevert = new System.Windows.Forms.Button();
|
||||
this.btnApply = new System.Windows.Forms.Button();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.featurePanel.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnBack
|
||||
//
|
||||
this.btnBack.AutoSize = true;
|
||||
this.btnBack.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control;
|
||||
this.btnBack.FlatAppearance.BorderSize = 0;
|
||||
this.btnBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnBack.Font = new System.Drawing.Font("Segoe MDL2 Assets", 14F, System.Drawing.FontStyle.Bold);
|
||||
this.btnBack.ForeColor = System.Drawing.Color.DarkGray;
|
||||
this.btnBack.Location = new System.Drawing.Point(3, 3);
|
||||
this.btnBack.Name = "btnBack";
|
||||
this.btnBack.Size = new System.Drawing.Size(34, 29);
|
||||
this.btnBack.TabIndex = 231;
|
||||
this.btnBack.Text = "...";
|
||||
this.btnBack.UseVisualStyleBackColor = true;
|
||||
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
|
||||
//
|
||||
// featurePanel
|
||||
//
|
||||
this.featurePanel.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.featurePanel.AutoScroll = true;
|
||||
this.featurePanel.Controls.Add(this.rtbDescription);
|
||||
this.featurePanel.Location = new System.Drawing.Point(69, 170);
|
||||
this.featurePanel.Name = "featurePanel";
|
||||
this.featurePanel.Size = new System.Drawing.Size(852, 365);
|
||||
this.featurePanel.TabIndex = 232;
|
||||
//
|
||||
// rtbDescription
|
||||
//
|
||||
this.rtbDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.rtbDescription.BackColor = System.Drawing.Color.Silver;
|
||||
this.rtbDescription.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.rtbDescription.Location = new System.Drawing.Point(3, 3);
|
||||
this.rtbDescription.Name = "rtbDescription";
|
||||
this.rtbDescription.Size = new System.Drawing.Size(345, 55);
|
||||
this.rtbDescription.TabIndex = 233;
|
||||
this.rtbDescription.Text = "";
|
||||
this.rtbDescription.Visible = false;
|
||||
//
|
||||
// lblHeader
|
||||
//
|
||||
this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lblHeader.AutoEllipsis = true;
|
||||
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 21.25F);
|
||||
this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.lblHeader.Location = new System.Drawing.Point(69, 22);
|
||||
this.lblHeader.Name = "lblHeader";
|
||||
this.lblHeader.Size = new System.Drawing.Size(771, 84);
|
||||
this.lblHeader.TabIndex = 234;
|
||||
this.lblHeader.Text = "Choose privacy settings for your device";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.AutoEllipsis = true;
|
||||
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(73, 66);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(837, 66);
|
||||
this.label1.TabIndex = 235;
|
||||
this.label1.Text = "Good news!\r\nWith these privacy settings, you\'re in control of what’s shared and s" +
|
||||
"hown within Microsoft.\r\n\r\nTo accept, choose \"Accept and Apply.\" If you prefer de" +
|
||||
"fault settings, select \"Decline.\"";
|
||||
//
|
||||
// btnRevert
|
||||
//
|
||||
this.btnRevert.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnRevert.AutoEllipsis = true;
|
||||
this.btnRevert.BackColor = System.Drawing.Color.White;
|
||||
this.btnRevert.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnRevert.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.btnRevert.FlatAppearance.BorderSize = 2;
|
||||
this.btnRevert.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnRevert.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnRevert.Font = new System.Drawing.Font("Arial", 9.75F);
|
||||
this.btnRevert.Location = new System.Drawing.Point(473, 565);
|
||||
this.btnRevert.Name = "btnRevert";
|
||||
this.btnRevert.Size = new System.Drawing.Size(220, 40);
|
||||
this.btnRevert.TabIndex = 238;
|
||||
this.btnRevert.TabStop = false;
|
||||
this.btnRevert.Text = "Decline";
|
||||
this.btnRevert.UseVisualStyleBackColor = false;
|
||||
this.btnRevert.Click += new System.EventHandler(this.btnRevert_Click);
|
||||
//
|
||||
// btnApply
|
||||
//
|
||||
this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnApply.BackColor = System.Drawing.Color.White;
|
||||
this.btnApply.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnApply.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnApply.FlatAppearance.BorderSize = 2;
|
||||
this.btnApply.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnApply.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnApply.Font = new System.Drawing.Font("Arial", 9.75F);
|
||||
this.btnApply.Location = new System.Drawing.Point(699, 565);
|
||||
this.btnApply.Name = "btnApply";
|
||||
this.btnApply.Size = new System.Drawing.Size(222, 40);
|
||||
this.btnApply.TabIndex = 237;
|
||||
this.btnApply.TabStop = false;
|
||||
this.btnApply.Text = "Accept and apply";
|
||||
this.btnApply.UseCompatibleTextRendering = true;
|
||||
this.btnApply.UseVisualStyleBackColor = false;
|
||||
this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label2.AutoEllipsis = true;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.Location = new System.Drawing.Point(84, 142);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(158, 16);
|
||||
this.label2.TabIndex = 239;
|
||||
this.label2.Text = "Last updated October 2024";
|
||||
//
|
||||
// ExperienceView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.btnRevert);
|
||||
this.Controls.Add(this.btnApply);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.lblHeader);
|
||||
this.Controls.Add(this.featurePanel);
|
||||
this.Controls.Add(this.btnBack);
|
||||
this.Name = "ExperienceView";
|
||||
this.Size = new System.Drawing.Size(959, 631);
|
||||
this.featurePanel.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button btnBack;
|
||||
private System.Windows.Forms.FlowLayoutPanel featurePanel;
|
||||
private System.Windows.Forms.RichTextBox rtbDescription;
|
||||
private System.Windows.Forms.Label lblHeader;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button btnRevert;
|
||||
private System.Windows.Forms.Button btnApply;
|
||||
private System.Windows.Forms.Label label2;
|
||||
}
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
using FlybyScript;
|
||||
using Settings.Ads;
|
||||
using Settings.Privacy;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Views
|
||||
{
|
||||
public partial class ExperienceView : UserControl
|
||||
{
|
||||
private Logger logger;
|
||||
private List<FeatureBase> features;
|
||||
|
||||
public ExperienceView()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetStyle();
|
||||
InitializeFeatures();
|
||||
LoadFeatures();
|
||||
}
|
||||
|
||||
private void SetStyle()
|
||||
{
|
||||
// Segoe MDL2 Assets assets
|
||||
btnBack.Text = "\uE72B";
|
||||
}
|
||||
|
||||
private void InitializeFeatures()
|
||||
{
|
||||
// Initialize logger
|
||||
logger = new Logger(rtbDescription);
|
||||
|
||||
// Initialize the list of features
|
||||
features = new List<FeatureBase>
|
||||
{
|
||||
new PrivacyExperience(logger),
|
||||
new ActivityHistory(logger),
|
||||
new LocationTracking(logger),
|
||||
new Telemetry(logger),
|
||||
new FileExplorerAds(logger),
|
||||
new FinishSetupAds(logger),
|
||||
new LockScreenAds(logger),
|
||||
new PersonalizedAds(logger),
|
||||
new SettingsAds(logger),
|
||||
new StartmenuAds(logger),
|
||||
new TailoredExperiences(logger),
|
||||
new TipsAndSuggestions(logger),
|
||||
new WelcomeExperienceAds(logger)
|
||||
};
|
||||
}
|
||||
|
||||
private void LoadFeatures()
|
||||
{
|
||||
// Ensure featurePanel is not null
|
||||
if (featurePanel == null)
|
||||
{
|
||||
MessageBox.Show("FeaturePanel is not initialized. Please check the designer.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear any existing controls in the featurePanel
|
||||
featurePanel.Controls.Clear();
|
||||
|
||||
// Populate featurePanel with FeaturePanels
|
||||
foreach (var feature in features)
|
||||
{
|
||||
var featurePanelInstance = new FeaturePanel(feature, logger)
|
||||
{
|
||||
Width = featurePanel.Width - 50, // Set the width to match the parent featurePanel
|
||||
Height = 160,
|
||||
BorderStyle = BorderStyle.None,
|
||||
BackColor = Color.FromArgb(245, 245, 245),
|
||||
Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, featurePanel.Width, 160, 20, 20)) // Rounded corners
|
||||
};
|
||||
|
||||
featurePanel.Controls.Add(featurePanelInstance);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnBack_Click(object sender, EventArgs e)
|
||||
{
|
||||
SwitchView.GoBack(this.Parent as Panel);
|
||||
}
|
||||
|
||||
// Import rounded corners
|
||||
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
|
||||
private static extern IntPtr CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse);
|
||||
|
||||
private void btnApply_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var feature in features)
|
||||
{
|
||||
if (!feature.CheckFeature()) // If feature is not enabled
|
||||
{
|
||||
feature.DoFeature(); // Apply feature
|
||||
logger.Log($"{feature.ID()} enabled.", Color.Green);
|
||||
}
|
||||
}
|
||||
LoadFeatures();
|
||||
MessageBox.Show("All features have been applied.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void btnRevert_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var feature in features)
|
||||
{
|
||||
if (feature.CheckFeature())
|
||||
{
|
||||
feature.UndoFeature(); // Revert feature
|
||||
logger.Log($"{feature.ID()} reverted.", Color.Red);
|
||||
}
|
||||
}
|
||||
LoadFeatures();
|
||||
MessageBox.Show("All features have been reverted.", "Revert Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
-449
@@ -1,449 +0,0 @@
|
||||
namespace Views
|
||||
{
|
||||
partial class MediaView
|
||||
{
|
||||
/// <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 Komponenten-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.btnBack = new System.Windows.Forms.Button();
|
||||
this.rtbLog = new System.Windows.Forms.RichTextBox();
|
||||
this.comboBoxDrives = new System.Windows.Forms.ComboBox();
|
||||
this.btnStart = new System.Windows.Forms.Button();
|
||||
this.lblDriveInfo = new System.Windows.Forms.Label();
|
||||
this.lblDeviceIDInfo = new System.Windows.Forms.Label();
|
||||
this.lblStatusInfo = new System.Windows.Forms.Label();
|
||||
this.btnSelect = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.btnMCT = new System.Windows.Forms.Button();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.progressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.lblStatus = new System.Windows.Forms.Label();
|
||||
this.checkCreateUnattend = new System.Windows.Forms.CheckBox();
|
||||
this.comboBoxDriveLetters = new System.Windows.Forms.ComboBox();
|
||||
this.linkShowDiskList = new System.Windows.Forms.LinkLabel();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.lblDriveLetterInfo = new System.Windows.Forms.Label();
|
||||
this.lblPartitionSchemeInfo = new System.Windows.Forms.Label();
|
||||
this.comboBoxPartitionScheme = new System.Windows.Forms.ComboBox();
|
||||
this.btnInstallAssistant = new System.Windows.Forms.Button();
|
||||
this.tt = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.linkPCHealthCheckApp = new System.Windows.Forms.LinkLabel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnBack
|
||||
//
|
||||
this.btnBack.AutoSize = true;
|
||||
this.btnBack.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control;
|
||||
this.btnBack.FlatAppearance.BorderSize = 0;
|
||||
this.btnBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnBack.Font = new System.Drawing.Font("Segoe MDL2 Assets", 14F, System.Drawing.FontStyle.Bold);
|
||||
this.btnBack.ForeColor = System.Drawing.Color.DarkGray;
|
||||
this.btnBack.Location = new System.Drawing.Point(3, 3);
|
||||
this.btnBack.Name = "btnBack";
|
||||
this.btnBack.Size = new System.Drawing.Size(34, 29);
|
||||
this.btnBack.TabIndex = 231;
|
||||
this.btnBack.Text = "...";
|
||||
this.btnBack.UseVisualStyleBackColor = true;
|
||||
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
|
||||
//
|
||||
// rtbLog
|
||||
//
|
||||
this.rtbLog.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.rtbLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230)))));
|
||||
this.rtbLog.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.rtbLog.Enabled = false;
|
||||
this.rtbLog.Font = new System.Drawing.Font("Segoe UI Variable Small Light", 9.75F);
|
||||
this.rtbLog.Location = new System.Drawing.Point(59, 362);
|
||||
this.rtbLog.Name = "rtbLog";
|
||||
this.rtbLog.Size = new System.Drawing.Size(835, 148);
|
||||
this.rtbLog.TabIndex = 234;
|
||||
this.rtbLog.Text = "Ready";
|
||||
//
|
||||
// comboBoxDrives
|
||||
//
|
||||
this.comboBoxDrives.Enabled = false;
|
||||
this.comboBoxDrives.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.comboBoxDrives.FormattingEnabled = true;
|
||||
this.comboBoxDrives.Location = new System.Drawing.Point(59, 258);
|
||||
this.comboBoxDrives.Name = "comboBoxDrives";
|
||||
this.comboBoxDrives.Size = new System.Drawing.Size(121, 25);
|
||||
this.comboBoxDrives.TabIndex = 235;
|
||||
//
|
||||
// btnStart
|
||||
//
|
||||
this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnStart.BackColor = System.Drawing.Color.White;
|
||||
this.btnStart.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnStart.Enabled = false;
|
||||
this.btnStart.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnStart.FlatAppearance.BorderSize = 2;
|
||||
this.btnStart.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnStart.Font = new System.Drawing.Font("Arial", 9.75F);
|
||||
this.btnStart.Location = new System.Drawing.Point(671, 562);
|
||||
this.btnStart.Name = "btnStart";
|
||||
this.btnStart.Size = new System.Drawing.Size(205, 40);
|
||||
this.btnStart.TabIndex = 236;
|
||||
this.btnStart.TabStop = false;
|
||||
this.btnStart.Text = "Start";
|
||||
this.btnStart.UseCompatibleTextRendering = true;
|
||||
this.btnStart.UseVisualStyleBackColor = false;
|
||||
this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
|
||||
//
|
||||
// lblDriveInfo
|
||||
//
|
||||
this.lblDriveInfo.AutoEllipsis = true;
|
||||
this.lblDriveInfo.Enabled = false;
|
||||
this.lblDriveInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblDriveInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.lblDriveInfo.Location = new System.Drawing.Point(55, 194);
|
||||
this.lblDriveInfo.Name = "lblDriveInfo";
|
||||
this.lblDriveInfo.Size = new System.Drawing.Size(182, 32);
|
||||
this.lblDriveInfo.TabIndex = 237;
|
||||
this.lblDriveInfo.Tag = "";
|
||||
this.lblDriveInfo.Text = "Drive Properties";
|
||||
//
|
||||
// lblDeviceIDInfo
|
||||
//
|
||||
this.lblDeviceIDInfo.AutoEllipsis = true;
|
||||
this.lblDeviceIDInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblDeviceIDInfo.Location = new System.Drawing.Point(57, 240);
|
||||
this.lblDeviceIDInfo.Name = "lblDeviceIDInfo";
|
||||
this.lblDeviceIDInfo.Size = new System.Drawing.Size(79, 15);
|
||||
this.lblDeviceIDInfo.TabIndex = 238;
|
||||
this.lblDeviceIDInfo.Tag = "";
|
||||
this.lblDeviceIDInfo.Text = "Device ID";
|
||||
//
|
||||
// lblStatusInfo
|
||||
//
|
||||
this.lblStatusInfo.AutoEllipsis = true;
|
||||
this.lblStatusInfo.Enabled = false;
|
||||
this.lblStatusInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblStatusInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.lblStatusInfo.Location = new System.Drawing.Point(55, 328);
|
||||
this.lblStatusInfo.Name = "lblStatusInfo";
|
||||
this.lblStatusInfo.Size = new System.Drawing.Size(114, 31);
|
||||
this.lblStatusInfo.TabIndex = 241;
|
||||
this.lblStatusInfo.Tag = "";
|
||||
this.lblStatusInfo.Text = "Status";
|
||||
//
|
||||
// btnSelect
|
||||
//
|
||||
this.btnSelect.BackColor = System.Drawing.Color.White;
|
||||
this.btnSelect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSelect.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.btnSelect.FlatAppearance.BorderSize = 2;
|
||||
this.btnSelect.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.btnSelect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnSelect.Font = new System.Drawing.Font("Arial", 8.75F);
|
||||
this.btnSelect.Location = new System.Drawing.Point(60, 114);
|
||||
this.btnSelect.Name = "btnSelect";
|
||||
this.btnSelect.Size = new System.Drawing.Size(132, 36);
|
||||
this.btnSelect.TabIndex = 242;
|
||||
this.btnSelect.TabStop = false;
|
||||
this.btnSelect.Text = "Select";
|
||||
this.tt.SetToolTip(this.btnSelect, "This built-in method prepares a USB drive for a clean install, enabling a fresh r" +
|
||||
"einstallation of your system.");
|
||||
this.btnSelect.UseCompatibleTextRendering = true;
|
||||
this.btnSelect.UseVisualStyleBackColor = false;
|
||||
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label6.Location = new System.Drawing.Point(58, 96);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(76, 15);
|
||||
this.label6.TabIndex = 243;
|
||||
this.label6.Tag = "";
|
||||
this.label6.Text = "Select ISO file";
|
||||
//
|
||||
// btnMCT
|
||||
//
|
||||
this.btnMCT.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnMCT.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnMCT.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnMCT.FlatAppearance.BorderSize = 2;
|
||||
this.btnMCT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
|
||||
this.btnMCT.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnMCT.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnMCT.ForeColor = System.Drawing.Color.White;
|
||||
this.btnMCT.Location = new System.Drawing.Point(463, 114);
|
||||
this.btnMCT.Name = "btnMCT";
|
||||
this.btnMCT.Size = new System.Drawing.Size(214, 36);
|
||||
this.btnMCT.TabIndex = 244;
|
||||
this.btnMCT.TabStop = false;
|
||||
this.btnMCT.Text = "Media Creation Tool (Microsoft)";
|
||||
this.tt.SetToolTip(this.btnMCT, "If you want to perform a reinstall or clean install of Windows 11 on a new or use" +
|
||||
"d PC, use this option to download the media creation tool to make a bootable USB" +
|
||||
" or DVD.");
|
||||
this.btnMCT.UseCompatibleTextRendering = true;
|
||||
this.btnMCT.UseVisualStyleBackColor = false;
|
||||
this.btnMCT.Click += new System.EventHandler(this.btnMCT_Click);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label7.Location = new System.Drawing.Point(233, 96);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(85, 15);
|
||||
this.label7.TabIndex = 245;
|
||||
this.label7.Tag = "";
|
||||
this.label7.Text = "or prepare with";
|
||||
//
|
||||
// progressBar
|
||||
//
|
||||
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.progressBar.Enabled = false;
|
||||
this.progressBar.Location = new System.Drawing.Point(60, 516);
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Size = new System.Drawing.Size(834, 23);
|
||||
this.progressBar.TabIndex = 246;
|
||||
//
|
||||
// lblStatus
|
||||
//
|
||||
this.lblStatus.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.lblStatus.AutoEllipsis = true;
|
||||
this.lblStatus.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230)))));
|
||||
this.lblStatus.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblStatus.Location = new System.Drawing.Point(361, 519);
|
||||
this.lblStatus.Name = "lblStatus";
|
||||
this.lblStatus.Size = new System.Drawing.Size(226, 18);
|
||||
this.lblStatus.TabIndex = 247;
|
||||
this.lblStatus.Tag = "";
|
||||
this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// checkCreateUnattend
|
||||
//
|
||||
this.checkCreateUnattend.Appearance = System.Windows.Forms.Appearance.Button;
|
||||
this.checkCreateUnattend.AutoEllipsis = true;
|
||||
this.checkCreateUnattend.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
|
||||
this.checkCreateUnattend.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.checkCreateUnattend.Font = new System.Drawing.Font("Arial", 8.75F);
|
||||
this.checkCreateUnattend.Location = new System.Drawing.Point(73, 156);
|
||||
this.checkCreateUnattend.Name = "checkCreateUnattend";
|
||||
this.checkCreateUnattend.Size = new System.Drawing.Size(214, 25);
|
||||
this.checkCreateUnattend.TabIndex = 250;
|
||||
this.checkCreateUnattend.Text = "Skip Hardware limits and go local";
|
||||
this.checkCreateUnattend.UseVisualStyleBackColor = true;
|
||||
this.checkCreateUnattend.Visible = false;
|
||||
this.checkCreateUnattend.CheckedChanged += new System.EventHandler(this.checkCreateUnattend_CheckedChanged);
|
||||
//
|
||||
// comboBoxDriveLetters
|
||||
//
|
||||
this.comboBoxDriveLetters.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxDriveLetters.Enabled = false;
|
||||
this.comboBoxDriveLetters.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.comboBoxDriveLetters.FormattingEnabled = true;
|
||||
this.comboBoxDriveLetters.Location = new System.Drawing.Point(210, 258);
|
||||
this.comboBoxDriveLetters.Name = "comboBoxDriveLetters";
|
||||
this.comboBoxDriveLetters.Size = new System.Drawing.Size(121, 25);
|
||||
this.comboBoxDriveLetters.TabIndex = 251;
|
||||
//
|
||||
// linkShowDiskList
|
||||
//
|
||||
this.linkShowDiskList.Enabled = false;
|
||||
this.linkShowDiskList.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.linkShowDiskList.Location = new System.Drawing.Point(60, 286);
|
||||
this.linkShowDiskList.Name = "linkShowDiskList";
|
||||
this.linkShowDiskList.Size = new System.Drawing.Size(177, 16);
|
||||
this.linkShowDiskList.TabIndex = 252;
|
||||
this.linkShowDiskList.TabStop = true;
|
||||
this.linkShowDiskList.Text = "Help me identify the device id";
|
||||
this.linkShowDiskList.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkShowDiskList_LinkClicked);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoEllipsis = true;
|
||||
this.label3.Font = new System.Drawing.Font("Segoe UI Variable Small", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(192)))));
|
||||
this.label3.Location = new System.Drawing.Point(55, 25);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(232, 32);
|
||||
this.label3.TabIndex = 253;
|
||||
this.label3.Tag = "";
|
||||
this.label3.Text = "Create Installation Media";
|
||||
//
|
||||
// lblDriveLetterInfo
|
||||
//
|
||||
this.lblDriveLetterInfo.AutoEllipsis = true;
|
||||
this.lblDriveLetterInfo.Enabled = false;
|
||||
this.lblDriveLetterInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblDriveLetterInfo.Location = new System.Drawing.Point(207, 240);
|
||||
this.lblDriveLetterInfo.Name = "lblDriveLetterInfo";
|
||||
this.lblDriveLetterInfo.Size = new System.Drawing.Size(79, 15);
|
||||
this.lblDriveLetterInfo.TabIndex = 254;
|
||||
this.lblDriveLetterInfo.Tag = "";
|
||||
this.lblDriveLetterInfo.Text = "Device Letter";
|
||||
//
|
||||
// lblPartitionSchemeInfo
|
||||
//
|
||||
this.lblPartitionSchemeInfo.AutoEllipsis = true;
|
||||
this.lblPartitionSchemeInfo.Enabled = false;
|
||||
this.lblPartitionSchemeInfo.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPartitionSchemeInfo.Location = new System.Drawing.Point(361, 240);
|
||||
this.lblPartitionSchemeInfo.Name = "lblPartitionSchemeInfo";
|
||||
this.lblPartitionSchemeInfo.Size = new System.Drawing.Size(109, 15);
|
||||
this.lblPartitionSchemeInfo.TabIndex = 255;
|
||||
this.lblPartitionSchemeInfo.Tag = "";
|
||||
this.lblPartitionSchemeInfo.Text = "Partition scheme";
|
||||
//
|
||||
// comboBoxPartitionScheme
|
||||
//
|
||||
this.comboBoxPartitionScheme.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxPartitionScheme.Enabled = false;
|
||||
this.comboBoxPartitionScheme.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.comboBoxPartitionScheme.FormattingEnabled = true;
|
||||
this.comboBoxPartitionScheme.Location = new System.Drawing.Point(364, 258);
|
||||
this.comboBoxPartitionScheme.Name = "comboBoxPartitionScheme";
|
||||
this.comboBoxPartitionScheme.Size = new System.Drawing.Size(126, 25);
|
||||
this.comboBoxPartitionScheme.TabIndex = 256;
|
||||
//
|
||||
// btnInstallAssistant
|
||||
//
|
||||
this.btnInstallAssistant.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnInstallAssistant.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnInstallAssistant.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(180)))));
|
||||
this.btnInstallAssistant.FlatAppearance.BorderSize = 2;
|
||||
this.btnInstallAssistant.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(103)))), ((int)(((byte)(160)))));
|
||||
this.btnInstallAssistant.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnInstallAssistant.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnInstallAssistant.ForeColor = System.Drawing.Color.White;
|
||||
this.btnInstallAssistant.Location = new System.Drawing.Point(236, 114);
|
||||
this.btnInstallAssistant.Name = "btnInstallAssistant";
|
||||
this.btnInstallAssistant.Size = new System.Drawing.Size(214, 36);
|
||||
this.btnInstallAssistant.TabIndex = 257;
|
||||
this.btnInstallAssistant.TabStop = false;
|
||||
this.btnInstallAssistant.Text = "Installation Assistant (Microsoft)";
|
||||
this.tt.SetToolTip(this.btnInstallAssistant, "This is the best option for installing Windows 11 on the device you’re currently " +
|
||||
"using.");
|
||||
this.btnInstallAssistant.UseCompatibleTextRendering = true;
|
||||
this.btnInstallAssistant.UseVisualStyleBackColor = false;
|
||||
this.btnInstallAssistant.Click += new System.EventHandler(this.btnInstallAssistant_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.AutoEllipsis = true;
|
||||
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(60, 57);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(846, 15);
|
||||
this.label1.TabIndex = 258;
|
||||
this.label1.Tag = "";
|
||||
this.label1.Text = "There are 3 options below for installing or creating Windows 11 media. Check out " +
|
||||
"each one to determine the best option for you.";
|
||||
//
|
||||
// linkPCHealthCheckApp
|
||||
//
|
||||
this.linkPCHealthCheckApp.ActiveLinkColor = System.Drawing.Color.RoyalBlue;
|
||||
this.linkPCHealthCheckApp.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | 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)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.linkPCHealthCheckApp.Location = new System.Drawing.Point(44, 605);
|
||||
this.linkPCHealthCheckApp.Name = "linkPCHealthCheckApp";
|
||||
this.linkPCHealthCheckApp.Size = new System.Drawing.Size(566, 16);
|
||||
this.linkPCHealthCheckApp.TabIndex = 260;
|
||||
this.linkPCHealthCheckApp.TabStop = true;
|
||||
this.linkPCHealthCheckApp.Text = "Before installing, please refer to the WhyNotWin11 app to confirm your device mee" +
|
||||
"ts the minimum system requirements";
|
||||
this.linkPCHealthCheckApp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPCHealthCheckApp_LinkClicked);
|
||||
//
|
||||
// MediaView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoScroll = true;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.Controls.Add(this.linkPCHealthCheckApp);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnInstallAssistant);
|
||||
this.Controls.Add(this.comboBoxPartitionScheme);
|
||||
this.Controls.Add(this.lblPartitionSchemeInfo);
|
||||
this.Controls.Add(this.lblDriveLetterInfo);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.linkShowDiskList);
|
||||
this.Controls.Add(this.comboBoxDriveLetters);
|
||||
this.Controls.Add(this.checkCreateUnattend);
|
||||
this.Controls.Add(this.lblStatus);
|
||||
this.Controls.Add(this.progressBar);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.btnMCT);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.btnSelect);
|
||||
this.Controls.Add(this.lblStatusInfo);
|
||||
this.Controls.Add(this.lblDeviceIDInfo);
|
||||
this.Controls.Add(this.lblDriveInfo);
|
||||
this.Controls.Add(this.btnStart);
|
||||
this.Controls.Add(this.comboBoxDrives);
|
||||
this.Controls.Add(this.rtbLog);
|
||||
this.Controls.Add(this.btnBack);
|
||||
this.Name = "MediaView";
|
||||
this.Size = new System.Drawing.Size(959, 631);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button btnBack;
|
||||
private System.Windows.Forms.RichTextBox rtbLog;
|
||||
private System.Windows.Forms.ComboBox comboBoxDrives;
|
||||
private System.Windows.Forms.Button btnStart;
|
||||
private System.Windows.Forms.Label lblDriveInfo;
|
||||
private System.Windows.Forms.Label lblDeviceIDInfo;
|
||||
private System.Windows.Forms.Label lblStatusInfo;
|
||||
private System.Windows.Forms.Button btnSelect;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Button btnMCT;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.ProgressBar progressBar;
|
||||
private System.Windows.Forms.Label lblStatus;
|
||||
private System.Windows.Forms.CheckBox checkCreateUnattend;
|
||||
private System.Windows.Forms.ComboBox comboBoxDriveLetters;
|
||||
private System.Windows.Forms.LinkLabel linkShowDiskList;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label lblDriveLetterInfo;
|
||||
private System.Windows.Forms.Label lblPartitionSchemeInfo;
|
||||
private System.Windows.Forms.ComboBox comboBoxPartitionScheme;
|
||||
private System.Windows.Forms.Button btnInstallAssistant;
|
||||
private System.Windows.Forms.ToolTip tt;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.LinkLabel linkPCHealthCheckApp;
|
||||
}
|
||||
}
|
||||
@@ -1,301 +0,0 @@
|
||||
using FlybyScript;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Views
|
||||
{
|
||||
public partial class MediaView : UserControl
|
||||
{
|
||||
private USBManagement usbManagement;
|
||||
private Logger logger;
|
||||
|
||||
private string selectedIsoPath;
|
||||
|
||||
public MediaView()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetStyle();
|
||||
|
||||
InitializeUSBDriveList();
|
||||
logger = new Logger(rtbLog);
|
||||
usbManagement = new USBManagement(logger, updateLabelStatus, progressBar);
|
||||
}
|
||||
|
||||
private void SetStyle()
|
||||
{
|
||||
// Segoe MDL2 Assets
|
||||
btnBack.Text = "\uE72B";
|
||||
}
|
||||
|
||||
private void updateLabelStatus(string statusText)
|
||||
{
|
||||
if (lblStatus.InvokeRequired)
|
||||
{
|
||||
lblStatus.Invoke(new Action(() => lblStatus.Text = statusText));
|
||||
}
|
||||
else
|
||||
{
|
||||
lblStatus.Text = statusText;
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeUSBDriveList()
|
||||
{
|
||||
// Initialize disk numbers
|
||||
comboBoxDrives.Items.Clear();
|
||||
comboBoxDrives.Items.AddRange(new object[] { "Select (e.g., 1, 2, 3...)", "1", "2", "3" });
|
||||
comboBoxDrives.SelectedIndex = 0;
|
||||
|
||||
// Initialize removable drives
|
||||
comboBoxDriveLetters.Items.Clear();
|
||||
var removableDrives = DriveInfo.GetDrives()
|
||||
.Where(d => d.DriveType == DriveType.Removable)
|
||||
.Select(d => d.Name)
|
||||
.ToArray();
|
||||
|
||||
if (removableDrives.Any())
|
||||
{
|
||||
comboBoxDriveLetters.Items.AddRange(removableDrives);
|
||||
comboBoxDriveLetters.SelectedIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// MessageBox.Show("No removable drives found.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
comboBoxDriveLetters.Enabled = comboBoxDrives.Enabled = false;
|
||||
}
|
||||
|
||||
// Initialize partition schemes
|
||||
comboBoxPartitionScheme.Items.Clear();
|
||||
comboBoxPartitionScheme.Items.Add("GPT");
|
||||
comboBoxPartitionScheme.Items.Add("MBR");
|
||||
comboBoxPartitionScheme.SelectedIndex = 0; // default to gpt
|
||||
}
|
||||
|
||||
private async Task ShowDiskList()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Use chcp command to get the current code page of the user's system
|
||||
ProcessStartInfo chcpInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "cmd.exe",
|
||||
Arguments = "/C chcp",
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
string codePageOutput;
|
||||
using (Process chcpProcess = Process.Start(chcpInfo))
|
||||
{
|
||||
codePageOutput = await chcpProcess.StandardOutput.ReadToEndAsync();
|
||||
chcpProcess.WaitForExit();
|
||||
}
|
||||
|
||||
// Extract the code page number from chcp output
|
||||
int codePage = 850; // Default to 850 if detection fails
|
||||
var match = System.Text.RegularExpressions.Regex.Match(codePageOutput, @"\d+");
|
||||
if (match.Success)
|
||||
{
|
||||
codePage = int.Parse(match.Value); // Parse our detected code page
|
||||
}
|
||||
|
||||
ProcessStartInfo processInfo = new ProcessStartInfo
|
||||
{
|
||||
FileName = "diskpart.exe",
|
||||
RedirectStandardInput = true,
|
||||
RedirectStandardOutput = true,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
StandardOutputEncoding = Encoding.GetEncoding(codePage)
|
||||
};
|
||||
|
||||
// Start the process
|
||||
using (Process process = Process.Start(processInfo))
|
||||
{
|
||||
using (StreamWriter writer = process.StandardInput)
|
||||
{
|
||||
if (writer.BaseStream.CanWrite)
|
||||
{
|
||||
writer.WriteLine("list disk");
|
||||
}
|
||||
}
|
||||
|
||||
string output = await process.StandardOutput.ReadToEndAsync();
|
||||
process.WaitForExit();
|
||||
MessageBox.Show(output, "Available Disks", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"An error occurred while listing disks: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
// Event handler for starting the format and copy process
|
||||
private async void btnStart_Click(object sender, EventArgs e)
|
||||
{
|
||||
btnStart.Enabled = false; // Disable the Start button
|
||||
|
||||
// Validate Disk Number
|
||||
if (string.IsNullOrEmpty(comboBoxDrives.Text) || !int.TryParse(comboBoxDrives.Text, out int diskNumber))
|
||||
{
|
||||
logger.Log("Please enter a valid Disk Number.", Color.Red);
|
||||
btnStart.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Validate Drive Letter
|
||||
if (string.IsNullOrEmpty(comboBoxDriveLetters.SelectedItem?.ToString()))
|
||||
{
|
||||
logger.Log("Please select a valid Drive Letter.", Color.Red);
|
||||
btnStart.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the selected drive letter and partition scheme
|
||||
string driveLetter = comboBoxDriveLetters.SelectedItem.ToString().Trim();
|
||||
string partitionScheme = comboBoxPartitionScheme.SelectedItem.ToString().Trim(); // Get the selected partition scheme
|
||||
|
||||
try
|
||||
{
|
||||
// Check if the selected drive is a USB stick
|
||||
DriveInfo selectedDrive = DriveInfo.GetDrives()
|
||||
.FirstOrDefault(d => d.Name.StartsWith(driveLetter));
|
||||
|
||||
if (selectedDrive == null || selectedDrive.DriveType != DriveType.Removable)
|
||||
{
|
||||
logger.Log("Selected drive is not a compatible USB stick. Only USB sticks are supported.", Color.Red);
|
||||
btnStart.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
logger.Log($"Starting to format Disk {diskNumber} ({driveLetter}) as {partitionScheme}...", Color.Black);
|
||||
|
||||
// Format the drive with the selected partition scheme
|
||||
await usbManagement.FormatDriveAsync(diskNumber.ToString(), partitionScheme); // Pass the disk number and selected partition scheme
|
||||
logger.Log($"Disk {diskNumber} formatted successfully.", Color.Black);
|
||||
logger.Log($"Disk {diskNumber} is now bootable.", Color.Black);
|
||||
|
||||
// Copy ISO and create unattend.xml if checked
|
||||
bool createUnattend = checkCreateUnattend.Checked;
|
||||
await usbManagement.CopyISOWithUnattendAsync(driveLetter, selectedIsoPath, createUnattend);
|
||||
|
||||
logger.Log("Process completed!", Color.Green);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Log($"An error occurred during the process: {ex.Message}", Color.Red);
|
||||
}
|
||||
finally
|
||||
{
|
||||
btnStart.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSelect_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog openFileDialog = new OpenFileDialog())
|
||||
{
|
||||
openFileDialog.Filter = "ISO Files (*.iso)|*.iso|All Files (*.*)|*.*";
|
||||
openFileDialog.Title = "Select an ISO File";
|
||||
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
selectedIsoPath = openFileDialog.FileName;
|
||||
logger.Log($"Selected ISO file: {selectedIsoPath}", Color.Black);
|
||||
|
||||
ToggleIsoControls(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Log("ISO file selection was cancelled.", Color.Red);
|
||||
ToggleIsoControls(false); // Disable ISO-related controls if selection is canceled
|
||||
}
|
||||
|
||||
// MCT and Install Assistant buttons are always enabled
|
||||
btnMCT.Enabled = true;
|
||||
btnInstallAssistant.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Helper method to toggle ISO-related controls
|
||||
private void ToggleIsoControls(bool isEnabled)
|
||||
{
|
||||
checkCreateUnattend.Visible = isEnabled;
|
||||
comboBoxDrives.Enabled = isEnabled;
|
||||
comboBoxDriveLetters.Enabled = isEnabled;
|
||||
comboBoxPartitionScheme.Enabled = isEnabled;
|
||||
lblDeviceIDInfo.Enabled = isEnabled;
|
||||
lblDriveInfo.Enabled = isEnabled;
|
||||
rtbLog.Enabled = isEnabled;
|
||||
lblDriveLetterInfo.Enabled = isEnabled;
|
||||
lblPartitionSchemeInfo.Enabled = isEnabled;
|
||||
lblStatusInfo.Enabled = isEnabled;
|
||||
linkShowDiskList.Enabled = isEnabled;
|
||||
btnStart.Enabled = isEnabled;
|
||||
}
|
||||
|
||||
|
||||
private void checkCreateUnattend_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkCreateUnattend.Checked)
|
||||
{
|
||||
checkCreateUnattend.BackColor = Color.LightGreen;
|
||||
|
||||
MessageBox.Show(
|
||||
"You have enabled the bypass for Windows 11 hardware requirements.\n\n" +
|
||||
"This will: \n" +
|
||||
"- Skip TPM 2.0 checks\n" +
|
||||
"- Bypass the 4GB+ RAM requirement\n" +
|
||||
"- Disable Secure Boot requirement\n" +
|
||||
"- Allow creating a local account (no online setup required)\n\n" +
|
||||
"During installation, Windows will offer the 'I don't have internet' option for offline account creation.",
|
||||
"Bypass Enabled",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
checkCreateUnattend.BackColor = Color.White;
|
||||
}
|
||||
}
|
||||
|
||||
private async void linkShowDiskList_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
await ShowDiskList();
|
||||
}
|
||||
|
||||
private async void btnMCT_Click(object sender, EventArgs e)
|
||||
{
|
||||
string mediaCreationToolUrl = "https://go.microsoft.com/fwlink/?linkid=2156295";
|
||||
await usbManagement.DownloadMediaTool(mediaCreationToolUrl, "MediaCreationTool.exe");
|
||||
}
|
||||
|
||||
private async void btnInstallAssistant_Click(object sender, EventArgs e)
|
||||
{
|
||||
string installAssistantUrl = "https://go.microsoft.com/fwlink/?linkid=2171764";
|
||||
await usbManagement.DownloadMediaTool(installAssistantUrl, "Windows11InstallationAssistant.exe");
|
||||
}
|
||||
|
||||
private async void linkPCHealthCheckApp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
string installAssistantUrl = "https://github.com/rcmaehl/WhyNotWin11/releases/download/2.6.1.1/WhyNotWin11.exe";
|
||||
await usbManagement.DownloadMediaTool(installAssistantUrl, "WhyNotWin11.exe");
|
||||
}
|
||||
|
||||
private void btnBack_Click(object sender, EventArgs e)
|
||||
{
|
||||
SwitchView.GoBack(this.Parent as Panel);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
|
||||
für die Anwendung erforderlich ist.
|
||||
-->
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
@@ -51,7 +51,6 @@
|
||||
auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden.
|
||||
|
||||
Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net481" />
|
||||
</packages>
|
||||
@@ -1,13 +1,95 @@
|
||||
# Flyby11 (FlybyScript) Windows 11 for All – No Specs, No Problem!
|
||||
Flyby11 is a simple patcher that removes the annoying restrictions preventing you from installing Windows 11 (24H2) on unsupported hardware. Got an old PC? No TPM, Secure Boot, or your processor isn't supported? Flyby11 lets you install Windows 11 24H2 anyway.
|
||||
No complicated steps. Just run the tool, and you'll be running Windows 11 on your outdated machine in no time. Think of it as sneaking through the back door without anyone noticing.
|
||||
# 🐝 Flyoobe (Flyby11) – Windows 11 for All
|
||||
_No specs? No problem!_
|
||||
|
||||
# Technical Overview
|
||||
Flyby11 leverages a feature of the Windows 11 setup process that uses the Windows Server variant of the installation. This variant, unlike the regular Windows 11 setup, skips most hardware compatibility checks, allowing it to run on unsupported systems. Here’s a more technical breakdown of the process:
|
||||
<img width="1024" height="1024" alt="Flyoobe_mockup2" src="https://github.com/user-attachments/assets/8096fa8f-e1b5-4f88-8dfd-938327177aea" />
|
||||
|
||||
Windows Server Setup: The tool uses the Windows Server variant of the setup, which avoids the usual checks for things like TPM, Secure Boot, and specific processor requirements.
|
||||
Install Regular Windows 11: Even though the setup runs in server mode, it installs the normal Windows 11 version (not the server version).
|
||||
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)
|
||||
---
|
||||
|
||||
_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._
|
||||
## 📢 Quick Note for Returning Users
|
||||
**Flyoobe is the natural evolution of Flyby11.**
|
||||
The classic Flyby11 upgrader still exists and is included inside Flyoobe,
|
||||
plus it's also available as a **separate download** if you only want the minimal upgrade tool.
|
||||
|
||||
You can now **choose**:
|
||||
|
||||
| Version | Purpose | Features | Download |
|
||||
|---------|---------|----------|----------|
|
||||
| **Flyoobe** (New) | Upgrade + OOBE Toolkit | • Windows 10 → 11 upgrades<br>• OOBE customization<br>• Tweaks & Debloat<br>• Scriptable setup extensions | [⬇ Download Flyoobe](https://github.com/builtbybel/Flyby11/releases/latest) |
|
||||
| **Flyby11** (Classic) | Upgrade Only | • Win10 → Win11 Inplace upgrade<br>• Hardware check bypass<br>• Minimal footprint | [⬇ Download Flyby11 Classic](https://github.com/builtbybel/Flyby11/releases/latest) |
|
||||
|
||||
---
|
||||
|
||||
## 🐝 Why Flyoobe?
|
||||
Originally, **Flyby11** was a simple patcher to remove the restrictions stopping you from installing Windows 11 (24H2) on unsupported hardware.
|
||||
Old PC? No TPM, no Secure Boot, unsupported CPU? Flyby11 let you install Windows 11 anyway.
|
||||
|
||||
After helping thousands upgrade, one thing became clear:
|
||||
**Bypassing checks is only half the battle.**
|
||||
We needed a **full setup solution** — one that respects user choices instead of Microsoft's defaults.
|
||||
|
||||
**Flyoobe** was the next step:
|
||||
- Skip the fluff
|
||||
- Remove the junk
|
||||
- Take full control from first boot
|
||||
|
||||
Because your PC should work for you, not the other way around.
|
||||
Flyoobe keeps the original idea alive and pushes it even further.
|
||||
|
||||
---
|
||||
|
||||
No complicated steps.
|
||||
**Just run the tool** (see ["Releases"](https://github.com/builtbybel/Flyby11/releases/latest)),
|
||||
unpack if needed, and you'll be running Windows 11 on your “unsupported” machine in no time.
|
||||
Think of it as sneaking through the back door without anyone noticing.
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Technical Overview
|
||||
**Flyby11 method:**
|
||||
- Uses Windows Server variant of setup → skips TPM, Secure Boot, CPU checks
|
||||
- Still installs **normal Windows 11**
|
||||
- ISO download/mount handled automatically (via [Fido script](https://github.com/pbatard/Fido))
|
||||
- Matches Microsoft’s own documented workaround for upgrading unsupported devices ([source](https://support.microsoft.com/en-us/windows/ways-to-install-windows-11-e0edbbfb-cfc5-4011-868b-2ce77ac7c70e))
|
||||
|
||||
---
|
||||
|
||||
## 💡 Why Keep Flyby11 Alive?
|
||||
- **Upgrade freedom** – Don’t ditch a perfectly fine PC just because Microsoft says so
|
||||
- **Eco-friendly** – Less e-waste from forced upgrades
|
||||
- **Save money** – No need for new hardware if yours still works
|
||||
|
||||
---
|
||||
|
||||
## ⚠ Disclaimer
|
||||
Flyby11/Flyoobe uses known, currently working methods to bypass Windows 11 24H2 restrictions.
|
||||
**POPCNT requirement** cannot be bypassed — needed for Win11 24H2.
|
||||
Introduced a compatibility checker in v2.3 to warn if unsupported.
|
||||
|
||||
---
|
||||
|
||||
## 📚 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)
|
||||
|
||||
Reality: Most still get monthly security updates, but:
|
||||
- Likely no automatic major version upgrades
|
||||
- Future updates may fail if new hardware features are required
|
||||
- Microsoft could block updates anytime
|
||||
|
||||
Bottom line: Works today — but unsupported means you accept the risk. 😎
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## ❤️ Support Development
|
||||
If Flyby11 or Flyoobe has helped you, consider supporting its continued development.
|
||||
Every bit helps keep the project alive and improving. 🙏💌☕
|
||||
|
||||
👉 [**Donate here**](https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG)
|
||||
@@ -1 +0,0 @@
|
||||
irm christitus.com/win | iex
|
||||
@@ -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.'\""
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"
|
||||
@@ -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."
|
||||
@@ -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)\""
|
||||
]
|
||||
}
|
||||
@@ -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)\""
|
||||
]
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
Reference in new issue
Block a user