Skip to content

Commit 777053b

Browse files
committed
Update core functionality and UI components
1 parent b5af95c commit 777053b

File tree

107 files changed

+17384
-5007
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+17384
-5007
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Custom project folders to ignore
2-
extras/
2+
extras/prerequisites/
33
installer-output/
44
.config/
55

README.md

Lines changed: 20 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,26 @@
55
**Winhance** features most of the same enhancements as [UnattendedWinstall](https://github.com/memstechtips/UnattendedWinstall) without needing to do a clean install of Windows.
66

77
## Requirements 💻
8-
- Windows 11
9-
- *Tested on Windows 11 24H2*
10-
- *Most things should work on Windows 10 22H2 but there are some issues like Microsoft Edge (legacy) removal*
8+
- Windows 10/11
9+
- *Tested on Windows 10 x64 22H2 and Windows 11 24H2*
1110

1211
## Installation 📥
1312

1413
Download from [winhance.net](https://winhance.net) or the [Releases](https://github.com/memstechtips/Winhance/releases) section of this repository.
1514

1615
The `Winhance.Installer.exe` includes an Installable and Portable version during setup.
1716

18-
## 🔐 Winhance v25.05.05 Security Info
17+
## 🔐 Winhance v25.05.22 Security Info
1918

2019
**Important:** Please verify your download using the information below. Any file with different values for this particular version is not from the official source.
2120

2221
- **Winhance.Installer.exe**
23-
- Size: 111853604 bytes : 106 MiB
24-
- SHA256: 7089df9406023bd5a5a311d45c5a2fe861dd22190c0e8410477df3a94133026b
22+
- Size: 131223680 bytes : 125 MiB
23+
- SHA256: 5f20b7be5741ce37a8663041ae8228c28e45b32f7ca260036c34c38e436e634c
2524

2625
- **Winhance.exe**
27-
- Size: 155136 bytes : 151 KiB
28-
- SHA256: ba87eff9b7350c5499f2e28cf5f01c9b34d6a90829b6e5f27e8ef8cd7266f5df
26+
- Size: 165248 bytes : 161 KiB
27+
- SHA256: 58e1fc0707f25e71738388817b397cdb98aa8037b0c275424b6f56c74bc56b05
2928

3029
> [!NOTE]
3130
> This tool is currently in development. Any issues can be reported using the Issues tab.<br>
@@ -83,80 +82,54 @@ The items below are planned changes and features for future releases.
8382
Note: ✅ Completed items are commited to the source code files, but the changes will not be visible in the application until the next release or update is released to the application.
8483

8584
### Winhance Installation
86-
⌛ Fix Winhance Shortcut not appearing in the Start Menu (All Programs)
87-
⌛ Fix the changing of default Installation location not accepted by Winhance installer. Issue #154
88-
⌛ Add a Winhance Winget package to make Winhance installable via WinGet. Issue #159
85+
⌛ Add a Winhance Winget package to make Winhance installable via WinGet. Issue #159
86+
🔜 Add Winhance to the Microsoft Store.
8987

9088
### Main Window
91-
⌛ Add a "More" Navigation button in the Main Window that when clicked, shows options for:
92-
Winhance Version with check for updates button
93-
About Winhance
94-
Winhance Logs
95-
Winhance Scripts
96-
etc.
9789

9890
#### Config Import
9991
🔜 Improve Config Import to have checkboxes for sub sections in each category
10092

10193
### Software & Apps Screen
10294

103-
🔜 Add detection of installed apps and update notifications for those apps
104-
⌛ Add an internet connection check before attempting to install an application using Winhance. Also add internet checks during app installation in case of timeouts occurring. Issue #155
95+
🔜 Add detection of installed apps and update notifications for those apps
10596
🔜 Add an option to enable and Activate Windows Photo Viewer. Issue #135
106-
✅ Fix the typo on the custom dialog box that incorrectly says "installd" and which should show "installed". Issue #146
97+
⌛ Refactor app removal implementation to increase speed of app removals.
98+
⌛ Fix incorrect (failure) dialog being shown when a single app installation is cancelled.
10799

108100
#### Windows Apps & Features
109101
🔜 Add Icons next to the "Winhance Removal Status" that when clicked, deletes the scripts and scheduled tasks that are present when Winhance was previously run (ie. BloatRemoval.ps1, EdgeRemoval.ps1 and OneDriveRemoval.ps1)
110102
🔜 Rework EdgeRemoval script so it doesn't uninstall WebView. Also, update WebView installation
111103
🔜 Fix "We can't open this 'microsoft-edge' link" due to edge removal and no default browser found. Issue #38
112-
⌛ WinHance Fails to Remove OneNote on Windows 11. This is due to OneNote no longer being an appx-package (like on Windows 10) and must be uninstalled using it's uninstaller. Issue #141
113104

114105
#### External Software
115106
🔜 For app installations, give users the option to choose a location to install the application. Issue #160
116107
🔜 Add a "website" icon next to each app in external software that will take the user to the specific app's webpage so users can get more info about the app before installing it. Issue #152
117108
🔜 Status Feature for External Software: Similar to Windows software, add a status feature for external applications to indicate whether they are installed. If installed, show if updates are available (updates indicator for windows softwares as well). Issue #142
118109
🔜 Indicator for App Purchases: Include an indicator for apps to show if they are completely free, partially free/paid, and completely paid. Issue #142
119-
⌛ Downloading Adwcleaner or Malwarebytes not working. Issue #163
120110
🔜 Add ability to select the programs that users currently have installed on their computers to the external apps section and that they can be added to the config file. Issue #165
121-
⌛ Add KeepassXC to External Software (Privacy & Security Section). Issue #133
122-
⌛ Add PotPlayer and all apps from ninite.com to External Apps. Issue #138
123-
⌛ Add Wise Registry Cleaner to External Apps. Issue #164
124-
⌛ Add bcuninstaller to the external apps section. Issue #161
125-
⌛ Apps to add to the external software section if possible: Explorer Patcher, Classic Task Manager, Volume2, NirCmd, Crystal Disk Info, TailScale, TriggerCMD, SyncToy, Minimize to Tray, StreamLabs OBS, Input Leap, Bulk Rename Utility, Serial Port Notifier, Sereby AIO Runtime, AutoHotKey, FlowFrames, Text-Grab, VenToy, Unlocker. Issue #135
126-
⌛ Add Windhawk, Lively Wallpaper, Rainmeter.
111+
⌛ Apps to add to the external software section if possible: Classic Task Manager, NirCmd, TriggerCMD, SyncToy, Minimize to Tray, Serial Port Notifier, Sereby AIO Runtime, FlowFrames. Issue #135 (These apps are not available via winget, if they have generic direct download links that always downloads the latest available version of the app, they will be added in the future.)
127112

128113
### Optimize Screen
129114

130-
#### Windows Security Settings
131-
⌛ Improve UAC slider to match all of the available options in Windows. User Account Control seems to be automatically set to "High" if a user has selected a value higher than that in Windows. This is due to Winhance not having all the available UAC options. Issue #166
132-
133115
#### Power Management
134116
🔜 Improve the power section to detect all power plans on the pc and add indicators next to each power plan in the dropdown menu showing what currently exists
135117
🔜 Improve the power section to have toggles that toggle the powercfg commands on the currently applied power plan (currently, importing the Ultimate Performance powerplan just automatically applies all "recommended" powercfg commands but there is no control over it) This will also fix #84
136118

137119
#### Gaming & Performance
138120
🔜 Review the "Mouse" related settings and why Enhance mouse precision won't work anymore due to mouse related tweaks in the gaming section. Issue #13
139121
🔜 Consider adding preset options in optimizations tab like "Minimal, recommended and extreme optimizations" (This can also be done with preset config files if developed and shared.)
140-
⌛ Add Disable High Precision Event Timer under Gaming. Issue #139
141-
⌛ Fix Removing XBox makes the popup "Get an app to open this 'ms-gamingoverlay'" by adding the registry entry that fixes the popup from appearing. Issue #34, #123, #158
142-
143-
#### Notifications
144-
⌛ Add Toggles for "Location Notifications" and "Windows Security Notifications"
145-
146-
#### Explorer Improvements
147-
⌛ Add "Always show all system tray icons" registry entry (works on Windows 10 only). Issue #18
148-
🔜 Test if right clicking the quick access panel crashes explorer because of classic context menu implementation. Issue #24
149-
⌛ Add toggles to show hidden files, folders, drives and also uncheck the "Hide Protected Operating System Files" check. Issue #30
150-
⌛ Add toggle to Remove lock screen. Issue #105
151-
⌛ Add option to not compress wallpaper. Issue #130
122+
123+
#### Explorer Improvements
152124
🔜 Toggle to remove the "open in terminal" option from right click context menu. Issue #162
153-
🔜 Add toggles to remove "-Shortcut" Text, Disable Always Ask Before Opening. Issue #135
125+
🔜 Add toggles to remove "-Shortcut" Text, Disable Always Ask Before Opening. Issue #135
126+
127+
### Customize Screen
154128

155-
#### Windows Updates
156-
✅ Change "Exclude Drivers from Windows Updates" toggle label to "Do not include drivers with Windows Updates" so it matches what Windows says in configured update policies. Issue #167
129+
#### Taskbar
130+
🔜 Fix News & Interests/Widgets/Weather icon not being removed from the Taskbar due to being a protected registry key.
157131

158132
### Other General Requests, Features & Issues
159-
⌛ Improve scrolling speed and make it faster in all views.
160133
🔜 Debloat ink handwriting main store. Issue #65
161134
🔜 Add old F8 Menu to startup screen
162135
🔜 Can't type in Start Menu search bar. (This is due to tweaks included in the first version of Winhance, need to investigate). Issue #25
@@ -165,7 +138,6 @@ Note: ✅ Completed items are commited to the source code files, but the changes
165138
🔜 Disable windows search indexing tool. Issue #74
166139

167140
#### UI Improvements
168-
⌛ Clearer indication between toggle Enabled & Disabled states
169141
🔜 Update tooltips to be more descriptive about what a toggle does
170142

171143

extras/Winhance.Installer.iss

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
; Script generated by the Inno Setup Script Wizard.
2+
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3+
4+
#define MyAppName "Winhance"
5+
#define MyAppVersion ""
6+
#define MyAppPublisher "Marco du Plessis"
7+
#define MyAppURL "https://www.winhance.net/"
8+
#define MyAppExeName "Winhance.exe"
9+
#define DotNetRuntimeVersion "9.0.4"
10+
#define DotNetRuntimeInstallerName "windowsdesktop-runtime-" + DotNetRuntimeVersion + "-win-x64.exe"
11+
#define MyAppAssocName MyAppName + " File"
12+
#define MyAppAssocExt ".winhance"
13+
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
14+
15+
[Setup]
16+
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
17+
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
18+
AppId={{29282B88-03C4-430E-8A41-CF14F8186AD8}
19+
AppName={#MyAppName}
20+
AppVersion={#MyAppVersion}
21+
AppVerName=Winhance
22+
SetupMutex=WinhanceSetupMutex,Global
23+
AppPublisher={#MyAppPublisher}
24+
AppPublisherURL={#MyAppURL}
25+
AppSupportURL={#MyAppURL}
26+
AppUpdatesURL={#MyAppURL}
27+
DefaultDirName={autopf}\{#MyAppName}
28+
UninstallDisplayIcon={app}\{#MyAppExeName}
29+
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
30+
; on anything but x64 and Windows 11 on Arm.
31+
ArchitecturesAllowed=x64compatible
32+
; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the
33+
; install be done in "64-bit mode" on x64 or Windows 11 on Arm,
34+
; meaning it should use the native 64-bit Program Files directory and
35+
; the 64-bit view of the registry.
36+
ArchitecturesInstallIn64BitMode=x64compatible
37+
ChangesAssociations=yes
38+
DisableProgramGroupPage=yes
39+
LicenseFile=C:\Winhance\LICENSE.txt
40+
; Uncomment the following line to run in non administrative install mode (install for current user only).
41+
;PrivilegesRequired=lowest
42+
PrivilegesRequiredOverridesAllowed=dialog
43+
OutputDir=C:\Winhance\installer-output
44+
OutputBaseFilename=Winhance.Installer
45+
SetupIconFile=C:\Winhance\src\Winhance.WPF\Resources\AppIcons\winhance-rocket.ico
46+
SolidCompression=yes
47+
WizardStyle=modern
48+
; Allow user to select installation type
49+
DisableDirPage=no
50+
; Only create uninstaller for regular installations
51+
Uninstallable=WizardIsTaskSelected('regularinstall')
52+
53+
[Languages]
54+
Name: "english"; MessagesFile: "compiler:Default.isl"
55+
56+
[Code]
57+
function ShouldInstallDotNetRuntime: Boolean;
58+
begin
59+
// For regular installation, always install .NET Runtime
60+
// For portable installation, check if the user wants to install it
61+
if WizardIsTaskSelected('portableinstall') and not WizardIsTaskSelected('portableinstall\dotnetruntime') then
62+
Result := False
63+
else
64+
Result := True; // Always install for regular installation or if checkbox is selected
65+
end;
66+
67+
var
68+
UserSelectedDir: String;
69+
IsFirstRun: Boolean;
70+
71+
procedure InitializeWizard;
72+
begin
73+
// Initialize variables
74+
IsFirstRun := True;
75+
UserSelectedDir := '';
76+
end;
77+
78+
function NextButtonClick(CurPageID: Integer): Boolean;
79+
begin
80+
Result := True;
81+
82+
// Save user-selected directory when leaving the directory selection page
83+
if CurPageID = wpSelectDir then
84+
begin
85+
UserSelectedDir := WizardForm.DirEdit.Text;
86+
end;
87+
88+
// Set default directory based on installation type when tasks page is shown for the first time
89+
if CurPageID = wpSelectTasks then
90+
begin
91+
if IsFirstRun then
92+
begin
93+
IsFirstRun := False;
94+
if WizardIsTaskSelected('portableinstall') and (UserSelectedDir = '') then
95+
WizardForm.DirEdit.Text := ExpandConstant('{userdesktop}\{#MyAppName}')
96+
else if WizardIsTaskSelected('regularinstall') and (UserSelectedDir = '') then
97+
WizardForm.DirEdit.Text := ExpandConstant('{autopf}\{#MyAppName}');
98+
end;
99+
end;
100+
101+
// Restore user's custom directory selection after task selection
102+
if (CurPageID = wpSelectTasks) and (UserSelectedDir <> '') then
103+
begin
104+
WizardForm.DirEdit.Text := UserSelectedDir;
105+
end;
106+
end;
107+
108+
[Tasks]
109+
Name: "portableinstall"; Description: "Perform a portable installation"; GroupDescription: "Installation type:"; Flags: unchecked exclusive
110+
Name: "portableinstall\dotnetruntime"; Description: "Install .NET 9 Runtime (recommended)"; GroupDescription: "Portable options:"; Flags: unchecked
111+
Name: "regularinstall"; Description: "Perform a regular installation"; GroupDescription: "Installation type:"; Flags: exclusive
112+
Name: "regularinstall\desktopicon"; Description: "Create a shortcut on the Desktop"; GroupDescription: "Additional shortcuts:"; Flags: unchecked
113+
Name: "regularinstall\startmenuicon"; Description: "Create a shortcut in the Start menu"; GroupDescription: "Additional shortcuts:"; Flags: unchecked
114+
115+
[Files]
116+
Source: "C:\Winhance\src\Winhance.WPF\bin\Release\net9.0-windows\win-x64\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
117+
Source: "C:\Winhance\src\Winhance.WPF\bin\Release\net9.0-windows\win-x64\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
118+
; Include .NET 9 Runtime installer
119+
Source: "C:\Winhance\extras\prerequisites\{#DotNetRuntimeInstallerName}"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
120+
; Create a marker file for portable installations
121+
Source: "C:\Winhance\extras\prerequisites\{#DotNetRuntimeInstallerName}"; DestDir: "{app}"; DestName: "portable.marker"; Flags: ignoreversion; Tasks: portableinstall
122+
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
123+
124+
[Registry]
125+
; Skip registry entries for portable installation
126+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue; Tasks: regularinstall
127+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey; Tasks: regularinstall
128+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Tasks: regularinstall
129+
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Tasks: regularinstall
130+
131+
[Icons]
132+
; Create Start menu shortcut only if selected in tasks
133+
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: regularinstall\startmenuicon
134+
; Create desktop shortcut only if selected in tasks
135+
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: regularinstall\desktopicon
136+
137+
[Run]
138+
; Install .NET 9 Runtime (always for regular installation, optional for portable)
139+
Filename: "{tmp}\{#DotNetRuntimeInstallerName}"; Parameters: "/install /quiet /norestart"; StatusMsg: "Installing .NET 9 Runtime..."; Flags: waituntilterminated; Check: ShouldInstallDotNetRuntime
140+
141+
; Launch application after installation
142+
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
143+

0 commit comments

Comments
 (0)