mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-04-06 06:38:31 +00:00
Compare commits
11 Commits
26.03.04
...
a30664002b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a30664002b | ||
|
|
5e78391518 | ||
|
|
2d2497408f | ||
|
|
d2dbf03572 | ||
|
|
88c68fd411 | ||
|
|
e82aaf03f0 | ||
|
|
9a77fed09b | ||
|
|
336ac6fb8f | ||
|
|
72ad35bbd8 | ||
|
|
df17ca4695 | ||
|
|
7f46e8d60d |
32
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
32
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -6,9 +6,6 @@ body:
|
|||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
# 🐞 **Issue Report**
|
|
||||||
Thank you for taking the time to report an issue! Please provide as much detail as possible to help us address the problem efficiently.
|
|
||||||
|
|
||||||
## ⚠️ **IMPORTANT**
|
## ⚠️ **IMPORTANT**
|
||||||
- 🛠️ **Supported environments only:** We only support Windows 11.
|
- 🛠️ **Supported environments only:** We only support Windows 11.
|
||||||
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
|
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
|
||||||
@@ -24,11 +21,16 @@ body:
|
|||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: dropdown
|
||||||
id: affected_part
|
id: affected_part
|
||||||
attributes:
|
attributes:
|
||||||
label: 📜 What part of Winutil are you having issues with?
|
label: What part of Winutil are you having issues with?
|
||||||
placeholder: "e.g., Tweaks, etc."
|
options:
|
||||||
|
- Program Install Tab
|
||||||
|
- Tweaks Tab
|
||||||
|
- Config Tab
|
||||||
|
- Updates Tab
|
||||||
|
- Win11 Creator Tab
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
@@ -39,24 +41,8 @@ body:
|
|||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: steps_to_reproduce
|
|
||||||
attributes:
|
|
||||||
label: 🔄 Steps to reproduce the issue.
|
|
||||||
placeholder: "e.g., Step 1: ..., Step 2: ..."
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: error_output
|
id: error_output
|
||||||
attributes:
|
attributes:
|
||||||
label: ❌ Paste the full error output (if available).
|
label: ❌ Paste the full error output (if available) or Screenshot.
|
||||||
placeholder: "Include any relevant logs or error messages."
|
placeholder: "Include any relevant logs or error messages."
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: additional_context
|
|
||||||
attributes:
|
|
||||||
label: 🖼️ Additional context.
|
|
||||||
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|||||||
37
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
37
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@@ -13,45 +13,10 @@ body:
|
|||||||
- 🛠️ **Supported environments only:** We only support Windows 11.
|
- 🛠️ **Supported environments only:** We only support Windows 11.
|
||||||
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
|
- 💡 For general questions, use the [Discussions section](https://github.com/Christitustech/winutil/discussions) or join our Community-driven [Discord Server](https://discord.gg/RUbZUZyByQ).
|
||||||
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: ⚙️ Issue Checklist
|
|
||||||
options:
|
|
||||||
- label: I have read the guidelines.
|
|
||||||
- label: I checked for duplicate issues.
|
|
||||||
- label: I searched for existing discussions.
|
|
||||||
- label: I checked for an existing pull request that addresses this request.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: problem_statement
|
|
||||||
attributes:
|
|
||||||
label: ❓ Is your feature request related to a problem?
|
|
||||||
placeholder: "Provide a clear and concise description of the issue you're facing. Example: 'I'm always frustrated when [...]'"
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: proposed_solution
|
id: proposed_solution
|
||||||
attributes:
|
attributes:
|
||||||
label: 💡 Describe the solution you'd like
|
label: 💡 Describe the solution you'd like
|
||||||
placeholder: "Provide a clear and concise description of what you want to happen."
|
placeholder: "Provide a clear and concise description."
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: alternatives
|
|
||||||
attributes:
|
|
||||||
label: 🔄 Describe alternatives you've considered
|
|
||||||
placeholder: "Provide details on any alternative solutions or features you've thought about."
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: additional_context
|
|
||||||
attributes:
|
|
||||||
label: 🖼️ Additional context
|
|
||||||
placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information."
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|||||||
2
.github/workflows/docs.yaml
vendored
2
.github/workflows/docs.yaml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
if: github.repository == 'ChrisTitusTech/winutil'
|
if: github.repository == 'ChrisTitusTech/winutil'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
HUGO_VERSION: 0.147.7
|
HUGO_VERSION: 0.156.0
|
||||||
HUGO_ENVIRONMENT: production
|
HUGO_ENVIRONMENT: production
|
||||||
TZ: America/Chicago
|
TZ: America/Chicago
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ If you are seeing errors referencing TLS or security, you may be running an olde
|
|||||||
|
|
||||||
```
|
```
|
||||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
iex https://christitus.com/win | iex
|
irm https://christitus.com/win | iex
|
||||||
```
|
```
|
||||||
|
|
||||||
If it still isn't working and you live in India, it might be due to India blocking GitHub's content domain and preventing downloads. See more on [Times of India](https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms).
|
If it still isn't working in your region, it may be due to temporary ISP or network filtering of GitHub content domains. This has been reported by some users in India in the past. See: [Times of India](https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms).
|
||||||
|
|
||||||
If you are still having issues, try using a **VPN**, or changing your **DNS provider** to one of following two providers:
|
If you are still having issues, try using a **VPN**, or changing your **DNS provider** to one of following two providers:
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ If it returns `ConstrainedLanguage`, you may need to switch to `FullLanguage` mo
|
|||||||
|
|
||||||
### Script blocked by Execution Policy
|
### Script blocked by Execution Policy
|
||||||
|
|
||||||
1. Ensure you are running PowerShell as admin: Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
1. Ensure you are running PowerShell as admin: Press `Windows key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||||
2. In the PowerShell window, type this to allow unsigned code to execute and run the installation script:
|
2. In the PowerShell window, type this to allow unsigned code to execute and run the installation script:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -65,7 +65,7 @@ This could be for a number of reasons:
|
|||||||
|
|
||||||
If that doesn't work, disable Hibernation:
|
If that doesn't work, disable Hibernation:
|
||||||
|
|
||||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11. then type:
|
- Press `Windows key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11, then type:
|
||||||
|
|
||||||
```bat
|
```bat
|
||||||
powercfg /H off
|
powercfg /H off
|
||||||
@@ -89,11 +89,11 @@ Related issue: [#198](https://github.com/ChrisTitusTech/Winutil/issues/198)
|
|||||||
|
|
||||||
### Windows 11: Quick Settings no longer works
|
### Windows 11: Quick Settings no longer works
|
||||||
|
|
||||||
Launch the Script and click _Enable Action Center_.
|
Launch the script and click _Enable Action Center_.
|
||||||
|
|
||||||
### Explorer (file browser) no longer launches
|
### Explorer (file browser) no longer launches
|
||||||
|
|
||||||
- Press `Windows key`+`R` then type:
|
- Press `Windows key`+`R`, then type:
|
||||||
|
|
||||||
```bat
|
```bat
|
||||||
control /name Microsoft.FolderOptions
|
control /name Microsoft.FolderOptions
|
||||||
@@ -106,7 +106,7 @@ Launch the Script and click _Enable Action Center_.
|
|||||||
If you're using a laptop or tablet and find your battery drains too fast, please try the below troubleshooting steps, and report the results back to the Winutil community.
|
If you're using a laptop or tablet and find your battery drains too fast, please try the below troubleshooting steps, and report the results back to the Winutil community.
|
||||||
|
|
||||||
1. **Check Battery Health:**
|
1. **Check Battery Health:**
|
||||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
- Press `Windows key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||||
- Run the following command to generate a battery report:
|
- Run the following command to generate a battery report:
|
||||||
```powershell
|
```powershell
|
||||||
powercfg /batteryreport /output "C:\battery_report.html"
|
powercfg /batteryreport /output "C:\battery_report.html"
|
||||||
@@ -114,7 +114,7 @@ If you're using a laptop or tablet and find your battery drains too fast, please
|
|||||||
- Open the generated HTML report to review information about battery health and usage. A battery with poor health may hold less charge, discharge faster, or cause other issues.
|
- Open the generated HTML report to review information about battery health and usage. A battery with poor health may hold less charge, discharge faster, or cause other issues.
|
||||||
|
|
||||||
2. **Review Power Settings:**
|
2. **Review Power Settings:**
|
||||||
- Open the Settings app, and go to _System_ > _Power & sleep_.
|
- Open Settings and go to _System_ > _Power & battery_ (Windows 11) or _System_ > _Power & sleep_ (Windows 10).
|
||||||
- Adjust power plan settings based on your preferences and usage patterns.
|
- Adjust power plan settings based on your preferences and usage patterns.
|
||||||
- Click on _Additional power settings_ to access advanced power settings that may help.
|
- Click on _Additional power settings_ to access advanced power settings that may help.
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ If you're using a laptop or tablet and find your battery drains too fast, please
|
|||||||
- Ensure graphics, chipset, and other essential drivers are up to date.
|
- Ensure graphics, chipset, and other essential drivers are up to date.
|
||||||
|
|
||||||
5. **Check for Windows Updates:**
|
5. **Check for Windows Updates:**
|
||||||
- Open the Settings app, and go to _Update & Security_ > _Windows Update_.
|
- Open Settings and go to _Windows Update_ (Windows 11) or _Update & Security_ > _Windows Update_ (Windows 10).
|
||||||
- Check for and install any available updates for your operating system.
|
- Check for and install any available updates for your operating system.
|
||||||
|
|
||||||
6. **Reduce Screen Brightness:**
|
6. **Reduce Screen Brightness:**
|
||||||
@@ -144,11 +144,11 @@ If you're using a laptop or tablet and find your battery drains too fast, please
|
|||||||
- Review the list of apps and their power usage. Disable or uninstall any you don't need.
|
- Review the list of apps and their power usage. Disable or uninstall any you don't need.
|
||||||
|
|
||||||
9. **Check Background Apps:**
|
9. **Check Background Apps:**
|
||||||
- Open the Settings app, and go to _Privacy_ > _Background apps_.
|
- Review background app permissions in Settings (location varies by Windows version and app type).
|
||||||
- Disable or uninstall unnecessary apps running in the background.
|
- Disable or uninstall unnecessary apps running in the background.
|
||||||
|
|
||||||
10. **Use `powercfg` for Analysis:**
|
10. **Use `powercfg` for Analysis:**
|
||||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
- Press `Windows key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||||
- Run the following command to analyze energy usage and generate a report:
|
- Run the following command to analyze energy usage and generate a report:
|
||||||
```powershell
|
```powershell
|
||||||
powercfg /energy /output "C:\energy_report.html"
|
powercfg /energy /output "C:\energy_report.html"
|
||||||
@@ -161,7 +161,7 @@ If you're using a laptop or tablet and find your battery drains too fast, please
|
|||||||
- Look for events with the source _Power-Troubleshooter_ to identify power-related events. These may highlight battery, input power, and other issues.
|
- Look for events with the source _Power-Troubleshooter_ to identify power-related events. These may highlight battery, input power, and other issues.
|
||||||
|
|
||||||
12. **Check Wake-up Sources:**
|
12. **Check Wake-up Sources:**
|
||||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
- Press `Windows key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||||
- Use the command `powercfg /requests` to identify processes preventing sleep.
|
- Use the command `powercfg /requests` to identify processes preventing sleep.
|
||||||
- Use the command `powercfg /waketimers` to view active wake timers.
|
- Use the command `powercfg /waketimers` to view active wake timers.
|
||||||
- Check Task Scheduler to see if any of the discovered processes are scheduled to start on boot or at regular intervals.
|
- Check Task Scheduler to see if any of the discovered processes are scheduled to start on boot or at regular intervals.
|
||||||
@@ -172,7 +172,7 @@ If you're using a laptop or tablet and find your battery drains too fast, please
|
|||||||
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
|
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
|
||||||
|
|
||||||
14. **Disable Activity History:**
|
14. **Disable Activity History:**
|
||||||
- Open the Settings app, and go to _Privacy_ > _Activity history_.
|
- Open Settings and go to _Privacy & security_ > _Activity history_ (Windows 11) or _Privacy_ > _Activity history_ (Windows 10).
|
||||||
- Turn off _Let Windows collect my activities from this PC_.
|
- Turn off _Let Windows collect my activities from this PC_.
|
||||||
|
|
||||||
15. **Prevent Network Adapters From Waking PC:**
|
15. **Prevent Network Adapters From Waking PC:**
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function Invoke-WPFFixesWinget {
|
|||||||
try {
|
try {
|
||||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||||
Write-Host "==> Starting Winget Repair"
|
Write-Host "==> Starting Winget Repair"
|
||||||
Install-WinUtilWinget -Force
|
Install-WinUtilWinget
|
||||||
} catch {
|
} catch {
|
||||||
Write-Error "Failed to install winget: $_"
|
Write-Error "Failed to install winget: $_"
|
||||||
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ Winutil is designed for:
|
|||||||
New to Winutil? Start here:
|
New to Winutil? Start here:
|
||||||
|
|
||||||
1. **[Getting Started Guide](getting-started/)** - Installation and first steps
|
1. **[Getting Started Guide](getting-started/)** - Installation and first steps
|
||||||
2. **[Application Store](application/)** - Learn to install software easily
|
2. **[Applications Guide](application/)** - Learn to install, upgrade, and uninstall software
|
||||||
3. **[Tweaks Guide](tweaks/)** - Optimize your system
|
3. **[Tweaks Guide](tweaks/)** - Optimize your system
|
||||||
4. **[Features & Fixes](features/)** - Troubleshoot common issues
|
4. **[Features & Fixes](features/)** - Troubleshoot common issues
|
||||||
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
||||||
@@ -42,7 +42,7 @@ New to Winutil? Start here:
|
|||||||
|
|
||||||
Browse and install hundreds of popular applications with a single click. No more hunting for download links or dealing with installer bloat.
|
Browse and install hundreds of popular applications with a single click. No more hunting for download links or dealing with installer bloat.
|
||||||
|
|
||||||
**[Read the Store Guide →](application/)**
|
**[Read the Applications Guide →](application/)**
|
||||||
|
|
||||||
### ⚙️ System Tweaks
|
### ⚙️ System Tweaks
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ Build a custom Windows 11 ISO with bloatware removed, telemetry disabled, and ha
|
|||||||
| I want to... | Go to... |
|
| I want to... | Go to... |
|
||||||
|--------------|----------|
|
|--------------|----------|
|
||||||
| Install Winutil for the first time | [Getting Started](getting-started/) |
|
| Install Winutil for the first time | [Getting Started](getting-started/) |
|
||||||
| Install applications quickly | [Application Store](application/) |
|
| Install, upgrade, or uninstall apps | [Applications Guide](application/) |
|
||||||
| Speed up my computer | [Tweaks Guide](tweaks/) |
|
| Speed up my computer | [Tweaks Guide](tweaks/) |
|
||||||
| Fix Windows Update problems | [Features - Fixes](features/) |
|
| Fix Windows Update problems | [Features - Fixes](features/) |
|
||||||
| Automate setup for multiple PCs | [Automation](automation/) |
|
| Automate setup for multiple PCs | [Automation](automation/) |
|
||||||
@@ -151,7 +151,7 @@ Want to help improve Winutil?
|
|||||||
This User Guide covers everything you need to know:
|
This User Guide covers everything you need to know:
|
||||||
|
|
||||||
1. **[Getting Started](getting-started/)** - Installation, first run, basic usage
|
1. **[Getting Started](getting-started/)** - Installation, first run, basic usage
|
||||||
2. **[Application Store](application/)** - Installing software, using presets
|
2. **[Applications](application/)** - Installing, upgrading, and uninstalling software
|
||||||
3. **[Tweaks](tweaks/)** - System optimizations and customizations
|
3. **[Tweaks](tweaks/)** - System optimizations and customizations
|
||||||
4. **[Features & Fixes](features/)** - Troubleshooting tools and utilities
|
4. **[Features & Fixes](features/)** - Troubleshooting tools and utilities
|
||||||
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
5. **[Win11 Creator](win11Creator/)** - Build a custom debloated Windows 11 ISO
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
---
|
---
|
||||||
title: Applications
|
title: Applications
|
||||||
weight: 2
|
weight: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< tabs items="Installation & Updates,Upgrade All,Uninstall,Get Installed,Clear Selection" defaultIndex="0" >}}
|
{{< tabs >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Installation & Updates" selected=true >}}
|
||||||
* Choose the programs you want to install or upgrade.
|
* Choose the applications you want to install or upgrade.
|
||||||
* For programs not currently installed, this action will install them.
|
* For programs not currently installed, this action will install them.
|
||||||
* For programs already installed, this action will update them to the latest version.
|
* For programs already installed, this action will update them to the latest version.
|
||||||
* Click the `Install/Upgrade Selected` button to start the installation or upgrade process.
|
* Click the `Install/Upgrade Selected` button to start the installation or upgrade process.
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Upgrade All" >}}
|
||||||
* Simply press the `Upgrade All` button.
|
* Simply press the `Upgrade All` button.
|
||||||
* This will upgrade all applicable programs that are installed without the need for individual selection.
|
* This will upgrade all applicable programs that are installed without the need for individual selection.
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Uninstall" >}}
|
||||||
* Select the programs you wish to uninstall.
|
* Select the programs you wish to uninstall.
|
||||||
* Click the `Uninstall Selected` button to remove the selected programs.
|
* Click the `Uninstall Selected` button to remove the selected programs.
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Get Installed" >}}
|
||||||
* Click the `Show Installed Apps` button.
|
* Click the `Show Installed Apps` button.
|
||||||
* This will scan for and select all installed programs in Winutil that WinGet supports.
|
* This scans for and selects installed applications supported by WinGet.
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Clear Selection" >}}
|
||||||
* Click the `Clear Selection` button.
|
* Click the `Clear Selection` button.
|
||||||
* This will unselect all checked programs.
|
* This will unselect all checked programs.
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
Automation option in winutil allows you to run winutil from a config file,
|
---
|
||||||
you can get your own config file inside winutil by clicking the gear icon on the top right and clicking export and saving it as a file
|
title: Automation
|
||||||
|
weight: 7
|
||||||
|
---
|
||||||
|
|
||||||
you can automate winutil launch with this command
|
The Automation option in Winutil allows you to run Winutil from an exported config file.
|
||||||
|
|
||||||
|
You can create your own config in the app by clicking the gear icon in the top-right corner, then choosing Export and saving the file.
|
||||||
|
|
||||||
|
You can automate Winutil launch with this command:
|
||||||
```powershell
|
```powershell
|
||||||
& ([ScriptBlock]::Create((irm "https://christitus.com/win"))) -Config C:\Path\To\Config -Run
|
& ([ScriptBlock]::Create((irm "https://christitus.com/win"))) -Config "C:\Path\To\Config.json" -Run
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
title: Features
|
title: Features
|
||||||
weight: 4
|
weight: 5
|
||||||
---
|
---
|
||||||
|
|
||||||
* Install the most used **Windows Features** by checking the checkbox and clicking "Install Features" to install them.
|
Install common **Windows Features** by selecting the feature checkboxes and clicking **Install Features**.
|
||||||
|
|
||||||
* All .Net Frameworks (2, 3, 4)
|
* All .NET Frameworks (2, 3, 4)
|
||||||
* HyperV Virtualization
|
* Hyper-V Virtualization
|
||||||
* Legacy Media (WMP, DirectPlay)
|
* Legacy Media (WMP, DirectPlay)
|
||||||
* NFS - Network File System
|
* NFS - Network File System
|
||||||
* Enable Daily Registry Backup Task 12:30am
|
* Enable Daily Registry Backup Task 12:30am
|
||||||
@@ -16,7 +16,7 @@ weight: 4
|
|||||||
* Windows Sandbox
|
* Windows Sandbox
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
* Quick fixes for your system if you are having issues.
|
Quick fixes for common system problems.
|
||||||
|
|
||||||
* Set Up Autologin
|
* Set Up Autologin
|
||||||
* Reset Windows Update
|
* Reset Windows Update
|
||||||
@@ -28,6 +28,7 @@ weight: 4
|
|||||||
### Legacy Windows Panels
|
### Legacy Windows Panels
|
||||||
|
|
||||||
Open old-school Windows panels directly from Winutil. Following Panels are available:
|
Open old-school Windows panels directly from Winutil. Following Panels are available:
|
||||||
|
Open classic Windows panels directly from Winutil. Available panels include:
|
||||||
|
|
||||||
* Control Panel
|
* Control Panel
|
||||||
* Network Connections
|
* Network Connections
|
||||||
@@ -39,4 +40,4 @@ Open old-school Windows panels directly from Winutil. Following Panels are avail
|
|||||||
|
|
||||||
### Remote Access
|
### Remote Access
|
||||||
|
|
||||||
Enables OpenSSH server on your windows machine.
|
Enables an OpenSSH server on your Windows machine.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Getting Started
|
title: Getting Started
|
||||||
weight: 1
|
weight: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
## Welcome to Winutil!
|
## Welcome to Winutil!
|
||||||
@@ -111,7 +111,7 @@ This allows you to undo changes if needed.
|
|||||||
1. Navigate to the **Install** tab
|
1. Navigate to the **Install** tab
|
||||||
2. Browse categories or use the search bar
|
2. Browse categories or use the search bar
|
||||||
3. Check applications you want to install
|
3. Check applications you want to install
|
||||||
4. Click "Install Selected" at the bottom
|
4. Click "Install/Upgrade Selected" at the bottom
|
||||||
|
|
||||||
### 3. Apply Basic Tweaks
|
### 3. Apply Basic Tweaks
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ For a better Windows experience without risks:
|
|||||||
1. Open **Install** tab
|
1. Open **Install** tab
|
||||||
2. Search for the application name
|
2. Search for the application name
|
||||||
3. Check the box next to it
|
3. Check the box next to it
|
||||||
4. Click "Install Selected"
|
4. Click "Install/Upgrade Selected"
|
||||||
|
|
||||||
**Multiple Applications**:
|
**Multiple Applications**:
|
||||||
|
|
||||||
@@ -239,7 +239,7 @@ irm "https://christitus.com/win" | iex
|
|||||||
|
|
||||||
### Download Blocked (India/Certain Regions)
|
### Download Blocked (India/Certain Regions)
|
||||||
|
|
||||||
If GitHub is blocked in your region:
|
If downloads are blocked in your region:
|
||||||
|
|
||||||
1. Use a VPN service
|
1. Use a VPN service
|
||||||
2. Change DNS to Cloudflare (1.1.1.1) or Google (8.8.8.8)
|
2. Change DNS to Cloudflare (1.1.1.1) or Google (8.8.8.8)
|
||||||
@@ -258,7 +258,7 @@ If Winutil downloads but doesn't open:
|
|||||||
|
|
||||||
Now that you're set up, explore these guides:
|
Now that you're set up, explore these guides:
|
||||||
|
|
||||||
- [Application Installation Guide](../application/) - Learn about installing software
|
- [Application Guide](../application/) - Learn about installing, upgrading, and uninstalling software
|
||||||
- [Tweaks Guide](../tweaks/) - Understand system optimizations
|
- [Tweaks Guide](../tweaks/) - Understand system optimizations
|
||||||
- [FAQ](../../faq/) - Common questions and answers
|
- [FAQ](../../faq/) - Common questions and answers
|
||||||
|
|
||||||
@@ -276,7 +276,8 @@ If you need assistance:
|
|||||||
|
|
||||||
| Task | Location | Action |
|
| Task | Location | Action |
|
||||||
| -------------------- | ----------- | ------------------------------------ |
|
| -------------------- | ----------- | ------------------------------------ |
|
||||||
| Install Apps | Install Tab | Check boxes → Install Selected |
|
| Install or upgrade apps | Install Tab | Check boxes → Install/Upgrade Selected |
|
||||||
|
| Uninstall apps | Install Tab | Check boxes → Uninstall Selected |
|
||||||
| Apply Tweaks | Tweaks Tab | Select tweaks → Run Tweaks |
|
| Apply Tweaks | Tweaks Tab | Select tweaks → Run Tweaks |
|
||||||
| Undo Tweaks | Tweaks Tab | Select tweaks → Undo Selected Tweaks |
|
| Undo Tweaks | Tweaks Tab | Select tweaks → Undo Selected Tweaks |
|
||||||
| Create Restore Point | Tweaks Tab | Essential Tweaks section |
|
| Create Restore Point | Tweaks Tab | Essential Tweaks section |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Tweaks
|
title: Tweaks
|
||||||
weight: 3
|
weight: 4
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< image src="images/Tweaks-Tab" alt="Image of Tweaks Tab" >}}
|
{{< image src="images/Tweaks-Tab" alt="Image of Tweaks Tab" >}}
|
||||||
@@ -21,10 +21,10 @@ Essential Tweaks are modifications and optimizations that are generally safe for
|
|||||||
### Advanced Tweaks (CAUTION)
|
### Advanced Tweaks (CAUTION)
|
||||||
Advanced Tweaks are intended for experienced users who have a solid understanding of their system and the potential implications of making deep-level changes. These tweaks involve more significant alterations to the operating system and can provide substantial customization. However, they also carry a higher risk of causing system instability or unintended side effects if not implemented correctly. Users who choose to apply Advanced Tweaks should proceed with caution, ensuring they have adequate knowledge and backups in place to recover if something goes wrong. These tweaks are not recommended for novice users or those unfamiliar with the inner workings of their operating system.
|
Advanced Tweaks are intended for experienced users who have a solid understanding of their system and the potential implications of making deep-level changes. These tweaks involve more significant alterations to the operating system and can provide substantial customization. However, they also carry a higher risk of causing system instability or unintended side effects if not implemented correctly. Users who choose to apply Advanced Tweaks should proceed with caution, ensuring they have adequate knowledge and backups in place to recover if something goes wrong. These tweaks are not recommended for novice users or those unfamiliar with the inner workings of their operating system.
|
||||||
|
|
||||||
### O&O Shutup
|
### O&O ShutUp10++
|
||||||
|
|
||||||
|
|
||||||
[O&O ShutUp10++](https://www.oo-software.com/en/shutup10) can be launched from Winutil with only one button click. It is a free privacy tool for Windows that lets users easily manage their privacy settings. It disables telemetry, controls updates, and manages app permissions to enhance security and privacy. The tool offers recommended settings for optimal privacy with just a few clicks.
|
[O&O ShutUp10++](https://www.oo-software.com/en/shutup10) can be launched from Winutil with one click. It is a free privacy tool for Windows that helps users manage telemetry, update behavior, and app permission settings.
|
||||||
|
|
||||||
{{< youtube id=3HvNr8eMcv0 loading=lazy >}}
|
{{< youtube id=3HvNr8eMcv0 loading=lazy >}}
|
||||||
|
|
||||||
@@ -46,11 +46,11 @@ The utility provides a convenient DNS selection feature, allowing users to choos
|
|||||||
|
|
||||||
### Customize Preferences
|
### Customize Preferences
|
||||||
|
|
||||||
The Customize Preferences section allows users to personalize their Windows experience by toggling various visual and functional features. These preferences are designed to enhance usability and tailor the system to the user’s specific needs and preferences.
|
The Customize Preferences section allows users to personalize their Windows experience by toggling visual and functional settings.
|
||||||
|
|
||||||
### Performance Plans
|
### Performance Plans
|
||||||
|
|
||||||
The Performance Plans section allows users to manage the Ultimate Performance Profile on their system. This feature is designed to optimize the system for maximum performance.
|
The Performance Plans section allows users to manage the Ultimate Performance Profile for maximum performance.
|
||||||
|
|
||||||
#### Add and activate the Ultimate Performance Profile:
|
#### Add and activate the Ultimate Performance Profile:
|
||||||
* Enables and activates the Ultimate Performance Profile to enhance system performance by minimizing latency and increasing efficiency.
|
* Enables and activates the Ultimate Performance Profile to enhance system performance by minimizing latency and increasing efficiency.
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
---
|
||||||
|
title: Updates
|
||||||
|
weight: 6
|
||||||
|
---
|
||||||
|
|
||||||
The utility provides three distinct settings for managing Windows updates: Default (Out of Box) Settings, Security (Recommended) Settings, and Disable ALL Updates (NOT RECOMMENDED!). Each setting offers a different approach to handling updates, catering to various user needs and preferences.
|
The utility provides three distinct settings for managing Windows updates: Default (Out of Box) Settings, Security (Recommended) Settings, and Disable ALL Updates (NOT RECOMMENDED!). Each setting offers a different approach to handling updates, catering to various user needs and preferences.
|
||||||
|
|
||||||
### Default (Out of Box) Settings
|
### Default (Out of Box) Settings
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Win 11 Creator
|
title: Win 11 Creator
|
||||||
weight: 5
|
weight: 8
|
||||||
---
|
---
|
||||||
|
|
||||||
## Using Winutil's Win11 Creator
|
## Using Winutil's Win11 Creator
|
||||||
@@ -40,7 +40,7 @@ Click **Run Windows ISO Modification and Creator** to start the customization pr
|
|||||||
- **Delete OneDrive setup** from the image
|
- **Delete OneDrive setup** from the image
|
||||||
|
|
||||||
**System Customization:**
|
**System Customization:**
|
||||||
- **Bypass hardware checks** — removes TPM, Secure Boot, CPU, and RAM requirement enforcement so the ISO installs on unsupported hardware
|
- **Bypass hardware checks** — removes TPM, Secure Boot, CPU, RAM, and storage requirement enforcement so the ISO installs on unsupported hardware
|
||||||
- **Enable local account setup** — injects an `autounattend.xml` that skips the Microsoft account screen during OOBE
|
- **Enable local account setup** — injects an `autounattend.xml` that skips the Microsoft account screen during OOBE
|
||||||
- **Disable BitLocker and device encryption** — removes startup overhead
|
- **Disable BitLocker and device encryption** — removes startup overhead
|
||||||
- **Disable Chat icon** — removes chat taskbar button
|
- **Disable Chat icon** — removes chat taskbar button
|
||||||
@@ -69,9 +69,9 @@ A live log shows progress as each step completes. This stage takes **10–30 min
|
|||||||
|
|
||||||
Once modification is complete, choose how to save your image:
|
Once modification is complete, choose how to save your image:
|
||||||
|
|
||||||
{{< tabs items="Save as ISO,Write to USB" defaultIndex="0" >}}
|
{{< tabs >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Save as ISO" selected=true >}}
|
||||||
1. Click **Save as an ISO File**.
|
1. Click **Save as an ISO File**.
|
||||||
2. Choose a save location (defaults to your Desktop as `Win11_Modified_yyyyMMdd.iso`).
|
2. Choose a save location (defaults to your Desktop as `Win11_Modified_yyyyMMdd.iso`).
|
||||||
3. Winutil builds a dual BIOS/UEFI bootable ISO using `oscdimg.exe`.
|
3. Winutil builds a dual BIOS/UEFI bootable ISO using `oscdimg.exe`.
|
||||||
@@ -82,7 +82,7 @@ Once modification is complete, choose how to save your image:
|
|||||||
**Typical output size:** 2.5–3.5 GB (down from 5–6 GB original)
|
**Typical output size:** 2.5–3.5 GB (down from 5–6 GB original)
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
{{< tab >}}
|
{{< tab name="Write to USB" >}}
|
||||||
1. Click **Write Directly to a USB Drive**.
|
1. Click **Write Directly to a USB Drive**.
|
||||||
2. Select your USB drive from the dropdown (click **Refresh** if it doesn't appear).
|
2. Select your USB drive from the dropdown (click **Refresh** if it doesn't appear).
|
||||||
3. Click **Erase & Write to USB** and confirm the warning — **all data on the drive will be permanently erased**.
|
3. Click **Erase & Write to USB** and confirm the warning — **all data on the drive will be permanently erased**.
|
||||||
@@ -161,7 +161,7 @@ A list of the best free and open source tools for downloading, creating and flas
|
|||||||
---
|
---
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> Already have a Windows 11 ISO? Skip the third-party tools and use Winutil's built-in **[Win11 Creator](#using-winutilss-win11-creator)** at the top of this page.
|
> Already have a Windows 11 ISO? Skip the third-party tools and use Winutil's built-in **[Win11 Creator](#using-winutils-win11-creator)** at the top of this page.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Always download Windows ISOs from official Microsoft sources or trusted tools like Rufus/UUP Dump to avoid tampered images.
|
> Always download Windows ISOs from official Microsoft sources or trusted tools like Rufus/UUP Dump to avoid tampered images.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
module github.com/ChrisTitusTech/WinUtil
|
module github.com/ChrisTitusTech/WinUtil
|
||||||
|
|
||||||
go 1.23.3
|
go 1.26
|
||||||
|
|
||||||
require github.com/imfing/hextra v0.11.1 // indirect
|
require github.com/imfing/hextra v0.12.0 // indirect
|
||||||
|
|||||||
@@ -2,3 +2,5 @@ github.com/imfing/hextra v0.9.7 h1:Zg5n24us36Bn/S/5mEUPkRW6uwE6vHHEqWSgN0bPXaM=
|
|||||||
github.com/imfing/hextra v0.9.7/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
github.com/imfing/hextra v0.9.7/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
||||||
github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI=
|
github.com/imfing/hextra v0.11.1 h1:8pTc4ReYbzGTHAnyiebmlT3ijFfIXiGu1r7tM/UGjFI=
|
||||||
github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
github.com/imfing/hextra v0.11.1/go.mod h1:cEfel3lU/bSx7lTE/+uuR4GJaphyOyiwNR3PTqFTXpI=
|
||||||
|
github.com/imfing/hextra v0.12.0 h1:f6y35hW/WDJEcx9S0dOmbICOBxYE0PmP6IJFsTUgVyY=
|
||||||
|
github.com/imfing/hextra v0.12.0/go.mod h1:YAv8XRNSmcqjieFwI7fVQK1AoY2Do+45DO9HGqxSGu4=
|
||||||
|
|||||||
@@ -12,29 +12,48 @@ canonifyURLs = true
|
|||||||
path = "github.com/imfing/hextra"
|
path = "github.com/imfing/hextra"
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
name = "Developer Documentation"
|
identifier = "userguide"
|
||||||
pageRef = "/dev"
|
name = "User Guides"
|
||||||
|
pageRef = "/userguide"
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
name = "User Guides"
|
identifier = "documentation"
|
||||||
pageRef = "/userguide"
|
name = "Developer Documentation"
|
||||||
weight = 2
|
weight = 2
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
|
identifier = "contribution-guides"
|
||||||
name = "Contribution Guides"
|
name = "Contribution Guides"
|
||||||
pageRef = "CONTRIBUTING.md"
|
pageRef = "CONTRIBUTING.md"
|
||||||
|
weight = 1
|
||||||
|
parent = "documentation"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
identifier = "developer-documentation"
|
||||||
|
name = "Developer Docs"
|
||||||
|
pageRef = "/dev"
|
||||||
|
weight = 2
|
||||||
|
parent = "documentation"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
identifier = "help"
|
||||||
|
name = "Help"
|
||||||
weight = 3
|
weight = 3
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
|
identifier = "faq"
|
||||||
name = "FAQ"
|
name = "FAQ"
|
||||||
pageRef = "faq.md"
|
pageRef = "faq.md"
|
||||||
weight = 4
|
weight = 1
|
||||||
|
parent = "help"
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
|
identifier = "known-issues"
|
||||||
name = "Known Issues"
|
name = "Known Issues"
|
||||||
pageRef = "KnownIssues.md"
|
pageRef = "KnownIssues.md"
|
||||||
weight = 4
|
weight = 2
|
||||||
|
parent = "help"
|
||||||
|
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
name = "Store"
|
name = "Store"
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
copyright: "© <script>document.write(new Date().getFullYear())</script> <a href='https://christitus.com'>Chris Titus Tech</a>. All rights reserved."
|
copyright: "© <script>document.write(new Date().getFullYear())</script> <a href='https://christitus.com'>Chris Titus Tech</a>. All rights reserved."
|
||||||
|
|
||||||
backToTop: "Scroll to top"
|
backToTop: "Scroll to top"
|
||||||
changeLanguage: "Change language"
|
changeLanguage: "Change language"
|
||||||
changeTheme: "Change theme"
|
changeTheme: "Change theme"
|
||||||
|
|||||||
@@ -103,13 +103,24 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
try {
|
try {
|
||||||
SetProgress "Formatting USB drive..." 10
|
SetProgress "Formatting USB drive..." 10
|
||||||
|
|
||||||
# Phase 1: Clean disk via diskpart
|
# Phase 1: Clean disk via diskpart (retry once if the drive is not yet ready)
|
||||||
$dpFile1 = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
$dpFile1 = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
||||||
"select disk $diskNum`nclean`nexit" | Set-Content -Path $dpFile1 -Encoding ASCII
|
"select disk $diskNum`nclean`nexit" | Set-Content -Path $dpFile1 -Encoding ASCII
|
||||||
Log "Running diskpart clean on Disk $diskNum..."
|
Log "Running diskpart clean on Disk $diskNum..."
|
||||||
diskpart /s $dpFile1 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
$dpCleanOut = diskpart /s $dpFile1 2>&1
|
||||||
|
$dpCleanOut | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
Remove-Item $dpFile1 -Force -ErrorAction SilentlyContinue
|
Remove-Item $dpFile1 -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
if (($dpCleanOut -join ' ') -match 'device is not ready') {
|
||||||
|
Log "Disk $diskNum was not ready; waiting 5 seconds and retrying clean..."
|
||||||
|
Start-Sleep -Seconds 5
|
||||||
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
$dpFile1b = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
||||||
|
"select disk $diskNum`nclean`nexit" | Set-Content -Path $dpFile1b -Encoding ASCII
|
||||||
|
diskpart /s $dpFile1b 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
|
Remove-Item $dpFile1b -Force -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
# Phase 2: Initialize as GPT
|
# Phase 2: Initialize as GPT
|
||||||
Start-Sleep -Seconds 2
|
Start-Sleep -Seconds 2
|
||||||
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
@@ -122,7 +133,8 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
Log "Disk $diskNum converted to GPT (was $($diskObj.PartitionStyle))."
|
Log "Disk $diskNum converted to GPT (was $($diskObj.PartitionStyle))."
|
||||||
}
|
}
|
||||||
|
|
||||||
# Phase 3: Create FAT32 partition via diskpart
|
# Phase 3: Create FAT32 partition via diskpart, then format with Format-Volume
|
||||||
|
# (diskpart's 'format' command can fail with "no volume selected" on fresh/never-formatted drives)
|
||||||
$volLabel = "W11-" + (Get-Date).ToString('yyMMdd')
|
$volLabel = "W11-" + (Get-Date).ToString('yyMMdd')
|
||||||
$dpFile2 = Join-Path $env:TEMP "winutil_diskpart2_$(Get-Random).txt"
|
$dpFile2 = Join-Path $env:TEMP "winutil_diskpart2_$(Get-Random).txt"
|
||||||
$maxFat32PartitionMB = 32768
|
$maxFat32PartitionMB = 32768
|
||||||
@@ -136,29 +148,38 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
@(
|
@(
|
||||||
"select disk $diskNum"
|
"select disk $diskNum"
|
||||||
$createPartitionCommand
|
$createPartitionCommand
|
||||||
"select partition 1"
|
|
||||||
"format quick fs=fat32 label=`"$volLabel`""
|
|
||||||
"exit"
|
"exit"
|
||||||
) | Set-Content -Path $dpFile2 -Encoding ASCII
|
) | Set-Content -Path $dpFile2 -Encoding ASCII
|
||||||
Log "Creating partitions on Disk $diskNum..."
|
Log "Creating partitions on Disk $diskNum..."
|
||||||
diskpart /s $dpFile2 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
diskpart /s $dpFile2 2>&1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
Remove-Item $dpFile2 -Force -ErrorAction SilentlyContinue
|
Remove-Item $dpFile2 -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
SetProgress "Assigning drive letters..." 30
|
SetProgress "Formatting USB partition..." 25
|
||||||
Start-Sleep -Seconds 3
|
Start-Sleep -Seconds 3
|
||||||
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
$partitions = Get-Partition -DiskNumber $diskNum -ErrorAction Stop
|
$partitions = Get-Partition -DiskNumber $diskNum -ErrorAction Stop
|
||||||
Log "Partitions on Disk $diskNum after format: $($partitions.Count)"
|
Log "Partitions on Disk $diskNum after creation: $($partitions.Count)"
|
||||||
foreach ($p in $partitions) {
|
foreach ($p in $partitions) {
|
||||||
Log " Partition $($p.PartitionNumber) Type=$($p.Type) Letter=$($p.DriveLetter) Size=$([math]::Round($p.Size/1MB))MB"
|
Log " Partition $($p.PartitionNumber) Type=$($p.Type) Letter=$($p.DriveLetter) Size=$([math]::Round($p.Size/1MB))MB"
|
||||||
}
|
}
|
||||||
|
|
||||||
$winpePart = $partitions | Where-Object { $_.Type -eq "Basic" } | Select-Object -Last 1
|
$winpePart = $partitions | Where-Object { $_.Type -eq "Basic" } | Select-Object -Last 1
|
||||||
if (-not $winpePart) {
|
if (-not $winpePart) {
|
||||||
throw "Could not find the WINPE (Basic) partition on Disk $diskNum after format."
|
throw "Could not find the Basic partition on Disk $diskNum after creation."
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Format using Format-Volume (reliable on fresh drives; diskpart format fails
|
||||||
|
# with 'no volume selected' when the partition has never been formatted before)
|
||||||
|
Log "Formatting Partition $($winpePart.PartitionNumber) as FAT32 (label: $volLabel)..."
|
||||||
|
Get-Partition -DiskNumber $diskNum -PartitionNumber $winpePart.PartitionNumber |
|
||||||
|
Format-Volume -FileSystem FAT32 -NewFileSystemLabel $volLabel -Force -Confirm:$false | Out-Null
|
||||||
|
Log "Partition $($winpePart.PartitionNumber) formatted as FAT32."
|
||||||
|
|
||||||
|
SetProgress "Assigning drive letters..." 30
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
try { Remove-PartitionAccessPath -DiskNumber $diskNum -PartitionNumber $winpePart.PartitionNumber -AccessPath "$($winpePart.DriveLetter):" -ErrorAction SilentlyContinue } catch {}
|
try { Remove-PartitionAccessPath -DiskNumber $diskNum -PartitionNumber $winpePart.PartitionNumber -AccessPath "$($winpePart.DriveLetter):" -ErrorAction SilentlyContinue } catch {}
|
||||||
$usbLetter = Get-FreeDriveLetter
|
$usbLetter = Get-FreeDriveLetter
|
||||||
if (-not $usbLetter) { throw "No free drive letters (D-Z) available to assign to the USB data partition." }
|
if (-not $usbLetter) { throw "No free drive letters (D-Z) available to assign to the USB data partition." }
|
||||||
@@ -167,6 +188,12 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
Start-Sleep -Seconds 2
|
Start-Sleep -Seconds 2
|
||||||
|
|
||||||
$usbDrive = "${usbLetter}:"
|
$usbDrive = "${usbLetter}:"
|
||||||
|
$retries = 0
|
||||||
|
while (-not (Test-Path $usbDrive) -and $retries -lt 6) {
|
||||||
|
$retries++
|
||||||
|
Log "Waiting for $usbDrive to become accessible (attempt $retries/6)..."
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
}
|
||||||
if (-not (Test-Path $usbDrive)) { throw "Drive $usbDrive is not accessible after letter assignment." }
|
if (-not (Test-Path $usbDrive)) { throw "Drive $usbDrive is not accessible after letter assignment." }
|
||||||
Log "USB data partition: $usbDrive"
|
Log "USB data partition: $usbDrive"
|
||||||
|
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
function Test-WinUtilInternetConnection {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Tests if the computer has internet connectivity
|
|
||||||
.OUTPUTS
|
|
||||||
Boolean - True if connected, False if offline
|
|
||||||
#>
|
|
||||||
try {
|
|
||||||
# Test multiple reliable endpoints
|
|
||||||
$testSites = @(
|
|
||||||
"8.8.8.8", # Google DNS
|
|
||||||
"1.1.1.1", # Cloudflare DNS
|
|
||||||
"208.67.222.222" # OpenDNS
|
|
||||||
)
|
|
||||||
|
|
||||||
foreach ($site in $testSites) {
|
|
||||||
if (Test-Connection -ComputerName $site -Count 1 -Quiet -ErrorAction SilentlyContinue) {
|
|
||||||
return $true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,7 +11,7 @@ function Invoke-WPFFixesWinget {
|
|||||||
try {
|
try {
|
||||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||||
Write-Host "==> Starting Winget Repair"
|
Write-Host "==> Starting Winget Repair"
|
||||||
Install-WinUtilWinget -Force
|
Install-WinUtilWinget
|
||||||
} catch {
|
} catch {
|
||||||
Write-Error "Failed to install winget: $_"
|
Write-Error "Failed to install winget: $_"
|
||||||
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
||||||
|
|||||||
@@ -15,12 +15,14 @@ $maxthreads = [int]$env:NUMBER_OF_PROCESSORS
|
|||||||
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
|
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
|
||||||
$debugVar = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'DebugPreference',$DebugPreference,$Null
|
$debugVar = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'DebugPreference',$DebugPreference,$Null
|
||||||
$uiVar = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'PARAM_NOUI',$PARAM_NOUI,$Null
|
$uiVar = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'PARAM_NOUI',$PARAM_NOUI,$Null
|
||||||
|
$offlineVar = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'PARAM_OFFLINE',$PARAM_OFFLINE,$Null
|
||||||
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
|
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
|
||||||
|
|
||||||
# Add the variable to the session state
|
# Add the variable to the session state
|
||||||
$InitialSessionState.Variables.Add($hashVars)
|
$InitialSessionState.Variables.Add($hashVars)
|
||||||
$InitialSessionState.Variables.Add($debugVar)
|
$InitialSessionState.Variables.Add($debugVar)
|
||||||
$InitialSessionState.Variables.Add($uiVar)
|
$InitialSessionState.Variables.Add($uiVar)
|
||||||
|
$InitialSessionState.Variables.Add($offlineVar)
|
||||||
|
|
||||||
# Get every private function and add them to the session state
|
# Get every private function and add them to the session state
|
||||||
$functions = Get-ChildItem function:\ | Where-Object { $_.Name -imatch 'winutil|WPF' }
|
$functions = Get-ChildItem function:\ | Where-Object { $_.Name -imatch 'winutil|WPF' }
|
||||||
@@ -350,11 +352,10 @@ $sync["Form"].Add_ContentRendered({
|
|||||||
Write-Debug "Unable to retrieve information about the primary monitor."
|
Write-Debug "Unable to retrieve information about the primary monitor."
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check internet connectivity and disable install tab if offline
|
if ($PARAM_OFFLINE) {
|
||||||
#$isOnline = Test-WinUtilInternetConnection
|
# Show offline banner
|
||||||
$isOnline = $true # Temporarily force online mode until we can resolve false negatives
|
$sync.WPFOfflineBanner.Visibility = [System.Windows.Visibility]::Visible
|
||||||
|
|
||||||
if (-not $isOnline) {
|
|
||||||
# Disable the install tab
|
# Disable the install tab
|
||||||
$sync.WPFTab1BT.IsEnabled = $false
|
$sync.WPFTab1BT.IsEnabled = $false
|
||||||
$sync.WPFTab1BT.Opacity = 0.5
|
$sync.WPFTab1BT.Opacity = 0.5
|
||||||
@@ -486,7 +487,7 @@ $sync["AboutMenuItem"].Add_Click({
|
|||||||
Invoke-WPFPopup -Action "Hide" -Popups @("Settings")
|
Invoke-WPFPopup -Action "Hide" -Popups @("Settings")
|
||||||
|
|
||||||
$authorInfo = @"
|
$authorInfo = @"
|
||||||
Author : <a href="https://github.com/ChrisTitusTech">@christitustech</a>
|
Author : <a href="https://github.com/ChrisTitusTech">@ChrisTitusTech</a>
|
||||||
UI : <a href="https://github.com/MyDrift-user">@MyDrift-user</a>, <a href="https://github.com/Marterich">@Marterich</a>
|
UI : <a href="https://github.com/MyDrift-user">@MyDrift-user</a>, <a href="https://github.com/Marterich">@Marterich</a>
|
||||||
Runspace : <a href="https://github.com/DeveloperDurp">@DeveloperDurp</a>, <a href="https://github.com/Marterich">@Marterich</a>
|
Runspace : <a href="https://github.com/DeveloperDurp">@DeveloperDurp</a>, <a href="https://github.com/Marterich">@Marterich</a>
|
||||||
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
GitHub : <a href="https://github.com/ChrisTitusTech/winutil">ChrisTitusTech/winutil</a>
|
||||||
@@ -494,6 +495,11 @@ Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sy
|
|||||||
"@
|
"@
|
||||||
Show-CustomDialog -Title "About" -Message $authorInfo
|
Show-CustomDialog -Title "About" -Message $authorInfo
|
||||||
})
|
})
|
||||||
|
$sync["DocumentationMenuItem"].Add_Click({
|
||||||
|
Write-Debug "Documentation clicked"
|
||||||
|
Invoke-WPFPopup -Action "Hide" -Popups @("Settings")
|
||||||
|
Start-Process "https://winutil.christitus.com/"
|
||||||
|
})
|
||||||
$sync["SponsorMenuItem"].Add_Click({
|
$sync["SponsorMenuItem"].Add_Click({
|
||||||
Write-Debug "Sponsors clicked"
|
Write-Debug "Sponsors clicked"
|
||||||
Invoke-WPFPopup -Action "Hide" -Popups @("Settings")
|
Invoke-WPFPopup -Action "Hide" -Popups @("Settings")
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
param (
|
param (
|
||||||
[string]$Config,
|
[string]$Config,
|
||||||
[switch]$Run,
|
[switch]$Run,
|
||||||
[switch]$Noui
|
[switch]$Noui,
|
||||||
|
[switch]$Offline
|
||||||
)
|
)
|
||||||
|
|
||||||
if ($Config) {
|
if ($Config) {
|
||||||
@@ -27,6 +28,11 @@ if ($Noui) {
|
|||||||
$PARAM_NOUI = $true
|
$PARAM_NOUI = $true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$PARAM_OFFLINE = $false
|
||||||
|
if ($Offline) {
|
||||||
|
$PARAM_OFFLINE = $true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||||||
Write-Output "Winutil needs to be run as Administrator. Attempting to relaunch."
|
Write-Output "Winutil needs to be run as Administrator. Attempting to relaunch."
|
||||||
|
|||||||
@@ -5,10 +5,6 @@
|
|||||||
<settings pass="windowsPE">
|
<settings pass="windowsPE">
|
||||||
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
||||||
<UserData>
|
<UserData>
|
||||||
<ProductKey>
|
|
||||||
<Key>00000-00000-00000-00000-00000</Key>
|
|
||||||
<WillShowUI>Never</WillShowUI>
|
|
||||||
</ProductKey>
|
|
||||||
<AcceptEula>true</AcceptEula>
|
<AcceptEula>true</AcceptEula>
|
||||||
</UserData>
|
</UserData>
|
||||||
<UseConfigurationSet>false</UseConfigurationSet>
|
<UseConfigurationSet>false</UseConfigurationSet>
|
||||||
|
|||||||
@@ -943,13 +943,19 @@
|
|||||||
</Window.Resources>
|
</Window.Resources>
|
||||||
<Grid Background="{DynamicResource MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
|
<Grid Background="{DynamicResource MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="*"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Grid Grid.Row="0" Background="{DynamicResource MainBackgroundColor}">
|
<!-- Offline banner -->
|
||||||
|
<Border Name="WPFOfflineBanner" Grid.Row="0" Background="#8B0000" Visibility="Collapsed" Padding="6,4">
|
||||||
|
<TextBlock Text="⚠ Offline Mode - No Internet Connection" Foreground="White" FontWeight="Bold"
|
||||||
|
HorizontalAlignment="Center" FontSize="13" Background="Transparent"/>
|
||||||
|
</Border>
|
||||||
|
<Grid Grid.Row="1" Background="{DynamicResource MainBackgroundColor}">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"/> <!-- Navigation buttons -->
|
<ColumnDefinition Width="Auto"/> <!-- Navigation buttons -->
|
||||||
<ColumnDefinition Width="*"/> <!-- Search bar and buttons -->
|
<ColumnDefinition Width="*"/> <!-- Search bar and buttons -->
|
||||||
@@ -1174,6 +1180,7 @@
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
<Separator/>
|
<Separator/>
|
||||||
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
||||||
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Documentation" Name="DocumentationMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
||||||
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Sponsors" Name="SponsorMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Sponsors" Name="SponsorMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
@@ -1192,7 +1199,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="0" Padding="-1">
|
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="2" Grid.Column="0" Padding="-1">
|
||||||
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
|
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
|
||||||
<Grid Background="Transparent" >
|
<Grid Background="Transparent" >
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user