Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee88265fc7 | ||
|
|
b8be95a820 | ||
|
|
714ac49d91 | ||
|
|
cfe5fea46e | ||
|
|
594c2fb051 | ||
|
|
c3aab0277c | ||
|
|
55a65e0bce | ||
|
|
c78b71bdc5 | ||
|
|
95a05390ec | ||
|
|
416a8ee475 | ||
|
|
44543166d4 | ||
|
|
e6ec735242 | ||
|
|
08bd643f22 | ||
|
|
33415eeb6d | ||
|
|
89accb614c | ||
|
|
79a8ddee7e | ||
|
|
cae76430ae | ||
|
|
03ad5e2051 | ||
|
|
5d91d42fc4 | ||
|
|
24a8820904 | ||
|
|
21fec64a2a |
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
*.c linguist-language=C
|
||||||
|
*.h linguist-language=C
|
||||||
|
*.cpp linguist-language=C++
|
||||||
|
*.cc linguist-language=C++
|
||||||
|
*.hpp linguist-language=C++
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.12.35527.113
|
VisualStudioVersion = 17.12.35527.113
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "FlybyScript\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "Flyby11\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}"
|
||||||
EndProject
|
EndProject
|
||||||
File renamed without changes.
File renamed without changes.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
File renamed without changes.
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -130,9 +130,10 @@
|
|||||||
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
<EmbeddedResource Include="Locales\Strings.hu.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
<EmbeddedResource Include="Locales\Strings.it.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
<EmbeddedResource Include="Locales\Strings.ja.resx" />
|
||||||
|
<EmbeddedResource Include="Locales\Strings.ko.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.nl.resx" />
|
<EmbeddedResource Include="Locales\Strings.nl.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
<EmbeddedResource Include="Locales\Strings.pl.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.ru.resx" />
|
<EmbeddedResource Include="Locales\Strings.pt-BR.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
<EmbeddedResource Include="Locales\Strings.sv-SE.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
<EmbeddedResource Include="Locales\Strings.tr.resx" />
|
||||||
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
<EmbeddedResource Include="Locales\Strings.zh-CN.resx" />
|
||||||
File renamed without changes.
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -280,6 +280,6 @@
|
|||||||
<value>Kiválasztás a számítógépről</value>
|
<value>Kiválasztás a számítógépről</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="msgClosing" xml:space="preserve">
|
<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>
|
<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>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
+11
-11
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
@@ -242,44 +242,44 @@
|
|||||||
</data>
|
</data>
|
||||||
<data name="msg_InstallReady" xml:space="preserve">
|
<data name="msg_InstallReady" xml:space="preserve">
|
||||||
<value>L'installazione di Windows 11 può ora procedere. Segui le istruzioni nella finestra di configurazione.</value>
|
<value>L'installazione di Windows 11 può ora procedere. Segui le istruzioni nella finestra di configurazione.</value>
|
||||||
<comment>Install</comment>
|
<comment>Installa</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugInstallReady" xml:space="preserve">
|
<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>
|
<value>Sei pronto per installare Windows 11 con hardware non supportato! Ignora il prompt "Windows Server"; tutto è pronto!</value>
|
||||||
<comment>Install</comment>
|
<comment>Installa</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugInstallRunElevated" xml:space="preserve">
|
<data name="_debugInstallRunElevated" xml:space="preserve">
|
||||||
<value>Avvio processo configurazione con privilegi elevati ...</value>
|
<value>Avvio processo configurazione con privilegi elevati ...</value>
|
||||||
<comment>Install</comment>
|
<comment>Installa</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
<data name="_debugStatusHandleIsoEx" xml:space="preserve">
|
||||||
<value>Oops! Qualcosa è andato storto:</value>
|
<value>Oops! Qualcosa è andato storto:</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Montaggio</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMounting" xml:space="preserve">
|
<data name="_debugStatusMounting" xml:space="preserve">
|
||||||
<value>Montaggio file...</value>
|
<value>Montaggio file...</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Montaggio</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
<data name="_debugStatusMountingFailed" xml:space="preserve">
|
||||||
<value>Impossibile montare il file ISO. Riprova.</value>
|
<value>Impossibile montare il file ISO. Riprova.</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Montaggio</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
<data name="_debugStatusMountingSuccess" xml:space="preserve">
|
||||||
<value>File ISO montato correttamente! Procediamo con l'installazione di Windows 11!</value>
|
<value>File ISO montato correttamente! Procediamo con l'installazione di Windows 11!</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Montaggio</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusRunning" xml:space="preserve">
|
<data name="_debugStatusRunning" xml:space="preserve">
|
||||||
<value>Ci siamo quasi! Preparazione installazione ...</value>
|
<value>Ci siamo quasi! Preparazione installazione ...</value>
|
||||||
<comment>Install</comment>
|
<comment>Installazione</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
<data name="_debugStatusSetupFileNotFound" xml:space="preserve">
|
||||||
<value>File configurazione non trovato in</value>
|
<value>File configurazione non trovato in</value>
|
||||||
<comment>Mounting</comment>
|
<comment>Montaggio</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
<data name="ctl_linkSelectComputer" xml:space="preserve">
|
||||||
<value>Seleziona dal computer</value>
|
<value>Seleziona dal computer</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="msgClosing" xml:space="preserve">
|
<data name="msgClosing" xml:space="preserve">
|
||||||
<value>Grazie per aver usato questa app!\n\nHo sviluppato questa app nel mio tempo libero per aiutarti ad aggiornare da Windows 10 a Windows 11 - anche su PC che, secondo i requisiti hardware di Microsoft, normalmente non sarebbero supportati.\nQuesta app ti aiuta ad evitare di acquistare un nuovo computer e contribuisce attivamente ad evitare di produrre rifiuti elettronici inutili.\nNormalmnte non chiedo nulla per i miei progetti - né per lo sviluppo né per il supporto.\nQuesta app è significativamente completa, offre tante funzionalità e richiede più supporto, ti sarei grato se considereresti di fare una piccola donazione volontaria, se sei in grado di farlo.\n\nOvviamente , solo se vuoi e puoi permettertelo.\nVuoi donare un piccolo contributo con Paypal?</value>
|
<value />
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Generated
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Buildnummer
|
// Buildnummer
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("3.0.500")]
|
[assembly: AssemblyVersion("3.10.510")]
|
||||||
[assembly: AssemblyFileVersion("3.0.500")]
|
[assembly: AssemblyFileVersion("3.10.510")]
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,15 @@
|
|||||||
|
// CpuCheck.cpp
|
||||||
|
#include "pch.h"
|
||||||
|
#include <intrin.h>
|
||||||
|
|
||||||
|
extern "C" __declspec(dllexport) bool __cdecl HasPopcnt()
|
||||||
|
{
|
||||||
|
int cpuInfo[4] = { 0 };
|
||||||
|
__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;
|
||||||
|
|
||||||
|
return hasSSE42 && hasPOPCNT;
|
||||||
|
}
|
||||||
@@ -0,0 +1,155 @@
|
|||||||
|
<?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>{7a2dd9d3-5d3d-46e8-976a-51a6304ccf45}</ProjectGuid>
|
||||||
|
<RootNamespace>Flyby11</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" />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;FLYBY11_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;FLYBY11_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)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;FLYBY11_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;FLYBY11_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>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h" />
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="CpuCheck.cpp" />
|
||||||
|
<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>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Quelldateien">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Headerdateien">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Ressourcendateien">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="framework.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="pch.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="CpuCheck.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -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,33 @@
|
|||||||
|
# Developer Essentials – Quick access to developer tools and features
|
||||||
|
# Host: console
|
||||||
|
# Options: Enable Developer Mode; Install WSL; Open Windows Features (silent); Open Device Manager (silent)
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
"Enable Developer Mode" {
|
||||||
|
Write-Output "Enabling Developer Mode..."
|
||||||
|
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d 1
|
||||||
|
Write-Output "✔ Developer Mode enabled."
|
||||||
|
}
|
||||||
|
|
||||||
|
"Install WSL" {
|
||||||
|
Write-Output "Installing Windows Subsystem for Linux..."
|
||||||
|
Start-Process "wsl.exe" -ArgumentList "--install" -Verb runAs
|
||||||
|
}
|
||||||
|
|
||||||
|
"Open Windows Features" {
|
||||||
|
Write-Output "Opening Windows Features dialog..."
|
||||||
|
Start-Process "optionalfeatures.exe"
|
||||||
|
}
|
||||||
|
|
||||||
|
"Open Device Manager" {
|
||||||
|
Write-Output "Opening Device Manager..."
|
||||||
|
Start-Process "devmgmt.msc"
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
# Flyoobe Extensions
|
||||||
|
|
||||||
|
Here you can find community extensions for Flyoobe.
|
||||||
|
Copy the provided `.ps1` raw link and install it via the **Get Extensions → Install from URL** option in the app.
|
||||||
|
|
||||||
|
---
|
||||||
|
## ⚡ Power Actions
|
||||||
|
**Description:** Control Windows power and session actions directly from Flyoobe.
|
||||||
|
**Options:**
|
||||||
|
- Restart Explorer
|
||||||
|
- Restart PC
|
||||||
|
- Shutdown PC
|
||||||
|
- Log off
|
||||||
|
- Sleep
|
||||||
|
- Hibernate
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Power%20Actions.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🛠 Developer Essentials
|
||||||
|
**Description:** Quick access to developer tools and features (Dev Mode, WSL, Windows Features, Device Manager).
|
||||||
|
**Options:**
|
||||||
|
- Enable Developer Mode
|
||||||
|
- Install WSL
|
||||||
|
- Open Windows Features
|
||||||
|
- Open Device Manager
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Developer%20Essentials.ps1)
|
||||||
|
|
||||||
|
## 🌐 Network Tools
|
||||||
|
**Description:** Common network troubleshooting actions (DNS flush, Winsock reset, connections, ping).
|
||||||
|
**Options:**
|
||||||
|
- Flush DNS
|
||||||
|
- Reset Winsock
|
||||||
|
- Show active connections
|
||||||
|
- Test Ping (8.8.8.8)
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Network%20Tools.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡 Microsoft Defender Maintenance
|
||||||
|
**Description:** Update Defender signatures, repair definitions, or check Defender status.
|
||||||
|
**Options:**
|
||||||
|
- Update signatures
|
||||||
|
- Repair definitions and update
|
||||||
|
- Show Defender status
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Microsoft%20Defender%20maintenance.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Gaming Tweaks
|
||||||
|
**Description:** Optimize Windows 11 for gaming (Game Mode, HAGS, Power Plans, DVR).
|
||||||
|
**Options:**
|
||||||
|
- Enable Game Mode
|
||||||
|
- Disable Game Mode
|
||||||
|
- Toggle Hardware GPU Scheduling
|
||||||
|
- Switch Power Plans
|
||||||
|
- Disable Game DVR
|
||||||
|
- Clear Shader Cache
|
||||||
|
|
||||||
|
🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Gaming%20tweaks.ps1)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# Description: Gaming Tweaks – optimize Windows 11 for games
|
||||||
|
# Host: console
|
||||||
|
# Options: Enable Game Mode; Disable Game Mode; Toggle Hardware GPU Scheduling; Switch Power Plans; Disable Game DVR; Clear Shader Cache
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
function Is-Admin {
|
||||||
|
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
|
$pr = New-Object Security.Principal.WindowsPrincipal($id)
|
||||||
|
return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Enable Game Mode" {
|
||||||
|
Write-Output "✔ Enabling Game Mode..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 1
|
||||||
|
}
|
||||||
|
|
||||||
|
"Disable Game Mode" {
|
||||||
|
Write-Output "✔ Disabling Game Mode..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Toggle Hardware GPU Scheduling" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "✘ Requires Administrator. Please run Flyoobe as Admin."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = "HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers"
|
||||||
|
$val = (Get-ItemProperty -Path $path -Name HwSchMode -ErrorAction SilentlyContinue).HwSchMode
|
||||||
|
if ($val -eq 2) {
|
||||||
|
Set-ItemProperty -Path $path -Name HwSchMode -Value 1 -Type DWord
|
||||||
|
Write-Output "✔ Hardware GPU Scheduling disabled (restart required)."
|
||||||
|
} else {
|
||||||
|
Set-ItemProperty -Path $path -Name HwSchMode -Value 2 -Type DWord
|
||||||
|
Write-Output "✔ Hardware GPU Scheduling enabled (restart required)."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"Switch Power Plans" {
|
||||||
|
Write-Output "Available power plans:"
|
||||||
|
powercfg /list
|
||||||
|
|
||||||
|
Write-Output ""
|
||||||
|
Write-Output "Use one of these commands to switch manually:"
|
||||||
|
Write-Output " - Balanced: powercfg /setactive SCHEME_BALANCED"
|
||||||
|
Write-Output " - High Performance: powercfg /setactive SCHEME_MIN"
|
||||||
|
Write-Output " - Ultimate Performance: powercfg /setactive SCHEME_MAX"
|
||||||
|
}
|
||||||
|
|
||||||
|
"Disable Game DVR" {
|
||||||
|
Write-Output "✔ Disabling Game DVR..."
|
||||||
|
Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_Enabled" -Value 0
|
||||||
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\GameDVR" -Name "AppCaptureEnabled" -Value 0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Clear Shader Cache" {
|
||||||
|
$cache = "$env:LOCALAPPDATA\D3DSCache"
|
||||||
|
if (Test-Path $cache) {
|
||||||
|
Write-Output "✔ Clearing shader cache..."
|
||||||
|
Remove-Item "$cache\*" -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
|
} else {
|
||||||
|
Write-Output "ℹ Shader cache folder not found."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "✘ Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "`nDone. Some changes may require restart to take effect."
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
# Microsoft Defender maintenance (update signatures, repair, show status)
|
||||||
|
# Host: console
|
||||||
|
# Options: Update signatures; Repair definitions and update; Show Defender status
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
function Get-MpCmdPath {
|
||||||
|
$candidates = @(
|
||||||
|
"$env:ProgramFiles\Windows Defender\MpCmdRun.exe",
|
||||||
|
"$env:ProgramFiles\Microsoft Defender\MpCmdRun.exe"
|
||||||
|
)
|
||||||
|
foreach ($p in $candidates) { if (Test-Path $p) { return $p } }
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
function Is-Admin {
|
||||||
|
$id = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
|
$pr = New-Object Security.Principal.WindowsPrincipal($id)
|
||||||
|
return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Show-Status {
|
||||||
|
try {
|
||||||
|
$s = Get-MpComputerStatus
|
||||||
|
Write-Output "=== Microsoft Defender Status ==="
|
||||||
|
Write-Output ("Engine version: {0}" -f $s.AMEngineVersion)
|
||||||
|
Write-Output ("Platform version: {0}" -f $s.AMProductVersion)
|
||||||
|
Write-Output ("AV signature version: {0}" -f $s.AntivirusSignatureVersion)
|
||||||
|
Write-Output ("AV signature last update: {0}" -f $s.AntivirusSignatureLastUpdated)
|
||||||
|
Write-Output ("AS signature version: {0}" -f $s.AntispywareSignatureVersion)
|
||||||
|
Write-Output ("Real-time protection: {0}" -f $s.RealTimeProtectionEnabled)
|
||||||
|
Write-Output ("NIS enabled: {0}" -f $s.NISEnabled)
|
||||||
|
Write-Output ("Service enabled: {0}" -f $s.AMServiceEnabled)
|
||||||
|
} catch {
|
||||||
|
Write-Output "✘ Failed to read Defender status: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Update signatures" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "ℹ Tip: Run as Administrator for the most reliable results."
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# Primary: PowerShell cmdlet
|
||||||
|
Update-MpSignature -ErrorAction Stop
|
||||||
|
Write-Output "✔ Signatures updated via Update-MpSignature."
|
||||||
|
} catch {
|
||||||
|
# Fallback: MpCmdRun
|
||||||
|
$mp = Get-MpCmdPath
|
||||||
|
if ($mp) {
|
||||||
|
Write-Output "↻ Falling back to MpCmdRun.exe ..."
|
||||||
|
& $mp -SignatureUpdate | Out-String | Write-Output
|
||||||
|
} else {
|
||||||
|
Write-Output "✘ MpCmdRun.exe not found and Update-MpSignature failed."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
"Repair definitions and update" {
|
||||||
|
if (-not (Is-Admin)) {
|
||||||
|
Write-Output "✘ Please run this action as Administrator (required to reset definitions)."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
$mp = Get-MpCmdPath
|
||||||
|
if (-not $mp) {
|
||||||
|
Write-Output "✘ MpCmdRun.exe not found."
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Output "↻ Removing all definitions (repair) ..."
|
||||||
|
& $mp -RemoveDefinitions -All | Out-String | Write-Output
|
||||||
|
} catch {
|
||||||
|
Write-Output "✘ Failed to remove definitions: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Output "↻ Updating signatures ..."
|
||||||
|
Update-MpSignature -ErrorAction Stop
|
||||||
|
Write-Output "✔ Signatures updated."
|
||||||
|
} catch {
|
||||||
|
Write-Output "↻ Fallback: MpCmdRun signature update ..."
|
||||||
|
& $mp -SignatureUpdate | Out-String | Write-Output
|
||||||
|
}
|
||||||
|
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
"Show Defender status" {
|
||||||
|
Show-Status
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "✘ Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Network Tools – Common network troubleshooting actions
|
||||||
|
# Host: console
|
||||||
|
# Options: Flush DNS; Reset Winsock; Show active connections; Test Ping (8.8.8.8)
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
"Flush DNS" {
|
||||||
|
Write-Output "Flushing DNS cache..."
|
||||||
|
ipconfig /flushdns
|
||||||
|
}
|
||||||
|
|
||||||
|
"Reset Winsock" {
|
||||||
|
Write-Output "Resetting Winsock..."
|
||||||
|
netsh winsock reset
|
||||||
|
}
|
||||||
|
|
||||||
|
"Show active connections" {
|
||||||
|
Write-Output "Active TCP connections:"
|
||||||
|
netstat -ano
|
||||||
|
}
|
||||||
|
|
||||||
|
"Test Ping (8.8.8.8)" {
|
||||||
|
Write-Output "Pinging Google DNS..."
|
||||||
|
ping 8.8.8.8
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Power Actions – Restart Explorer, Restart, Shutdown, Logoff, Sleep, Hibernate
|
||||||
|
# Host: silent
|
||||||
|
# Options: Restart Explorer; Restart PC; Shutdown PC; Log off; Sleep; Hibernate
|
||||||
|
|
||||||
|
param([string]$choice)
|
||||||
|
|
||||||
|
switch ($choice) {
|
||||||
|
|
||||||
|
"Restart Explorer" {
|
||||||
|
Write-Output "Restarting Explorer..."
|
||||||
|
Stop-Process -Name explorer -Force
|
||||||
|
Start-Process explorer.exe
|
||||||
|
}
|
||||||
|
|
||||||
|
"Restart PC" {
|
||||||
|
Write-Output "Restarting computer..."
|
||||||
|
Restart-Computer -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
"Shutdown PC" {
|
||||||
|
Write-Output "Shutting down computer..."
|
||||||
|
Stop-Computer -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
"Log off" {
|
||||||
|
Write-Output "Logging off current user..."
|
||||||
|
shutdown.exe /l
|
||||||
|
}
|
||||||
|
|
||||||
|
"Sleep" {
|
||||||
|
Write-Output "Putting system to sleep..."
|
||||||
|
rundll32.exe powrprof.dll,SetSuspendState 0,1,0
|
||||||
|
}
|
||||||
|
|
||||||
|
"Hibernate" {
|
||||||
|
Write-Output "Hibernating system..."
|
||||||
|
rundll32.exe powrprof.dll,SetSuspendState Hibernate
|
||||||
|
}
|
||||||
|
|
||||||
|
default {
|
||||||
|
Write-Output "Unknown option: $choice"
|
||||||
|
}
|
||||||
|
}
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+51
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36221.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyoobe", "Flyoobe\Flyoobe.csproj", "{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Flyby11", "Flyby11\Flyby11.vcxproj", "{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}"
|
||||||
|
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
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.Build.0 = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.Build.0 = Release|x64
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {263B972C-E7F5-43F6-AF4B-9C138C57DEDB}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
+22
-24
@@ -28,7 +28,7 @@ namespace Flyoobe
|
|||||||
{
|
{
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
// Call update check when form loads
|
// Call update check when form loads
|
||||||
await CheckForUpdateAsync();
|
await CheckForUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApplyRoundedCorners()
|
private void ApplyRoundedCorners()
|
||||||
@@ -75,25 +75,6 @@ namespace Flyoobe
|
|||||||
this.Region = new Region(path); // apply rounded region
|
this.Region = new Region(path); // apply rounded region
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnGitHub_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("https://github.com/builtbybel/Flyby11");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnDonate_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
|
|
||||||
{
|
|
||||||
FileName = "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG",
|
|
||||||
UseShellExecute = true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void chkDonated_CheckedChanged(object sender, EventArgs e)
|
private void chkDonated_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DonationHelper.SetDonationStatus(chkDonated.Checked);
|
DonationHelper.SetDonationStatus(chkDonated.Checked);
|
||||||
@@ -112,9 +93,9 @@ namespace Flyoobe
|
|||||||
return Version.Parse(version);
|
return Version.Parse(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task CheckForUpdateAsync()
|
private async Task CheckForUpdate()
|
||||||
{
|
{
|
||||||
const string githubApiUrl = "https://api.github.com/repos/builtbybel/Flyby11/releases/latest";
|
const string githubApiUrl = "https://api.github.com/repos/builtbybel/Flyoobe/releases/latest";
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -163,7 +144,7 @@ namespace Flyoobe
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// User has a dev or newer version
|
// User has a nightly/dev or newer version
|
||||||
UpdateLabel($"Flyoobe version {currentVersion} (dev version?)");
|
UpdateLabel($"Flyoobe version {currentVersion} (dev version?)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,11 +183,28 @@ namespace Flyoobe
|
|||||||
{
|
{
|
||||||
Process.Start(new ProcessStartInfo
|
Process.Start(new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = "https://github.com/builtbybel/Flyby11/releases/latest",
|
FileName = "https://github.com/builtbybel/Flyoobe/releases/latest",
|
||||||
UseShellExecute = true
|
UseShellExecute = true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnGitHub_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start("https://github.com/builtbybel/Flyoobe");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnDonate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "https://www.paypal.com/donate?hosted_button_id=MY7HX4QLYR4KG",
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,6 @@ namespace Features
|
|||||||
new FeatureNode(new EdgeShoppingAssistant()),
|
new FeatureNode(new EdgeShoppingAssistant()),
|
||||||
new FeatureNode(new FirstRunExperience()),
|
new FeatureNode(new FirstRunExperience()),
|
||||||
new FeatureNode(new GamerMode()),
|
new FeatureNode(new GamerMode()),
|
||||||
new FeatureNode(new HubsSidebar()),
|
|
||||||
new FeatureNode(new ImportOnEachLaunch()),
|
new FeatureNode(new ImportOnEachLaunch()),
|
||||||
new FeatureNode(new StartupBoost()),
|
new FeatureNode(new StartupBoost()),
|
||||||
new FeatureNode(new TabPageQuickLinks()),
|
new FeatureNode(new TabPageQuickLinks()),
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ namespace Settings.Privacy
|
|||||||
{
|
{
|
||||||
internal class LocationTracking : FeatureBase
|
internal class LocationTracking : FeatureBase
|
||||||
{
|
{
|
||||||
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\LocationAndSensors";
|
private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors";
|
||||||
private const string valueName = "LocationEnabled";
|
private const string valueName = "DisableLocation";
|
||||||
private const int recommendedValue = 0;
|
private const int recommendedValue = 1;
|
||||||
|
|
||||||
public override string GetFeatureDetails()
|
public override string GetFeatureDetails()
|
||||||
{
|
{
|
||||||
@@ -38,7 +38,7 @@ namespace Settings.Privacy
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord);
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -53,7 +53,7 @@ namespace Settings.Privacy
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
|
Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-10
@@ -63,6 +63,10 @@
|
|||||||
<Compile Include="AboutForm.Designer.cs">
|
<Compile Include="AboutForm.Designer.cs">
|
||||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="ToolHubView\ToolHubHelper.cs" />
|
||||||
|
<Compile Include="ToolHubView\ToolHubUrlDialog.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Helper\DonationHelper.cs" />
|
<Compile Include="Helper\DonationHelper.cs" />
|
||||||
<Compile Include="Helper\CopilotHelper.cs" />
|
<Compile Include="Helper\CopilotHelper.cs" />
|
||||||
<Compile Include="InstallView\BackupDriversProvider.cs" />
|
<Compile Include="InstallView\BackupDriversProvider.cs" />
|
||||||
@@ -77,6 +81,7 @@
|
|||||||
<Compile Include="InstallView\RunSetupFromIsoProvider.cs" />
|
<Compile Include="InstallView\RunSetupFromIsoProvider.cs" />
|
||||||
<Compile Include="InstallView\ToolHelper.cs" />
|
<Compile Include="InstallView\ToolHelper.cs" />
|
||||||
<Compile Include="InstallView\VentoyProvider.cs" />
|
<Compile Include="InstallView\VentoyProvider.cs" />
|
||||||
|
<Compile Include="UpgradeView\EsuEnrollmentHandler.cs" />
|
||||||
<Compile Include="UpgradeView\IsoHandler.cs" />
|
<Compile Include="UpgradeView\IsoHandler.cs" />
|
||||||
<Compile Include="LogForm.cs">
|
<Compile Include="LogForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
@@ -89,18 +94,18 @@
|
|||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ToolHubView\ToolDefinition.cs" />
|
<Compile Include="ToolHubView\ToolHubDefinition.cs" />
|
||||||
<Compile Include="ToolHubView\ToolHubControlView.cs">
|
<Compile Include="ToolHubView\ToolHubControlView.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ToolHubView\ToolHubControlView.Designer.cs">
|
<Compile Include="ToolHubView\ToolHubControlView.Designer.cs">
|
||||||
<DependentUpon>ToolHubControlView.cs</DependentUpon>
|
<DependentUpon>ToolHubControlView.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ToolHubView\ToolItemControl.cs">
|
<Compile Include="ToolHubView\ToolHubItemControl.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ToolHubView\ToolItemControl.Designer.cs">
|
<Compile Include="ToolHubView\ToolHubItemControl.Designer.cs">
|
||||||
<DependentUpon>ToolItemControl.cs</DependentUpon>
|
<DependentUpon>ToolHubItemControl.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Views\AccountControlView.cs">
|
<Compile Include="Views\AccountControlView.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
@@ -108,6 +113,12 @@
|
|||||||
<Compile Include="Views\AccountControlView.Designer.cs">
|
<Compile Include="Views\AccountControlView.Designer.cs">
|
||||||
<DependentUpon>AccountControlView.cs</DependentUpon>
|
<DependentUpon>AccountControlView.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Views\AiControlView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\AiControlView.Designer.cs">
|
||||||
|
<DependentUpon>AiControlView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Views\AppsControlView.cs">
|
<Compile Include="Views\AppsControlView.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -127,9 +138,6 @@
|
|||||||
<Compile Include="Features\Ads\TailoredExperiences.cs" />
|
<Compile Include="Features\Ads\TailoredExperiences.cs" />
|
||||||
<Compile Include="Features\Ads\TipsAndSuggestions.cs" />
|
<Compile Include="Features\Ads\TipsAndSuggestions.cs" />
|
||||||
<Compile Include="Features\Ads\WelcomeExperienceAds.cs" />
|
<Compile Include="Features\Ads\WelcomeExperienceAds.cs" />
|
||||||
<Compile Include="Features\AI\ClickToDo.cs" />
|
|
||||||
<Compile Include="Features\AI\CopilotTaskbar.cs" />
|
|
||||||
<Compile Include="Features\AI\Recall.cs" />
|
|
||||||
<Compile Include="Features\Edge\BrowserSignin.cs" />
|
<Compile Include="Features\Edge\BrowserSignin.cs" />
|
||||||
<Compile Include="Features\Edge\DefaultTopSites.cs" />
|
<Compile Include="Features\Edge\DefaultTopSites.cs" />
|
||||||
<Compile Include="Features\Edge\DefautBrowserSetting.cs" />
|
<Compile Include="Features\Edge\DefautBrowserSetting.cs" />
|
||||||
@@ -137,7 +145,6 @@
|
|||||||
<Compile Include="Features\Edge\EdgeShoppingAssistant.cs" />
|
<Compile Include="Features\Edge\EdgeShoppingAssistant.cs" />
|
||||||
<Compile Include="Features\Edge\FirstRunExperience.cs" />
|
<Compile Include="Features\Edge\FirstRunExperience.cs" />
|
||||||
<Compile Include="Features\Edge\GamerMode.cs" />
|
<Compile Include="Features\Edge\GamerMode.cs" />
|
||||||
<Compile Include="Features\Edge\HubsSidebar.cs" />
|
|
||||||
<Compile Include="Features\Edge\ImportOnEachLaunch.cs" />
|
<Compile Include="Features\Edge\ImportOnEachLaunch.cs" />
|
||||||
<Compile Include="Features\Edge\StartupBoost.cs" />
|
<Compile Include="Features\Edge\StartupBoost.cs" />
|
||||||
<Compile Include="Features\Edge\TabPageQuickLinks.cs" />
|
<Compile Include="Features\Edge\TabPageQuickLinks.cs" />
|
||||||
@@ -247,12 +254,15 @@
|
|||||||
<EmbeddedResource Include="ToolHubView\ToolHubControlView.resx">
|
<EmbeddedResource Include="ToolHubView\ToolHubControlView.resx">
|
||||||
<DependentUpon>ToolHubControlView.cs</DependentUpon>
|
<DependentUpon>ToolHubControlView.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="ToolHubView\ToolItemControl.resx">
|
<EmbeddedResource Include="ToolHubView\ToolHubItemControl.resx">
|
||||||
<DependentUpon>ToolItemControl.cs</DependentUpon>
|
<DependentUpon>ToolHubItemControl.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Views\AccountControlView.resx">
|
<EmbeddedResource Include="Views\AccountControlView.resx">
|
||||||
<DependentUpon>AccountControlView.cs</DependentUpon>
|
<DependentUpon>AccountControlView.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\AiControlView.resx">
|
||||||
|
<DependentUpon>AiControlView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Views\AppsControlView.resx">
|
<EmbeddedResource Include="Views\AppsControlView.resx">
|
||||||
<DependentUpon>AppsControlView.cs</DependentUpon>
|
<DependentUpon>AppsControlView.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@@ -273,6 +283,9 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\HomeControlView.resx">
|
||||||
|
<DependentUpon>HomeControlView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Views\InstallerControlView.resx">
|
<EmbeddedResource Include="Views\InstallerControlView.resx">
|
||||||
<DependentUpon>InstallerControlView.cs</DependentUpon>
|
<DependentUpon>InstallerControlView.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|||||||
+1
-19
@@ -2,6 +2,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Flyoobe
|
namespace Flyoobe
|
||||||
{
|
{
|
||||||
@@ -43,25 +44,6 @@ namespace Flyoobe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Opens the GitHub project page in the default browser.
|
|
||||||
/// </summary>
|
|
||||||
public static void OpenGitHubPage(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Process.Start(new ProcessStartInfo
|
|
||||||
{
|
|
||||||
FileName = GitHubUrl,
|
|
||||||
UseShellExecute = true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.Log($"Failed to open GitHub page: {ex.Message}", LogLevel.Error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if the application is running with administrative privileges.
|
/// Checks if the application is running with administrative privileges.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
+6
-6
@@ -81,7 +81,7 @@
|
|||||||
//
|
//
|
||||||
// btnQuickRepair
|
// btnQuickRepair
|
||||||
//
|
//
|
||||||
this.btnQuickRepair.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnQuickRepair.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnQuickRepair.BackColor = System.Drawing.Color.Transparent;
|
this.btnQuickRepair.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.btnQuickRepair.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
this.btnQuickRepair.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
||||||
this.btnQuickRepair.FlatAppearance.BorderSize = 2;
|
this.btnQuickRepair.FlatAppearance.BorderSize = 2;
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
this.btnQuickRepair.FlatAppearance.MouseOverBackColor = System.Drawing.Color.LightGray;
|
this.btnQuickRepair.FlatAppearance.MouseOverBackColor = System.Drawing.Color.LightGray;
|
||||||
this.btnQuickRepair.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F);
|
this.btnQuickRepair.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F);
|
||||||
this.btnQuickRepair.ForeColor = System.Drawing.Color.Black;
|
this.btnQuickRepair.ForeColor = System.Drawing.Color.Black;
|
||||||
this.btnQuickRepair.Location = new System.Drawing.Point(101, 422);
|
this.btnQuickRepair.Location = new System.Drawing.Point(512, 357);
|
||||||
this.btnQuickRepair.Name = "btnQuickRepair";
|
this.btnQuickRepair.Name = "btnQuickRepair";
|
||||||
this.btnQuickRepair.Size = new System.Drawing.Size(138, 27);
|
this.btnQuickRepair.Size = new System.Drawing.Size(138, 27);
|
||||||
this.btnQuickRepair.TabIndex = 337;
|
this.btnQuickRepair.TabIndex = 337;
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
//
|
//
|
||||||
// btnCreateUsb
|
// btnCreateUsb
|
||||||
//
|
//
|
||||||
this.btnCreateUsb.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnCreateUsb.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnCreateUsb.BackColor = System.Drawing.Color.Transparent;
|
this.btnCreateUsb.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.btnCreateUsb.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
this.btnCreateUsb.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
||||||
this.btnCreateUsb.FlatAppearance.BorderSize = 2;
|
this.btnCreateUsb.FlatAppearance.BorderSize = 2;
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
this.btnCreateUsb.FlatAppearance.MouseOverBackColor = System.Drawing.Color.LightGray;
|
this.btnCreateUsb.FlatAppearance.MouseOverBackColor = System.Drawing.Color.LightGray;
|
||||||
this.btnCreateUsb.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F);
|
this.btnCreateUsb.Font = new System.Drawing.Font("Segoe UI Variable Small", 8.25F);
|
||||||
this.btnCreateUsb.ForeColor = System.Drawing.Color.Black;
|
this.btnCreateUsb.ForeColor = System.Drawing.Color.Black;
|
||||||
this.btnCreateUsb.Location = new System.Drawing.Point(245, 422);
|
this.btnCreateUsb.Location = new System.Drawing.Point(656, 357);
|
||||||
this.btnCreateUsb.Name = "btnCreateUsb";
|
this.btnCreateUsb.Name = "btnCreateUsb";
|
||||||
this.btnCreateUsb.Size = new System.Drawing.Size(138, 27);
|
this.btnCreateUsb.Size = new System.Drawing.Size(138, 27);
|
||||||
this.btnCreateUsb.TabIndex = 338;
|
this.btnCreateUsb.TabIndex = 338;
|
||||||
@@ -115,11 +115,11 @@
|
|||||||
//
|
//
|
||||||
// lblOneClick
|
// lblOneClick
|
||||||
//
|
//
|
||||||
this.lblOneClick.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.lblOneClick.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.lblOneClick.AutoEllipsis = true;
|
this.lblOneClick.AutoEllipsis = true;
|
||||||
this.lblOneClick.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 10.25F);
|
this.lblOneClick.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 10.25F);
|
||||||
this.lblOneClick.ForeColor = System.Drawing.Color.Black;
|
this.lblOneClick.ForeColor = System.Drawing.Color.Black;
|
||||||
this.lblOneClick.Location = new System.Drawing.Point(7, 425);
|
this.lblOneClick.Location = new System.Drawing.Point(418, 360);
|
||||||
this.lblOneClick.Name = "lblOneClick";
|
this.lblOneClick.Name = "lblOneClick";
|
||||||
this.lblOneClick.Size = new System.Drawing.Size(89, 27);
|
this.lblOneClick.Size = new System.Drawing.Size(89, 27);
|
||||||
this.lblOneClick.TabIndex = 336;
|
this.lblOneClick.TabIndex = 336;
|
||||||
|
|||||||
Generated
+137
-66
@@ -28,31 +28,40 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
this.panelControls = new System.Windows.Forms.Panel();
|
this.panelControls = new System.Windows.Forms.Panel();
|
||||||
this.linkHome = new System.Windows.Forms.LinkLabel();
|
this.btnNext = new System.Windows.Forms.Button();
|
||||||
|
this.navPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||||
this.linkSubHeader = new System.Windows.Forms.LinkLabel();
|
this.linkSubHeader = new System.Windows.Forms.LinkLabel();
|
||||||
this.btnNotification = new System.Windows.Forms.Button();
|
this.btnNotification = new System.Windows.Forms.Button();
|
||||||
this.panelHost = new System.Windows.Forms.Panel();
|
this.panelHost = new System.Windows.Forms.Panel();
|
||||||
this.treeNavigation = new System.Windows.Forms.TreeView();
|
|
||||||
this.btnRefresh = new System.Windows.Forms.Button();
|
this.btnRefresh = new System.Windows.Forms.Button();
|
||||||
this.btnToolSpot = new System.Windows.Forms.Button();
|
this.btnExtensions = new System.Windows.Forms.Button();
|
||||||
this.panelContainer = new System.Windows.Forms.Panel();
|
this.panelContainer = new System.Windows.Forms.Panel();
|
||||||
this.lblHeader = new System.Windows.Forms.Label();
|
this.lblHeader = new System.Windows.Forms.Label();
|
||||||
this.btnAbout = new System.Windows.Forms.Button();
|
this.btnAbout = new System.Windows.Forms.Button();
|
||||||
this.btnAskCopilot = new System.Windows.Forms.Button();
|
this.btnAskCopilot = new System.Windows.Forms.Button();
|
||||||
|
this.contextDropDown = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.toolStripExtensions = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripAddExtensionUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripAddExtensionLocal = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripExtensionGuide = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.toolStripExtensionSource = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.panelControls.SuspendLayout();
|
this.panelControls.SuspendLayout();
|
||||||
this.panelContainer.SuspendLayout();
|
this.panelContainer.SuspendLayout();
|
||||||
|
this.contextDropDown.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// panelControls
|
// panelControls
|
||||||
//
|
//
|
||||||
this.panelControls.AutoScroll = true;
|
this.panelControls.AutoScroll = true;
|
||||||
this.panelControls.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
this.panelControls.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
||||||
this.panelControls.Controls.Add(this.linkHome);
|
this.panelControls.Controls.Add(this.btnNext);
|
||||||
|
this.panelControls.Controls.Add(this.navPanel);
|
||||||
this.panelControls.Controls.Add(this.linkSubHeader);
|
this.panelControls.Controls.Add(this.linkSubHeader);
|
||||||
this.panelControls.Controls.Add(this.btnNotification);
|
this.panelControls.Controls.Add(this.btnNotification);
|
||||||
this.panelControls.Controls.Add(this.panelHost);
|
this.panelControls.Controls.Add(this.panelHost);
|
||||||
this.panelControls.Controls.Add(this.treeNavigation);
|
|
||||||
this.panelControls.Controls.Add(this.btnRefresh);
|
this.panelControls.Controls.Add(this.btnRefresh);
|
||||||
this.panelControls.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.panelControls.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.panelControls.Location = new System.Drawing.Point(0, 0);
|
this.panelControls.Location = new System.Drawing.Point(0, 0);
|
||||||
@@ -60,22 +69,36 @@
|
|||||||
this.panelControls.Size = new System.Drawing.Size(883, 503);
|
this.panelControls.Size = new System.Drawing.Size(883, 503);
|
||||||
this.panelControls.TabIndex = 3;
|
this.panelControls.TabIndex = 3;
|
||||||
//
|
//
|
||||||
// linkHome
|
// btnNext
|
||||||
//
|
//
|
||||||
this.linkHome.ActiveLinkColor = System.Drawing.Color.DeepPink;
|
this.btnNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.linkHome.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnNext.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(242)))), ((int)(((byte)(244)))));
|
||||||
this.linkHome.AutoSize = true;
|
this.btnNext.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
||||||
this.linkHome.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 11.5F, System.Drawing.FontStyle.Bold);
|
this.btnNext.FlatAppearance.BorderSize = 0;
|
||||||
this.linkHome.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
this.btnNext.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||||
this.linkHome.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
this.btnNext.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||||
this.linkHome.Location = new System.Drawing.Point(695, 35);
|
this.btnNext.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.linkHome.Name = "linkHome";
|
this.btnNext.Font = new System.Drawing.Font("Segoe MDL2 Assets", 25.25F);
|
||||||
this.linkHome.Size = new System.Drawing.Size(48, 26);
|
this.btnNext.ForeColor = System.Drawing.Color.Gray;
|
||||||
this.linkHome.TabIndex = 338;
|
this.btnNext.Location = new System.Drawing.Point(835, 429);
|
||||||
this.linkHome.TabStop = true;
|
this.btnNext.Name = "btnNext";
|
||||||
this.linkHome.Text = "Setup";
|
this.btnNext.Size = new System.Drawing.Size(45, 57);
|
||||||
this.linkHome.UseCompatibleTextRendering = true;
|
this.btnNext.TabIndex = 340;
|
||||||
this.linkHome.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkHome_LinkClicked);
|
this.btnNext.TabStop = false;
|
||||||
|
this.btnNext.UseVisualStyleBackColor = false;
|
||||||
|
//
|
||||||
|
// navPanel
|
||||||
|
//
|
||||||
|
this.navPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.navPanel.AutoScroll = true;
|
||||||
|
this.navPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(242)))), ((int)(((byte)(244)))));
|
||||||
|
this.navPanel.Font = new System.Drawing.Font("Segoe UI Variable Small", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.navPanel.Location = new System.Drawing.Point(0, 429);
|
||||||
|
this.navPanel.Name = "navPanel";
|
||||||
|
this.navPanel.Size = new System.Drawing.Size(834, 75);
|
||||||
|
this.navPanel.TabIndex = 339;
|
||||||
|
this.navPanel.WrapContents = false;
|
||||||
//
|
//
|
||||||
// linkSubHeader
|
// linkSubHeader
|
||||||
//
|
//
|
||||||
@@ -102,7 +125,7 @@
|
|||||||
this.btnNotification.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
this.btnNotification.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||||
this.btnNotification.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnNotification.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.btnNotification.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.btnNotification.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.btnNotification.Location = new System.Drawing.Point(748, 34);
|
this.btnNotification.Location = new System.Drawing.Point(729, 0);
|
||||||
this.btnNotification.Name = "btnNotification";
|
this.btnNotification.Name = "btnNotification";
|
||||||
this.btnNotification.Size = new System.Drawing.Size(123, 22);
|
this.btnNotification.Size = new System.Drawing.Size(123, 22);
|
||||||
this.btnNotification.TabIndex = 337;
|
this.btnNotification.TabIndex = 337;
|
||||||
@@ -117,31 +140,11 @@
|
|||||||
this.panelHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.panelHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.panelHost.Location = new System.Drawing.Point(7, 22);
|
this.panelHost.Location = new System.Drawing.Point(7, 29);
|
||||||
this.panelHost.Name = "panelHost";
|
this.panelHost.Name = "panelHost";
|
||||||
this.panelHost.Size = new System.Drawing.Size(682, 468);
|
this.panelHost.Size = new System.Drawing.Size(873, 400);
|
||||||
this.panelHost.TabIndex = 333;
|
this.panelHost.TabIndex = 333;
|
||||||
//
|
//
|
||||||
// treeNavigation
|
|
||||||
//
|
|
||||||
this.treeNavigation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.treeNavigation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
|
||||||
this.treeNavigation.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
this.treeNavigation.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
|
||||||
this.treeNavigation.HideSelection = false;
|
|
||||||
this.treeNavigation.HotTracking = true;
|
|
||||||
this.treeNavigation.Location = new System.Drawing.Point(695, 75);
|
|
||||||
this.treeNavigation.Name = "treeNavigation";
|
|
||||||
this.treeNavigation.Scrollable = false;
|
|
||||||
this.treeNavigation.ShowLines = false;
|
|
||||||
this.treeNavigation.ShowNodeToolTips = true;
|
|
||||||
this.treeNavigation.ShowPlusMinus = false;
|
|
||||||
this.treeNavigation.ShowRootLines = false;
|
|
||||||
this.treeNavigation.Size = new System.Drawing.Size(186, 416);
|
|
||||||
this.treeNavigation.TabIndex = 3;
|
|
||||||
this.treeNavigation.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnRefresh
|
// btnRefresh
|
||||||
//
|
//
|
||||||
this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
@@ -162,26 +165,26 @@
|
|||||||
this.btnRefresh.UseVisualStyleBackColor = false;
|
this.btnRefresh.UseVisualStyleBackColor = false;
|
||||||
this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
|
this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
|
||||||
//
|
//
|
||||||
// btnToolSpot
|
// btnExtensions
|
||||||
//
|
//
|
||||||
this.btnToolSpot.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnExtensions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnToolSpot.AutoSize = true;
|
this.btnExtensions.AutoSize = true;
|
||||||
this.btnToolSpot.BackColor = System.Drawing.Color.Transparent;
|
this.btnExtensions.BackColor = System.Drawing.Color.Transparent;
|
||||||
this.btnToolSpot.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
this.btnExtensions.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(138)))), ((int)(((byte)(211)))));
|
||||||
this.btnToolSpot.FlatAppearance.BorderSize = 0;
|
this.btnExtensions.FlatAppearance.BorderSize = 0;
|
||||||
this.btnToolSpot.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
this.btnExtensions.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||||
this.btnToolSpot.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
this.btnExtensions.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(215)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||||
this.btnToolSpot.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
this.btnExtensions.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
this.btnToolSpot.Font = new System.Drawing.Font("Segoe MDL2 Assets", 10.25F);
|
this.btnExtensions.Font = new System.Drawing.Font("Segoe MDL2 Assets", 11.5F, System.Drawing.FontStyle.Bold);
|
||||||
this.btnToolSpot.ForeColor = System.Drawing.Color.Black;
|
this.btnExtensions.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
this.btnToolSpot.Location = new System.Drawing.Point(916, 1);
|
this.btnExtensions.Location = new System.Drawing.Point(913, 1);
|
||||||
this.btnToolSpot.Name = "btnToolSpot";
|
this.btnExtensions.Name = "btnExtensions";
|
||||||
this.btnToolSpot.Size = new System.Drawing.Size(26, 25);
|
this.btnExtensions.Size = new System.Drawing.Size(29, 27);
|
||||||
this.btnToolSpot.TabIndex = 338;
|
this.btnExtensions.TabIndex = 338;
|
||||||
this.btnToolSpot.TabStop = false;
|
this.btnExtensions.TabStop = false;
|
||||||
this.btnToolSpot.Text = "...";
|
this.btnExtensions.Text = "...";
|
||||||
this.btnToolSpot.UseVisualStyleBackColor = false;
|
this.btnExtensions.UseVisualStyleBackColor = false;
|
||||||
this.btnToolSpot.Click += new System.EventHandler(this.btnToolSpot_Click);
|
this.btnExtensions.Click += new System.EventHandler(this.btnExtensions_Click);
|
||||||
//
|
//
|
||||||
// panelContainer
|
// panelContainer
|
||||||
//
|
//
|
||||||
@@ -249,13 +252,73 @@
|
|||||||
this.btnAskCopilot.UseVisualStyleBackColor = false;
|
this.btnAskCopilot.UseVisualStyleBackColor = false;
|
||||||
this.btnAskCopilot.Click += new System.EventHandler(this.btnAskCopilot_Click);
|
this.btnAskCopilot.Click += new System.EventHandler(this.btnAskCopilot_Click);
|
||||||
//
|
//
|
||||||
|
// contextDropDown
|
||||||
|
//
|
||||||
|
this.contextDropDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(247)))), ((int)(((byte)(242)))));
|
||||||
|
this.contextDropDown.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 10.5F);
|
||||||
|
this.contextDropDown.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolStripExtensions,
|
||||||
|
this.toolStripAddExtensionUrl,
|
||||||
|
this.toolStripAddExtensionLocal,
|
||||||
|
this.toolStripExtensionGuide,
|
||||||
|
this.toolStripSeparator1,
|
||||||
|
this.toolStripExtensionSource});
|
||||||
|
this.contextDropDown.Name = "contextDropDown";
|
||||||
|
this.contextDropDown.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||||
|
this.contextDropDown.Size = new System.Drawing.Size(200, 176);
|
||||||
|
//
|
||||||
|
// toolStripExtensions
|
||||||
|
//
|
||||||
|
this.toolStripExtensions.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
|
||||||
|
this.toolStripExtensions.Name = "toolStripExtensions";
|
||||||
|
this.toolStripExtensions.Size = new System.Drawing.Size(199, 24);
|
||||||
|
this.toolStripExtensions.Text = "Manage extensions";
|
||||||
|
this.toolStripExtensions.Click += new System.EventHandler(this.toolStripExtensions_Click);
|
||||||
|
//
|
||||||
|
// toolStripAddExtensionUrl
|
||||||
|
//
|
||||||
|
this.toolStripAddExtensionUrl.Margin = new System.Windows.Forms.Padding(0, 5, 0, 0);
|
||||||
|
this.toolStripAddExtensionUrl.Name = "toolStripAddExtensionUrl";
|
||||||
|
this.toolStripAddExtensionUrl.Size = new System.Drawing.Size(199, 24);
|
||||||
|
this.toolStripAddExtensionUrl.Text = "Install from Url...";
|
||||||
|
this.toolStripAddExtensionUrl.Click += new System.EventHandler(this.toolStripAddExtensionUrl_Click);
|
||||||
|
//
|
||||||
|
// toolStripAddExtensionLocal
|
||||||
|
//
|
||||||
|
this.toolStripAddExtensionLocal.Margin = new System.Windows.Forms.Padding(0, 5, 0, 0);
|
||||||
|
this.toolStripAddExtensionLocal.Name = "toolStripAddExtensionLocal";
|
||||||
|
this.toolStripAddExtensionLocal.Size = new System.Drawing.Size(199, 24);
|
||||||
|
this.toolStripAddExtensionLocal.Text = "Import from file...";
|
||||||
|
this.toolStripAddExtensionLocal.Click += new System.EventHandler(this.toolStripAddExtensionLocal_Click);
|
||||||
|
//
|
||||||
|
// toolStripExtensionGuide
|
||||||
|
//
|
||||||
|
this.toolStripExtensionGuide.Margin = new System.Windows.Forms.Padding(0, 5, 0, 0);
|
||||||
|
this.toolStripExtensionGuide.Name = "toolStripExtensionGuide";
|
||||||
|
this.toolStripExtensionGuide.Size = new System.Drawing.Size(199, 24);
|
||||||
|
this.toolStripExtensionGuide.Text = "Write an extension";
|
||||||
|
this.toolStripExtensionGuide.Click += new System.EventHandler(this.toolStripExtensionGuide_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
this.toolStripSeparator1.Size = new System.Drawing.Size(196, 6);
|
||||||
|
//
|
||||||
|
// toolStripExtensionSource
|
||||||
|
//
|
||||||
|
this.toolStripExtensionSource.Margin = new System.Windows.Forms.Padding(0, 5, 0, 2);
|
||||||
|
this.toolStripExtensionSource.Name = "toolStripExtensionSource";
|
||||||
|
this.toolStripExtensionSource.Size = new System.Drawing.Size(199, 24);
|
||||||
|
this.toolStripExtensionSource.Text = "Extension folder...";
|
||||||
|
this.toolStripExtensionSource.Click += new System.EventHandler(this.toolStripExtensionSource_Click);
|
||||||
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(154)))), ((int)(((byte)(154)))), ((int)(((byte)(154)))));
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(154)))), ((int)(((byte)(154)))), ((int)(((byte)(154)))));
|
||||||
this.ClientSize = new System.Drawing.Size(945, 565);
|
this.ClientSize = new System.Drawing.Size(945, 565);
|
||||||
this.Controls.Add(this.btnToolSpot);
|
this.Controls.Add(this.btnExtensions);
|
||||||
this.Controls.Add(this.btnAbout);
|
this.Controls.Add(this.btnAbout);
|
||||||
this.Controls.Add(this.btnAskCopilot);
|
this.Controls.Add(this.btnAskCopilot);
|
||||||
this.Controls.Add(this.panelContainer);
|
this.Controls.Add(this.panelContainer);
|
||||||
@@ -271,6 +334,7 @@
|
|||||||
this.panelControls.ResumeLayout(false);
|
this.panelControls.ResumeLayout(false);
|
||||||
this.panelControls.PerformLayout();
|
this.panelControls.PerformLayout();
|
||||||
this.panelContainer.ResumeLayout(false);
|
this.panelContainer.ResumeLayout(false);
|
||||||
|
this.contextDropDown.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@@ -284,11 +348,18 @@
|
|||||||
private System.Windows.Forms.Button btnAskCopilot;
|
private System.Windows.Forms.Button btnAskCopilot;
|
||||||
private System.Windows.Forms.Button btnAbout;
|
private System.Windows.Forms.Button btnAbout;
|
||||||
private System.Windows.Forms.Button btnNotification;
|
private System.Windows.Forms.Button btnNotification;
|
||||||
private System.Windows.Forms.TreeView treeNavigation;
|
|
||||||
private System.Windows.Forms.Panel panelHost;
|
private System.Windows.Forms.Panel panelHost;
|
||||||
private System.Windows.Forms.LinkLabel linkSubHeader;
|
private System.Windows.Forms.LinkLabel linkSubHeader;
|
||||||
private System.Windows.Forms.Button btnToolSpot;
|
private System.Windows.Forms.FlowLayoutPanel navPanel;
|
||||||
private System.Windows.Forms.LinkLabel linkHome;
|
private System.Windows.Forms.Button btnNext;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextDropDown;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripAddExtensionUrl;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripAddExtensionLocal;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripExtensionGuide;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripExtensionSource;
|
||||||
|
private System.Windows.Forms.Button btnExtensions;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripExtensions;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+46
-42
@@ -21,17 +21,20 @@ namespace Flyoobe
|
|||||||
private void MainForm_Load(object sender, EventArgs e)
|
private void MainForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
InitializeButtons();
|
InitializeButtons();
|
||||||
|
// Calculate DPI scaling factor once for this form.
|
||||||
|
// Used to build navigation buttons and badges in a size
|
||||||
|
float dpiScale = GetDpiScale();
|
||||||
|
|
||||||
_navigator = new ViewNavigator(panelHost, treeNavigation, title =>
|
// Initialize ViewNavigator, which manages loading and switching between different views inside host panel
|
||||||
|
_navigator = new ViewNavigator(panelHost, navPanel, btnNext, title =>
|
||||||
{
|
{
|
||||||
// lblHeader.Text = title;
|
|
||||||
linkSubHeader.Text = $"Running - {title} - {Program.GetAppVersion()}";
|
linkSubHeader.Text = $"Running - {title} - {Program.GetAppVersion()}";
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register views
|
// Register views
|
||||||
_navigator.RegisterView("Home", () => new HomeControlView(_navigator));
|
_navigator.RegisterView("Home", () => new HomeControlView(_navigator));
|
||||||
_navigator.RegisterView("Upgrade", () => new UpgradeControlView());
|
_navigator.RegisterView("Upgrade", () => new UpgradeControlView());
|
||||||
_navigator.RegisterView("Install only", () => new InstallControlView());
|
_navigator.RegisterView("Reinstall", () => new InstallControlView());
|
||||||
_navigator.RegisterView("Device", () => new DeviceControlView());
|
_navigator.RegisterView("Device", () => new DeviceControlView());
|
||||||
_navigator.RegisterView("Personalization", () => new PersonalizationControlView());
|
_navigator.RegisterView("Personalization", () => new PersonalizationControlView());
|
||||||
_navigator.RegisterView("Browser", () => new DefaultsControlView());
|
_navigator.RegisterView("Browser", () => new DefaultsControlView());
|
||||||
@@ -45,7 +48,7 @@ namespace Flyoobe
|
|||||||
_navigator.RegisterView("Extensions", () => new ToolHub.ToolHubControlView());
|
_navigator.RegisterView("Extensions", () => new ToolHub.ToolHubControlView());
|
||||||
|
|
||||||
// Load OOBE navigation with system status
|
// Load OOBE navigation with system status
|
||||||
_navigator.LoadDefaultNavigation();
|
_navigator.BuildBottomNavigation(dpiScale);
|
||||||
|
|
||||||
// Show initial view
|
// Show initial view
|
||||||
_navigator.ShowView("Home");
|
_navigator.ShowView("Home");
|
||||||
@@ -55,9 +58,9 @@ namespace Flyoobe
|
|||||||
{
|
{
|
||||||
CopilotHelper.SetupCopilotButton(btnAskCopilot, 20);
|
CopilotHelper.SetupCopilotButton(btnAskCopilot, 20);
|
||||||
|
|
||||||
|
btnExtensions.Text = "\uEA86";
|
||||||
btnAbout.Text = "\uE946";
|
btnAbout.Text = "\uE946";
|
||||||
btnRefresh.Text = "\uE72C";
|
btnRefresh.Text = "\uE72C";
|
||||||
btnToolSpot.Text = "\uE721";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnAbout_Click(object sender, EventArgs e)
|
private void btnAbout_Click(object sender, EventArgs e)
|
||||||
@@ -155,52 +158,53 @@ namespace Flyoobe
|
|||||||
if (_navigator.CurrentView is IView view)
|
if (_navigator.CurrentView is IView view)
|
||||||
{
|
{
|
||||||
view.RefreshView();
|
view.RefreshView();
|
||||||
btnNotification.Visible = false; // Hide notification button after refresh
|
btnNotification.Visible = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnToolSpot_Click(object sender, EventArgs e)
|
/// <summary>
|
||||||
|
/// Calculates the current DPI scale factor of the main form.
|
||||||
|
/// This is used to size navigation buttons and UI elements consistently
|
||||||
|
/// across different display scaling settings (100%, 125%, 150%, ...).
|
||||||
|
/// Returns 1.0f at 96 DPI (default baseline).
|
||||||
|
/// </summary>
|
||||||
|
private float GetDpiScale()
|
||||||
{
|
{
|
||||||
// Path: <AppBase>\app\Foobe.Toolspot.exe
|
using (Graphics g = this.CreateGraphics())
|
||||||
string exePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "spot.exe");
|
|
||||||
|
|
||||||
if (!File.Exists(exePath))
|
|
||||||
{
|
{
|
||||||
MessageBox.Show("Toolspot not found:\n" + exePath, "Flyoobe",
|
return g.DpiX / 96f; // 96 dpi = baseline (100% scaling)
|
||||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Make MainForm dim (semi-transparent)
|
|
||||||
this.Opacity = 0.85;
|
|
||||||
|
|
||||||
var proc = new Process();
|
|
||||||
proc.StartInfo.FileName = exePath;
|
|
||||||
proc.EnableRaisingEvents = true;
|
|
||||||
proc.Exited += (s, ev) =>
|
|
||||||
{
|
|
||||||
// Restore opacity on UI thread
|
|
||||||
if (this.IsHandleCreated)
|
|
||||||
{
|
|
||||||
this.BeginInvoke((Action)(() => this.Opacity = 1.0));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
proc.Start();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
this.Opacity = 1.0; // safety reset
|
|
||||||
MessageBox.Show("Could not start Toolspot:\n" + ex.Message, "Flyoobe",
|
|
||||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void linkHome_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
private void btnExtensions_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
_navigator.ShowView("Home");
|
var location = btnExtensions.PointToScreen(new Point(0, btnExtensions.Height));
|
||||||
|
contextDropDown.Show(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void toolStripAddExtensionUrl_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
await ToolHub.ExtensionsHelper.InstallFromUrlAsync(this, _navigator);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toolStripAddExtensionLocal_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToolHub.ExtensionsHelper.ImportLocalFile(this, _navigator);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toolStripExtensionGuide_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToolHub.ExtensionsHelper.OpenExtensionGuide();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toolStripExtensionSource_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToolHub.ExtensionsHelper.OpenScriptsFolder(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void toolStripExtensions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ToolHub.ExtensionsHelper.SwitchToExtensionsView(_navigator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -117,4 +117,7 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<metadata name="contextDropDown.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
@@ -28,5 +28,5 @@ using System.Runtime.InteropServices;
|
|||||||
// Buildnummer
|
// Buildnummer
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.6.246")]
|
[assembly: AssemblyVersion("1.10.357")]
|
||||||
[assembly: AssemblyFileVersion("1.6.246")]
|
[assembly: AssemblyFileVersion("1.10.357")]
|
||||||
+129
@@ -0,0 +1,129 @@
|
|||||||
|
namespace Flyoobe.ToolHub
|
||||||
|
{
|
||||||
|
partial class ToolHubControlView
|
||||||
|
{
|
||||||
|
/// <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.flowLayoutPanelTools = new System.Windows.Forms.FlowLayoutPanel();
|
||||||
|
this.textSearch = new System.Windows.Forms.TextBox();
|
||||||
|
this.contextDropDown = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.toolStripAddExtensionUrl = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripAddExtensionLocal = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripExtensionGuide = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripExtensionSource = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.contextDropDown.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// flowLayoutPanelTools
|
||||||
|
//
|
||||||
|
this.flowLayoutPanelTools.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.flowLayoutPanelTools.AutoScroll = true;
|
||||||
|
this.flowLayoutPanelTools.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
|
||||||
|
this.flowLayoutPanelTools.Location = new System.Drawing.Point(18, 64);
|
||||||
|
this.flowLayoutPanelTools.Name = "flowLayoutPanelTools";
|
||||||
|
this.flowLayoutPanelTools.Size = new System.Drawing.Size(814, 361);
|
||||||
|
this.flowLayoutPanelTools.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// textSearch
|
||||||
|
//
|
||||||
|
this.textSearch.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.textSearch.Font = new System.Drawing.Font("Segoe UI Variable Small", 9.75F);
|
||||||
|
this.textSearch.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.textSearch.Location = new System.Drawing.Point(196, 18);
|
||||||
|
this.textSearch.Name = "textSearch";
|
||||||
|
this.textSearch.Size = new System.Drawing.Size(473, 25);
|
||||||
|
this.textSearch.TabIndex = 10;
|
||||||
|
this.textSearch.Text = "Search";
|
||||||
|
this.textSearch.Click += new System.EventHandler(this.textSearch_Click);
|
||||||
|
this.textSearch.TextChanged += new System.EventHandler(this.textSearch_TextChanged);
|
||||||
|
//
|
||||||
|
// contextDropDown
|
||||||
|
//
|
||||||
|
this.contextDropDown.Font = new System.Drawing.Font("Segoe UI Variable Small Semilig", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.contextDropDown.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolStripAddExtensionUrl,
|
||||||
|
this.toolStripAddExtensionLocal,
|
||||||
|
this.toolStripExtensionGuide,
|
||||||
|
this.toolStripExtensionSource});
|
||||||
|
this.contextDropDown.Name = "contextDropDown";
|
||||||
|
this.contextDropDown.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||||
|
this.contextDropDown.Size = new System.Drawing.Size(173, 92);
|
||||||
|
//
|
||||||
|
// toolStripAddExtensionUrl
|
||||||
|
//
|
||||||
|
this.toolStripAddExtensionUrl.Name = "toolStripAddExtensionUrl";
|
||||||
|
this.toolStripAddExtensionUrl.Size = new System.Drawing.Size(172, 22);
|
||||||
|
this.toolStripAddExtensionUrl.Text = "Install from Url...";
|
||||||
|
//
|
||||||
|
// toolStripAddExtensionLocal
|
||||||
|
//
|
||||||
|
this.toolStripAddExtensionLocal.Name = "toolStripAddExtensionLocal";
|
||||||
|
this.toolStripAddExtensionLocal.Size = new System.Drawing.Size(172, 22);
|
||||||
|
this.toolStripAddExtensionLocal.Text = "Import from file...";
|
||||||
|
//
|
||||||
|
// toolStripExtensionGuide
|
||||||
|
//
|
||||||
|
this.toolStripExtensionGuide.Name = "toolStripExtensionGuide";
|
||||||
|
this.toolStripExtensionGuide.Size = new System.Drawing.Size(172, 22);
|
||||||
|
this.toolStripExtensionGuide.Text = "Write an extension";
|
||||||
|
//
|
||||||
|
// toolStripExtensionSource
|
||||||
|
//
|
||||||
|
this.toolStripExtensionSource.Name = "toolStripExtensionSource";
|
||||||
|
this.toolStripExtensionSource.Size = new System.Drawing.Size(172, 22);
|
||||||
|
this.toolStripExtensionSource.Text = "Extension folder...";
|
||||||
|
//
|
||||||
|
// ToolHubControlView
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(243)))), ((int)(((byte)(240)))));
|
||||||
|
this.Controls.Add(this.textSearch);
|
||||||
|
this.Controls.Add(this.flowLayoutPanelTools);
|
||||||
|
this.Name = "ToolHubControlView";
|
||||||
|
this.Size = new System.Drawing.Size(835, 457);
|
||||||
|
this.contextDropDown.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelTools;
|
||||||
|
private System.Windows.Forms.TextBox textSearch;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextDropDown;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripAddExtensionUrl;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripAddExtensionLocal;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripExtensionGuide;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripExtensionSource;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyoobe.ToolHub
|
||||||
|
{
|
||||||
|
public partial class ToolHubControlView : UserControl, IView
|
||||||
|
{
|
||||||
|
private List<ToolHubDefinition> _allTools = new List<ToolHubDefinition>();
|
||||||
|
|
||||||
|
public string ViewTitle => "Setup Extensions";
|
||||||
|
|
||||||
|
public ToolHubControlView()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
LoadTools();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadTools()
|
||||||
|
{
|
||||||
|
_allTools.Clear();
|
||||||
|
|
||||||
|
// Define the scripts directory relative to the executable path
|
||||||
|
string scriptDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scripts");
|
||||||
|
|
||||||
|
// If the directory does not exist, create it
|
||||||
|
if (!Directory.Exists(scriptDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(scriptDirectory);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get all .ps1 files in the folder
|
||||||
|
string[] scriptFiles = Directory.GetFiles(scriptDirectory, "*.ps1");
|
||||||
|
|
||||||
|
// Loop through each script and create a tool item
|
||||||
|
foreach (var scriptPath in scriptFiles)
|
||||||
|
{
|
||||||
|
string fileName = Path.GetFileNameWithoutExtension(scriptPath); // Use file name as title
|
||||||
|
string icon = PickIconForScript(fileName); // Choose an icon based on the name
|
||||||
|
|
||||||
|
// Get description + options from script metadata
|
||||||
|
var meta = ReadMetadataFromScript(scriptPath);
|
||||||
|
|
||||||
|
var tool = new ToolHubDefinition(fileName, meta.description, icon, scriptPath);
|
||||||
|
tool.Options.AddRange(meta.options);
|
||||||
|
tool.UseConsole = meta.useConsole;
|
||||||
|
|
||||||
|
var control = new ToolHubItemControl(tool);
|
||||||
|
flowLayoutPanelTools.Controls.Add(control);
|
||||||
|
|
||||||
|
_allTools.Add(tool); // Save original list
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplayFilteredTools("");
|
||||||
|
}
|
||||||
|
|
||||||
|
private (string description, List<string> options, bool useConsole) ReadMetadataFromScript(string scriptPath)
|
||||||
|
{
|
||||||
|
string description = "No description available.";
|
||||||
|
var options = new List<string>();
|
||||||
|
bool useConsole = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Only scan the first lines for metadata.
|
||||||
|
// Extensions put their headers (# Description, # Host, # Options) at the top,
|
||||||
|
// so we dont waste time parsing a huge script body
|
||||||
|
var lines = File.ReadLines(scriptPath).Take(10);
|
||||||
|
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
||||||
|
|
||||||
|
if (line.StartsWith("# Options:", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
// Parse dropdown options
|
||||||
|
options = line.Substring(10)
|
||||||
|
.Split(';')
|
||||||
|
.Select(x => x.Trim())
|
||||||
|
.Where(x => !string.IsNullOrEmpty(x)) // ignore empty entries
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
// Parse host
|
||||||
|
else if (line.StartsWith("# Host:", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var raw = line.Substring(7).Trim().ToLowerInvariant();
|
||||||
|
if (raw == "console")
|
||||||
|
useConsole = true;
|
||||||
|
}
|
||||||
|
else if (line.StartsWith("#"))
|
||||||
|
{
|
||||||
|
// Use the first regular comment as description (if none yet)
|
||||||
|
if (description == "No description available.")
|
||||||
|
description = line.TrimStart('#').Trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Ignore errors and keep defaults
|
||||||
|
}
|
||||||
|
|
||||||
|
return (description, options, useConsole);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string PickIconForScript(string name)
|
||||||
|
{
|
||||||
|
name = name.ToLower();
|
||||||
|
|
||||||
|
// Basic keyword-based icon picking using Segoe MDL2 Assets
|
||||||
|
if (name.Contains("debloat")) return "\uE74D"; // Trash icon (cleanup)
|
||||||
|
if (name.Contains("network")) return "\uE701"; // Network icon (network tools)
|
||||||
|
if (name.Contains("explorer")) return "\uE8B7"; // File Explorer icon (file management)
|
||||||
|
if (name.Contains("update")) return "\uE895"; // Update icon (system updates)
|
||||||
|
if (name.Contains("context")) return "\uE8A5"; // Menu icon (context menu tweaks)
|
||||||
|
|
||||||
|
// Additional general categories
|
||||||
|
if (name.Contains("backup")) return "\uE8C7"; // Save icon (backup tools)
|
||||||
|
if (name.Contains("security")) return "\uE72E"; // Shield icon (security tools)
|
||||||
|
if (name.Contains("performance")) return "\uE7B8"; // Speedometer icon (performance)
|
||||||
|
if (name.Contains("privacy")) return "\uF552"; // Privacy icon (privacy settings)
|
||||||
|
if (name.Contains("app")) return "\uED35"; // App icon (application management)
|
||||||
|
if (name.Contains("setup")) return "\uE8FB"; // Install icon (installers)
|
||||||
|
|
||||||
|
// Default icon for uncategorized tools
|
||||||
|
return "\uE7C5"; // Wrench icon (default tool)
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisplayFilteredTools(string filter)
|
||||||
|
{
|
||||||
|
flowLayoutPanelTools.SuspendLayout();
|
||||||
|
flowLayoutPanelTools.Controls.Clear();
|
||||||
|
|
||||||
|
// Apply case-insensitive search filter
|
||||||
|
foreach (var tool in _allTools)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(filter) ||
|
||||||
|
tool.Title.ToLower().Contains(filter.ToLower()) ||
|
||||||
|
tool.Description.ToLower().Contains(filter.ToLower()))
|
||||||
|
{
|
||||||
|
var control = new ToolHubItemControl(tool);
|
||||||
|
flowLayoutPanelTools.Controls.Add(control);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flowLayoutPanelTools.ResumeLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshView()
|
||||||
|
{
|
||||||
|
textSearch.Clear();
|
||||||
|
flowLayoutPanelTools.Controls.Clear();
|
||||||
|
LoadTools();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textSearch_TextChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var keyword = textSearch.Text.Trim();
|
||||||
|
DisplayFilteredTools(keyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textSearch_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
textSearch.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="contextDropDown.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Flyoobe.ToolHub
|
||||||
|
{
|
||||||
|
public class ToolHubDefinition
|
||||||
|
{
|
||||||
|
public string Title { get; }
|
||||||
|
public string Description { get; }
|
||||||
|
public string Icon { get; }
|
||||||
|
public string ScriptPath { get; }
|
||||||
|
public List<string> Options { get; } = new List<string>(); // Dropdown options
|
||||||
|
public bool UseConsole { get; set; } = false; // Console host
|
||||||
|
|
||||||
|
public ToolHubDefinition(string title, string description, string icon, string scriptPath)
|
||||||
|
{
|
||||||
|
Title = title;
|
||||||
|
Description = description;
|
||||||
|
Icon = icon;
|
||||||
|
ScriptPath = scriptPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Flyoobe.ToolHub
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Provides helper methods for installing and managing extension scripts (.ps1).
|
||||||
|
/// </summary>
|
||||||
|
public static class ExtensionsHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Switch the current view to the Extensions page (ToolHubControlView).
|
||||||
|
/// </summary>
|
||||||
|
public static void SwitchToExtensionsView(ViewNavigator navigator)
|
||||||
|
{
|
||||||
|
if (navigator == null) return; // safeguard
|
||||||
|
navigator.ShowView("Extensions");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Refresh the ToolHubControlView
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="navigator"></param>
|
||||||
|
public static void SwitchAndRefreshToExtensionsView(ViewNavigator navigator)
|
||||||
|
{
|
||||||
|
if (navigator == null) return;
|
||||||
|
|
||||||
|
navigator.ShowView("Extensions");
|
||||||
|
|
||||||
|
// Only refresh if the current view is ToolHubControlView
|
||||||
|
if (navigator.CurrentView is ToolHubControlView extView)
|
||||||
|
{
|
||||||
|
extView.RefreshView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Install an extension from a direct .ps1 URL.
|
||||||
|
/// </summary>
|
||||||
|
public static async Task InstallFromUrlAsync(IWin32Window owner, ViewNavigator navigator = null)
|
||||||
|
{
|
||||||
|
using (var dlg = new InputDialog("Install from URL", "Paste a direct .ps1 URL:"))
|
||||||
|
{
|
||||||
|
if (dlg.ShowDialog(owner) != DialogResult.OK) return;
|
||||||
|
var url = dlg.InputText?.Trim();
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(url) || !url.EndsWith(".ps1", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
MessageBox.Show(owner, "Please provide a direct link to a .ps1 file.", "Invalid URL",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string content;
|
||||||
|
using (var hc = new HttpClient())
|
||||||
|
content = await hc.GetStringAsync(url);
|
||||||
|
|
||||||
|
if (!content.TrimStart().StartsWith("#"))
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(owner, "This file has no header comments. Install anyway?", "No metadata",
|
||||||
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var scriptsDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scripts");
|
||||||
|
Directory.CreateDirectory(scriptsDir);
|
||||||
|
|
||||||
|
var name = Path.GetFileName(new Uri(url).LocalPath);
|
||||||
|
var dest = Path.Combine(scriptsDir, name);
|
||||||
|
|
||||||
|
if (File.Exists(dest))
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(owner, $"{name} already exists. Overwrite?", "File exists",
|
||||||
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
File.WriteAllText(dest, content, Encoding.UTF8);
|
||||||
|
MessageBox.Show(owner, $"Installed: {name}", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
// Switch and refresh
|
||||||
|
SwitchAndRefreshToExtensionsView(navigator);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(owner, "Install failed: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Import a local .ps1 file into the extensions folder.
|
||||||
|
/// </summary>
|
||||||
|
public static void ImportLocalFile(IWin32Window owner, ViewNavigator navigator = null)
|
||||||
|
{
|
||||||
|
using (var ofd = new OpenFileDialog())
|
||||||
|
{
|
||||||
|
ofd.Filter = "PowerShell scripts (*.ps1)|*.ps1";
|
||||||
|
ofd.Title = "Select an extension script";
|
||||||
|
|
||||||
|
if (ofd.ShowDialog(owner) != DialogResult.OK) return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var scriptsDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scripts");
|
||||||
|
Directory.CreateDirectory(scriptsDir);
|
||||||
|
|
||||||
|
var dest = Path.Combine(scriptsDir, Path.GetFileName(ofd.FileName));
|
||||||
|
File.Copy(ofd.FileName, dest, overwrite: true);
|
||||||
|
|
||||||
|
MessageBox.Show(owner, $"Imported: {Path.GetFileName(dest)}", "Success",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
// Switch and refresh
|
||||||
|
SwitchAndRefreshToExtensionsView(navigator);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(owner, "Import failed: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Open the extensions scripts folder in Explorer.
|
||||||
|
/// </summary>
|
||||||
|
public static void OpenScriptsFolder(IWin32Window owner)
|
||||||
|
{
|
||||||
|
string scriptDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scripts");
|
||||||
|
Directory.CreateDirectory(scriptDirectory);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.Start("explorer.exe", scriptDirectory);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(owner, "Could not open folder: " + ex.Message, "Error",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Open the online guide for writing extensions.
|
||||||
|
/// </summary>
|
||||||
|
public static void OpenExtensionGuide()
|
||||||
|
{
|
||||||
|
Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "https://github.com/builtbybel/Flyoobe/blob/main/Flyoobe.Extensions/Write-an-Extension.md",
|
||||||
|
UseShellExecute = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loaded 100 of 140 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user