mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-07-02 19:13:30 -05:00
Compare commits
10 Commits
24.07.18
...
faae0e69cb
Author | SHA1 | Date | |
---|---|---|---|
faae0e69cb | |||
2f151ea591 | |||
215faa18ed | |||
93d20b9e62 | |||
be671723f1 | |||
503f8a7f09 | |||
27792dc8a3 | |||
790e0b22a5 | |||
73973d7101 | |||
a86b07a826 |
11
.github/ISSUE_TEMPLATE/bug_report.md
vendored
11
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -4,23 +4,24 @@ about: Create a report to help us improve
|
|||||||
title: ''
|
title: ''
|
||||||
labels: ''
|
labels: ''
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Describe the bug
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
## To Reproduce
|
**To Reproduce**
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
4. See error
|
4. See error
|
||||||
|
|
||||||
## Expected behavior
|
**Expected behavior**
|
||||||
A clear and concise description of what you expected to happen.
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
## Screenshots
|
**Screenshots**
|
||||||
If applicable, add screenshots to help explain your problem.
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
## Additional context
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -22,8 +22,10 @@
|
|||||||
[Discuss the impact of your changes on the project. This might include effects on performance, new dependencies, or changes in behaviour.]
|
[Discuss the impact of your changes on the project. This might include effects on performance, new dependencies, or changes in behaviour.]
|
||||||
|
|
||||||
## Issue related to PR
|
## Issue related to PR
|
||||||
[What issue/discussion is related to this PR (if any)]
|
[What issue is related to this PR (if any)]
|
||||||
- Resolves #
|
- Resolves #
|
||||||
|
[What discussion is related to this PR (if any)]
|
||||||
|
- Discussion: #
|
||||||
|
|
||||||
## Additional Information
|
## Additional Information
|
||||||
[Any additional information that reviewers should be aware of.]
|
[Any additional information that reviewers should be aware of.]
|
||||||
@ -33,4 +35,4 @@
|
|||||||
- [ ] I have performed a self-review of my own code.
|
- [ ] I have performed a self-review of my own code.
|
||||||
- [ ] I have commented my code, particularly in hard-to-understand areas.
|
- [ ] I have commented my code, particularly in hard-to-understand areas.
|
||||||
- [ ] I have made corresponding changes to the documentation.
|
- [ ] I have made corresponding changes to the documentation.
|
||||||
- [ ] My changes generate no errors/warnings/merge conflicts.
|
- [ ] My changes generate no errors/warnings/merge conflicts.
|
||||||
|
9
.github/dependabot.yml
vendored
9
.github/dependabot.yml
vendored
@ -1,9 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
ignore:
|
|
||||||
- dependency-name: "actions/stale"
|
|
||||||
versions: '>= 9'
|
|
@ -1,22 +1,23 @@
|
|||||||
name: GitHub Pages Deploy
|
name: ci
|
||||||
on:
|
on:
|
||||||
release:
|
push:
|
||||||
types: [published, prereleased]
|
branches:
|
||||||
workflow_dispatch:
|
- master
|
||||||
|
- main
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
key: ${{ github.ref }}
|
key: ${{ github.ref }}
|
||||||
path: .cache
|
path: .cache
|
||||||
- run: pip install mkdocs-material
|
- run: pip install mkdocs-material
|
||||||
- run: pip install pillow cairosvg
|
- run: pip install pillow cairosvg
|
||||||
- run: mkdocs gh-deploy --force
|
- run: mkdocs gh-deploy --force
|
2
.github/workflows/close-discussion.yml
vendored
2
.github/workflows/close-discussion.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
|||||||
if: github.event.pull_request.merged == true
|
if: github.event.pull_request.merged == true
|
||||||
id: extract-discussion
|
id: extract-discussion
|
||||||
run: |
|
run: |
|
||||||
echo "discussion=$(echo '${{ github.event.pull_request.body }}' | grep -oP '(?<=Resolves #)\d+')" >> $GITHUB_OUTPUT
|
echo "::set-output name=discussion::$(echo "${{ github.event.pull_request.body }}" | grep -oP '(?<=Discussion: #)\d+')"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
- name: Close the discussion
|
- name: Close the discussion
|
||||||
|
47
.github/workflows/createchangelog.yml
vendored
47
.github/workflows/createchangelog.yml
vendored
@ -1,42 +1,17 @@
|
|||||||
name: Update update.mb on Release
|
name: On release published
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [published, prereleased]
|
types: [published]
|
||||||
workflow_dispatch: # Add this line to enable manual triggering
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-file:
|
changelog:
|
||||||
|
name: Update changelog
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- uses: actions/checkout@v3
|
||||||
uses: actions/checkout@v4
|
with:
|
||||||
|
ref: main
|
||||||
- name: Get all releases and update update.mb file
|
- uses: rhysd/changelog-from-release/action@v3
|
||||||
run: |
|
with:
|
||||||
# Fetch all releases including pre-releases using GitHub CLI
|
file: /docs/updates.md
|
||||||
gh release list --limit 5 > releases.txt
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
# Extract numeric versions and create update.mb content
|
|
||||||
echo "" > docs/update.mb
|
|
||||||
while read -r line; do
|
|
||||||
tag=$(echo "$line" | awk '{print $1}')
|
|
||||||
name=$(echo "$line" | awk -F'\t' '{print $2}')
|
|
||||||
version_numeric=$(echo "$tag" | grep -o -E '[0-9.]+')
|
|
||||||
body=$(gh release view "$tag" --json body --jq .body)
|
|
||||||
echo "## $version_numeric" >> docs/update.mb
|
|
||||||
echo "Release name: $name" >> docs/update.mb
|
|
||||||
echo "Release body: $body" >> docs/update.mb
|
|
||||||
echo "" >> docs/update.mb
|
|
||||||
done < releases.txt
|
|
||||||
|
|
||||||
- name: Commit and Push Changes
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
|
||||||
git config --global user.name 'github-actions[bot]'
|
|
||||||
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
|
||||||
git add docs/update.mb
|
|
||||||
git commit -m "Update update.mb with all releases"
|
|
||||||
git push
|
|
43
.github/workflows/issue-slash-commands.yaml
vendored
43
.github/workflows/issue-slash-commands.yaml
vendored
@ -1,43 +0,0 @@
|
|||||||
name: Close issue on /close
|
|
||||||
|
|
||||||
on:
|
|
||||||
issue_comment:
|
|
||||||
types: [created, edited]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
closeIssueOnClose:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: none
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check for /close comment
|
|
||||||
id: check_comment
|
|
||||||
run: |
|
|
||||||
if [[ "${{ contains(github.event.comment.body, '/close') }}" == "true" ]]; then
|
|
||||||
echo "comment=true" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "comment=false" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Check if the user is allowed
|
|
||||||
id: check_user
|
|
||||||
if: env.comment == 'true'
|
|
||||||
run: |
|
|
||||||
ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC")
|
|
||||||
if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then
|
|
||||||
echo "user=true" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "user=false" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Close issue if conditions are met
|
|
||||||
if: env.comment == 'true' && env.user == 'true'
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
|
||||||
run: |
|
|
||||||
echo Closing the issue...
|
|
||||||
gh issue close $ISSUE_NUMBER --repo ${{ github.repository }}
|
|
42
.github/workflows/pre-release.yaml
vendored
42
.github/workflows/pre-release.yaml
vendored
@ -1,15 +1,17 @@
|
|||||||
name: Pre-Release WinUtil
|
name: Pre-Release WinUtil
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
actions: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["Compile"] #Ensure Compile winget.ps1 is done
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
workflow_dispatch: # Manual trigger added
|
workflow_dispatch: # Manual trigger added
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-runspace:
|
build-runspace:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.extract_version.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -17,19 +19,18 @@ jobs:
|
|||||||
- name: Extract Version from winutil.ps1
|
- name: Extract Version from winutil.ps1
|
||||||
id: extract_version
|
id: extract_version
|
||||||
run: |
|
run: |
|
||||||
$version = (Get-Date -Format "yy.MM.dd")
|
$version = ''
|
||||||
echo "version=$version" >> $env:GITHUB_ENV
|
Get-Content ./winutil.ps1 -TotalCount 30 | ForEach-Object {
|
||||||
shell: pwsh
|
if ($_ -match 'Version\s*:\s*(\d{2}\.\d{2}\.\d{2})') {
|
||||||
|
$version = "pre"+$matches[1]
|
||||||
- name: Create Tag
|
echo "version=$version" >> $GITHUB_ENV
|
||||||
id: create_tag
|
echo "::set-output name=version::$version"
|
||||||
run: |
|
break
|
||||||
$tagExists = git tag -l $env:VERSION
|
}
|
||||||
if ($tagExists -eq "") {
|
}
|
||||||
git tag $env:VERSION
|
if (-not $version) {
|
||||||
git push origin $env:VERSION
|
Write-Error "Version not found in winutil.ps1"
|
||||||
} else {
|
exit 1
|
||||||
Write-Host "Tag $env:VERSION already exists, skipping tag creation"
|
|
||||||
}
|
}
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
@ -37,12 +38,9 @@ jobs:
|
|||||||
id: create_release
|
id: create_release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ env.VERSION }}
|
tag_name: ${{ steps.extract_version.outputs.version }}
|
||||||
name: Pre-Release ${{ env.VERSION }}
|
name: Pre-Release ${{ steps.extract_version.outputs.version }}
|
||||||
body: ""
|
|
||||||
append_body: false
|
|
||||||
files: ./winutil.ps1
|
files: ./winutil.ps1
|
||||||
prerelease: true
|
prerelease: true
|
||||||
generate_release_notes: true
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
5
.github/workflows/release.yaml
vendored
5
.github/workflows/release.yaml
vendored
@ -19,7 +19,8 @@ jobs:
|
|||||||
Get-Content ./winutil.ps1 -TotalCount 30 | ForEach-Object {
|
Get-Content ./winutil.ps1 -TotalCount 30 | ForEach-Object {
|
||||||
if ($_ -match 'Version\s*:\s*(\d{2}\.\d{2}\.\d{2})') {
|
if ($_ -match 'Version\s*:\s*(\d{2}\.\d{2}\.\d{2})') {
|
||||||
$version = $matches[1]
|
$version = $matches[1]
|
||||||
echo "version=$version" >> $GITHUB_OUTPUT
|
echo "version=$version" >> $GITHUB_ENV
|
||||||
|
echo "::set-output name=version::$version"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -35,8 +36,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.extract_version.outputs.version }}
|
tag_name: ${{ steps.extract_version.outputs.version }}
|
||||||
name: Release ${{ steps.extract_version.outputs.version }}
|
name: Release ${{ steps.extract_version.outputs.version }}
|
||||||
body: ""
|
|
||||||
append_body: true
|
|
||||||
files: ./winutil.ps1
|
files: ./winutil.ps1
|
||||||
prerelease: false
|
prerelease: false
|
||||||
make_latest: "true"
|
make_latest: "true"
|
||||||
|
25
.github/workflows/sponsors.yml
vendored
25
.github/workflows/sponsors.yml
vendored
@ -1,25 +0,0 @@
|
|||||||
name: Generate Sponsors README
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: 30 15 * * 0-6
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout 🛎️
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Generate Sponsors 💖
|
|
||||||
uses: JamesIves/github-sponsors-readme-action@v1
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.PAT }}
|
|
||||||
file: 'README.md'
|
|
||||||
|
|
||||||
- name: Deploy to GitHub Pages 🚀
|
|
||||||
uses: JamesIves/github-pages-deploy-action@v4
|
|
||||||
with:
|
|
||||||
branch: main
|
|
||||||
folder: '.'
|
|
4
.github/workflows/unittests.yaml
vendored
4
.github/workflows/unittests.yaml
vendored
@ -8,7 +8,7 @@ jobs:
|
|||||||
name: PS Script Analyzer
|
name: PS Script Analyzer
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: lint
|
- name: lint
|
||||||
uses: devblackops/github-action-psscriptanalyzer@master
|
uses: devblackops/github-action-psscriptanalyzer@master
|
||||||
with:
|
with:
|
||||||
@ -22,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install Pester
|
- name: Install Pester
|
||||||
run: |
|
run: |
|
||||||
|
83
Battery.txt
Normal file
83
Battery.txt
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
# Battery drains too fast.
|
||||||
|
When your battery on the laptop drains too fast, please perform these steps and report the results back to the Winutil community.
|
||||||
|
|
||||||
|
1. **Check Battery Health:**
|
||||||
|
- Open a Command Prompt as an administrator.
|
||||||
|
- Run the following command to generate a battery report:
|
||||||
|
```powershell
|
||||||
|
powercfg /batteryreport /output "C:\battery_report.html"
|
||||||
|
```
|
||||||
|
- Open the generated HTML report to review information about battery health and usage.
|
||||||
|
|
||||||
|
2. **Review Power Settings:**
|
||||||
|
- Go to "Settings" > "System" > "Power & sleep."
|
||||||
|
- Adjust power plan settings based on your preferences and usage patterns.
|
||||||
|
- Click on "Additional power settings" to access advanced power settings.
|
||||||
|
|
||||||
|
3. **Identify Power-Hungry Apps:**
|
||||||
|
- Right-click on the taskbar and select "Task Manager."
|
||||||
|
- Navigate to the "Processes" tab to identify applications with high CPU or memory usage.
|
||||||
|
- Consider closing unnecessary background applications.
|
||||||
|
|
||||||
|
4. **Update Drivers:**
|
||||||
|
- Visit your laptop manufacturer's website or use Windows Update to check for driver updates.
|
||||||
|
- Ensure graphics, chipset, and other essential drivers are up to date.
|
||||||
|
|
||||||
|
5. **Check for Windows Updates:**
|
||||||
|
- Go to "Settings" > "Update & Security" > "Windows Update."
|
||||||
|
- Check for and install any available updates for your operating system.
|
||||||
|
|
||||||
|
6. **Reduce Screen Brightness:**
|
||||||
|
- Adjust screen brightness based on your preferences and lighting conditions.
|
||||||
|
- Go to "Settings" > "System" > "Display" to adjust brightness.
|
||||||
|
|
||||||
|
7. **Battery Saver Mode:**
|
||||||
|
- Go to "Settings" > "System" > "Battery."
|
||||||
|
- Turn on "Battery saver" to limit background activity and conserve power.
|
||||||
|
|
||||||
|
8. **Check Power Usage in Settings:**
|
||||||
|
- Go to "Settings" > "System" > "Battery" > "Battery usage by app."
|
||||||
|
- Review the list of apps and their power usage.
|
||||||
|
|
||||||
|
9. **Check Background Apps:**
|
||||||
|
- Go to "Settings" > "Privacy" > "Background apps."
|
||||||
|
- Disable unnecessary apps running in the background.
|
||||||
|
|
||||||
|
10. **Use Powercfg for Analysis:**
|
||||||
|
- Open a Command Prompt as an administrator.
|
||||||
|
- Run the following command to analyze energy usage and generate a report:
|
||||||
|
```powershell
|
||||||
|
powercfg /energy /output "C:\energy_report.html"
|
||||||
|
```
|
||||||
|
- Open the generated HTML report to identify energy consumption patterns.
|
||||||
|
|
||||||
|
11. **Review Event Viewer:**
|
||||||
|
- Open Event Viewer by searching for it in the Start menu.
|
||||||
|
- Navigate to "Windows Logs" > "System."
|
||||||
|
- Look for events with the source "Power-Troubleshooter" to identify power-related events.
|
||||||
|
|
||||||
|
12. **Check Wake-up Sources:**
|
||||||
|
- Open a Command Prompt as an administrator.
|
||||||
|
- Use the command `powercfg /requests` to identify processes preventing sleep.
|
||||||
|
- Check Task Scheduler for tasks waking up the computer.
|
||||||
|
- Use the command `powercfg /waketimers` to view active wake timers.
|
||||||
|
|
||||||
|
13. **Resource Monitor:**
|
||||||
|
- Open Resource Monitor from the Start menu.
|
||||||
|
- Navigate to the "CPU" tab and identify processes with high CPU usage.
|
||||||
|
|
||||||
|
14. **Windows Settings - Activity History:**
|
||||||
|
- In "Settings," go to "Privacy" > "Activity history."
|
||||||
|
- Turn off "Let Windows collect my activities from this PC."
|
||||||
|
|
||||||
|
15. **Network Adapters:**
|
||||||
|
- Open Device Manager by searching for it in the Start menu.
|
||||||
|
- Locate your network adapter, right-click, and go to "Properties."
|
||||||
|
- Under the "Power Management" tab, uncheck the option that allows the device to wake the computer.
|
||||||
|
|
||||||
|
16. **Review Installed Applications:**
|
||||||
|
- Manually review installed applications by searching for "Add or remove programs" in the Start menu.
|
||||||
|
- Check settings/preferences of individual applications for power-related options.
|
||||||
|
- Uninstall unnecessary or problematic software.
|
||||||
|
|
||||||
|
By following these detailed instructions, you should be able to thoroughly diagnose and address battery drain issues on your Windows laptop. Adjust settings as needed to optimize power management and improve battery life.
|
@ -56,10 +56,12 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-
|
|||||||
|
|
||||||
# Replace every XML Special Character so it'll render correctly in final build
|
# Replace every XML Special Character so it'll render correctly in final build
|
||||||
# Only do so if json files has content to be displayed (for example the applications, tweaks, features json files)
|
# Only do so if json files has content to be displayed (for example the applications, tweaks, features json files)
|
||||||
# Make an Array List containing every name at first level of Json File
|
# Some Type Convertion using Casting and Cleaning Up of the convertion result using 'Replace' Method
|
||||||
$jsonAsObject = $json | convertfrom-json
|
$jsonAsObject = $json | convertfrom-json
|
||||||
$firstLevelJsonList = [System.Collections.ArrayList]::new()
|
$firstLevelJsonList = ([System.String]$jsonAsObject).split('=;') | ForEach-Object {
|
||||||
$jsonAsObject.PSObject.Properties.Name | ForEach-Object {$null = $firstLevelJsonList.Add($_)}
|
$_.Replace('=}','').Replace('@{','').Replace(' ','')
|
||||||
|
}
|
||||||
|
|
||||||
# Note:
|
# Note:
|
||||||
# Avoid using HTML Entity Codes, for example '”' (stands for "Right Double Quotation Mark"),
|
# Avoid using HTML Entity Codes, for example '”' (stands for "Right Double Quotation Mark"),
|
||||||
# Use **HTML decimal/hex codes instead**, as using HTML Entity Codes will result in XML parse Error when running the compiled script.
|
# Use **HTML decimal/hex codes instead**, as using HTML Entity Codes will result in XML parse Error when running the compiled script.
|
||||||
|
39
Error-in-Winutil-MicroWin-during-ISO-mounting.txt
Normal file
39
Error-in-Winutil-MicroWin-during-ISO-mounting.txt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Troubleshoot errors during Microwin usage
|
||||||
|
|
||||||
|
## Error `0x80041031`
|
||||||
|
|
||||||
|
This error code typically indicates an issue related to Windows Management Instrumentation (WMI). Here are a few steps you can try to resolve the issue:
|
||||||
|
|
||||||
|
1. **Reboot Your Computer:**
|
||||||
|
Sometimes, a simple reboot can resolve temporary issues. Restart your computer and try mounting the ISO again.
|
||||||
|
|
||||||
|
2. **Check for System Corruption:**
|
||||||
|
Run the System File Checker (SFC) utility to scan and repair system files that may be corrupted.
|
||||||
|
```powershell
|
||||||
|
sfc /scannow
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Update Your System:**
|
||||||
|
Make sure your operating system is up-to-date. Check for Windows updates and install any pending updates.
|
||||||
|
|
||||||
|
4. **Check WMI Service:**
|
||||||
|
Ensure that the Windows Management Instrumentation (WMI) service is running. You can do this through the Services application:
|
||||||
|
- Press `Win + R` to open the Run dialog.
|
||||||
|
- Type `services.msc` and press Enter.
|
||||||
|
- Locate "Windows Management Instrumentation" in the list.
|
||||||
|
- Make sure to set its status to "Running" and the startup type to "Automatic."
|
||||||
|
|
||||||
|
5. **Check for Security Software Interference:**
|
||||||
|
Security software can sometimes interfere with WMI operations. Temporarily disable your antivirus or security software and check if the issue persists.
|
||||||
|
|
||||||
|
6. **Event Viewer:**
|
||||||
|
Check the Event Viewer for more detailed error information. Look for entries related to the `80041031` error and check if there are any additional details that can help identify the cause.
|
||||||
|
|
||||||
|
- Press `Win + X` and select "Event Viewer."
|
||||||
|
- Navigate to "Windows Logs" -> "Application" or "System."
|
||||||
|
- Look for entries with the source related to WMI or the application use to mount the ISO.
|
||||||
|
|
||||||
|
7. **ISO File Integrity:**
|
||||||
|
Ensure that the ISO file you are trying to mount is uncorrupted. Try mounting a different ISO file to see if the issue persists.
|
||||||
|
|
||||||
|
If the problem persists after trying these steps, additional troubleshooting is required. Consider seeking assistance from Microsoft support or community forums for more specific guidance based on your system configuration and the software you use to mount the ISO.
|
18
README.md
18
README.md
@ -1,8 +1,8 @@
|
|||||||
# Chris Titus Tech's Windows Utility
|
# Chris Titus Tech's Windows Utility
|
||||||
|
|
||||||
[](https://github.com/ChrisTitusTech/winutil/releases/latest)
|
[](https://github.com/ChrisTitusTech/winutil/releases/latest)
|
||||||

|

|
||||||
[](https://discord.gg/RUbZUZyByQ)
|
[](https://discord.gg/RUbZUZyByQ)
|
||||||
|
|
||||||
This utility is a compilation of Windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky about any contributions to keep this project clean and efficient.
|
This utility is a compilation of Windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky about any contributions to keep this project clean and efficient.
|
||||||
|
|
||||||
@ -37,11 +37,13 @@ irm "https://christitus.com/windev" | iex
|
|||||||
|
|
||||||
If you have Issues, refer to [Known Issues](https://christitustech.github.io/winutil/KnownIssues/)
|
If you have Issues, refer to [Known Issues](https://christitustech.github.io/winutil/KnownIssues/)
|
||||||
|
|
||||||
## 🎓 Documentation
|
## 🎓 Documenation
|
||||||
|
|
||||||
### [WinUtil Official Documentation](https://christitustech.github.io/winutil/)
|
### [WinUtil Official Documentation](https://christitustech.github.io/winutil/)
|
||||||
|
|
||||||
### [YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
|
### YouTube Tutorial
|
||||||
|
|
||||||
|
[](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
|
||||||
|
|
||||||
### [ChrisTitus.com Article](https://christitus.com/windows-tool/)
|
### [ChrisTitus.com Article](https://christitus.com/windows-tool/)
|
||||||
|
|
||||||
@ -50,12 +52,6 @@ If you have Issues, refer to [Known Issues](https://christitustech.github.io/win
|
|||||||
- To morally and mentally support the project, make sure to leave a ⭐️!
|
- To morally and mentally support the project, make sure to leave a ⭐️!
|
||||||
- EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
|
- EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
|
||||||
|
|
||||||
## 💖 Sponsors
|
|
||||||
|
|
||||||
These are the sponsors that help keep this project alive with monthly contributions.
|
|
||||||
|
|
||||||
<!-- sponsors --><a href="https://github.com/GregoryNavasarkian"><img src="https://github.com/GregoryNavasarkian.png" width="60px" alt="Gregory Navasarkian" /></a><a href="https://github.com/ysaito8015"><img src="https://github.com/ysaito8015.png" width="60px" alt="Yusuke Saito" /></a><a href="https://github.com/TriHydera"><img src="https://github.com/TriHydera.png" width="60px" alt="TriHydera" /></a><a href="https://github.com/jozozovko"><img src="https://github.com/jozozovko.png" width="60px" alt="" /></a><a href="https://github.com/DelDongo"><img src="https://github.com/DelDongo.png" width="60px" alt="" /></a><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="" /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="Jason A. Diegmueller" /></a><a href="https://github.com/AlanTristar"><img src="https://github.com/AlanTristar.png" width="60px" alt="" /></a><a href="https://github.com/JennJones89"><img src="https://github.com/JennJones89.png" width="60px" alt="" /></a><a href="https://github.com/zepled112"><img src="https://github.com/zepled112.png" width="60px" alt="wyatt" /></a><a href="https://github.com/TDWillingham"><img src="https://github.com/TDWillingham.png" width="60px" alt="MetalliDan28" /></a><a href="https://github.com/frankolivares"><img src="https://github.com/frankolivares.png" width="60px" alt="" /></a><a href="https://github.com/Cube707"><img src="https://github.com/Cube707.png" width="60px" alt="Jan Wille" /></a><a href="https://github.com/Owen-3456"><img src="https://github.com/Owen-3456.png" width="60px" alt="Owen" /></a><a href="https://github.com/altugtekiner"><img src="https://github.com/altugtekiner.png" width="60px" alt="" /></a><a href="https://github.com/getsmor"><img src="https://github.com/getsmor.png" width="60px" alt="" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="" /></a><a href="https://github.com/jeffnesbit"><img src="https://github.com/jeffnesbit.png" width="60px" alt="" /></a><a href="https://github.com/mmomega"><img src="https://github.com/mmomega.png" width="60px" alt="" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="Stefan" /></a><a href="https://github.com/thaddl"><img src="https://github.com/thaddl.png" width="60px" alt="thaddl" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="Dave Jones" /></a><!-- sponsors -->
|
|
||||||
|
|
||||||
## 🏅 Thanks to all Contributors
|
## 🏅 Thanks to all Contributors
|
||||||
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
|
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
|
||||||
|
|
||||||
|
@ -2639,14 +2639,6 @@
|
|||||||
"link": "https://zoom.us/",
|
"link": "https://zoom.us/",
|
||||||
"winget": "Zoom.Zoom"
|
"winget": "Zoom.Zoom"
|
||||||
},
|
},
|
||||||
"zoomit": {
|
|
||||||
"category": "Utilities",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "ZoomIt",
|
|
||||||
"description": "A screen zoom, annotation, and recording tool for technical presentations and demos",
|
|
||||||
"link": "https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit",
|
|
||||||
"winget": "Microsoft.Sysinternals.ZoomIt"
|
|
||||||
},
|
|
||||||
"zotero": {
|
"zotero": {
|
||||||
"category": "Document",
|
"category": "Document",
|
||||||
"choco": "zotero",
|
"choco": "zotero",
|
||||||
@ -2887,14 +2879,6 @@
|
|||||||
"link": "https://github.com/xM4ddy/OFGB",
|
"link": "https://github.com/xM4ddy/OFGB",
|
||||||
"winget": "xM4ddy.OFGB"
|
"winget": "xM4ddy.OFGB"
|
||||||
},
|
},
|
||||||
"PaleMoon": {
|
|
||||||
"category": "Browsers",
|
|
||||||
"choco": "paleMoon",
|
|
||||||
"content": "PaleMoon",
|
|
||||||
"description":"Pale Moon is an Open Source, Goanna-based web browser available for Microsoft Windows and Linux (with other operating systems in development), focusing on efficiency and ease of use.",
|
|
||||||
"link": "https://www.palemoon.org/download.shtml",
|
|
||||||
"winget": "MoonchildProductions.PaleMoon"
|
|
||||||
},
|
|
||||||
"Shotcut": {
|
"Shotcut": {
|
||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
@ -2902,45 +2886,5 @@
|
|||||||
"description": "Shotcut is a free, open source, cross-platform video editor.",
|
"description": "Shotcut is a free, open source, cross-platform video editor.",
|
||||||
"link": "https://shotcut.org/",
|
"link": "https://shotcut.org/",
|
||||||
"winget": "Meltytech.Shotcut"
|
"winget": "Meltytech.Shotcut"
|
||||||
},
|
|
||||||
"LenovoLegionToolkit": {
|
|
||||||
"category": "Utilities",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "Lenovo Legion Toolkit",
|
|
||||||
"description": "Lenovo Legion Toolkit (LLT) is a open-source utility created for Lenovo Legion (and similar) series laptops, that allows changing a couple of features that are only available in Lenovo Vantage or Legion Zone. It runs no background services, uses less memory, uses virtually no CPU, and contains no telemetry. Just like Lenovo Vantage, this application is Windows only.",
|
|
||||||
"link": "https://github.com/BartoszCichecki/LenovoLegionToolkit",
|
|
||||||
"winget": "BartoszCichecki.LenovoLegionToolkit"
|
|
||||||
},
|
|
||||||
"PulsarEdit": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "pulsar",
|
|
||||||
"content": "Pulsar",
|
|
||||||
"description": "A Community-led Hyper-Hackable Text Editor",
|
|
||||||
"link": "https://pulsar-edit.dev/",
|
|
||||||
"winget": "Pulsar-Edit.Pulsar"
|
|
||||||
},
|
|
||||||
"Aegisub": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "aegisub",
|
|
||||||
"content": "Aegisub",
|
|
||||||
"description": "Aegisub is a free, cross-platform open source tool for creating and modifying subtitles. Aegisub makes it quick and easy to time subtitles to audio, and features many powerful tools for styling them, including a built-in real-time video preview.",
|
|
||||||
"link": "https://github.com/Aegisub/Aegisub",
|
|
||||||
"winget": "Aegisub.Aegisub"
|
|
||||||
},
|
|
||||||
"SubtitleEdit": {
|
|
||||||
"category": "Multimedia Tools",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "Subtitle Edit",
|
|
||||||
"description": "Subtitle Edit is a free and open source editor for video subtitles.",
|
|
||||||
"link": "https://github.com/SubtitleEdit/subtitleedit",
|
|
||||||
"winget": "Nikse.SubtitleEdit"
|
|
||||||
},
|
|
||||||
"Fork": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "git-fork",
|
|
||||||
"content": "Fork",
|
|
||||||
"description": "Fork - a fast and friendly git client.",
|
|
||||||
"link": "https://git-fork.com/",
|
|
||||||
"winget": "Fork.Fork"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2294,35 +2294,19 @@
|
|||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a006_",
|
"Order": "a006_",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
|
"
|
||||||
$name = \"TaskbarEndTask\"
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
|
||||||
$value = 1
|
"
|
||||||
|
|
||||||
# Ensure the registry key exists
|
|
||||||
if (-not (Test-Path $path)) {
|
|
||||||
New-Item -Path $path -Force | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the property, creating it if it doesn't exist
|
|
||||||
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
|
|
||||||
],
|
],
|
||||||
"UndoScript": [
|
"UndoScript": [
|
||||||
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
|
"
|
||||||
$name = \"TaskbarEndTask\"
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"0\"
|
||||||
$value = 0
|
"
|
||||||
|
|
||||||
# Ensure the registry key exists
|
|
||||||
if (-not (Test-Path $path)) {
|
|
||||||
New-Item -Path $path -Force | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the property, creating it if it doesn't exist
|
|
||||||
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"WPFTweaksPowershell7": {
|
"WPFTweaksPowershell7": {
|
||||||
"Content": "Change Windows Terminal default: PowerShell 5 -> PowerShell 7",
|
"Content": "Replace Default Powershell 5 to Powershell 7",
|
||||||
"Description": "This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary",
|
"Description": "This will edit the config file of the Windows Terminal Replacing the Powershell 5 to Powershell 7 and install Powershell 7 if necessary",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a009_",
|
"Order": "a009_",
|
||||||
@ -3083,20 +3067,12 @@
|
|||||||
"Order": "a108_",
|
"Order": "a108_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleHiddenFiles": {
|
|
||||||
"Content": "Show Hidden Files",
|
|
||||||
"Description": "If Enabled then Hidden Files will be shown.",
|
|
||||||
"category": "Customize Preferences",
|
|
||||||
"panel": "2",
|
|
||||||
"Order": "a200_",
|
|
||||||
"Type": "Toggle"
|
|
||||||
},
|
|
||||||
"WPFToggleShowExt": {
|
"WPFToggleShowExt": {
|
||||||
"Content": "Show File Extensions",
|
"Content": "Show File Extensions",
|
||||||
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a201_",
|
"Order": "a200_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskbarSearch": {
|
"WPFToggleTaskbarSearch": {
|
||||||
@ -3104,7 +3080,7 @@
|
|||||||
"Description": "If Enabled Search Button will be on the taskbar.",
|
"Description": "If Enabled Search Button will be on the taskbar.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a202_",
|
"Order": "a201_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskView": {
|
"WPFToggleTaskView": {
|
||||||
@ -3112,7 +3088,7 @@
|
|||||||
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a203_",
|
"Order": "a202_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskbarWidgets": {
|
"WPFToggleTaskbarWidgets": {
|
||||||
@ -3120,15 +3096,7 @@
|
|||||||
"Description": "If Enabled then Widgets Button in Taskbar will be shown.",
|
"Description": "If Enabled then Widgets Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a204_",
|
"Order": "a203_",
|
||||||
"Type": "Toggle"
|
|
||||||
},
|
|
||||||
"WPFToggleTaskbarAlignment": {
|
|
||||||
"Content": "Switch Taskbar Items between Center & Left",
|
|
||||||
"Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
|
||||||
"category": "Customize Preferences",
|
|
||||||
"panel": "2",
|
|
||||||
"Order": "a204_",
|
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFOOSUbutton": {
|
"WPFOOSUbutton": {
|
||||||
|
@ -51,127 +51,3 @@ Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
|
|||||||
- (Windows 11) Quick Settings no longer works: Launch the Script and click 'Enable Action Center'
|
- (Windows 11) Quick Settings no longer works: Launch the Script and click 'Enable Action Center'
|
||||||
|
|
||||||
- Explorer no longer launches: Go to Control Panel, File Explorer Options, Change the 'Open File Explorer to' option to 'This PC'.
|
- Explorer no longer launches: Go to Control Panel, File Explorer Options, Change the 'Open File Explorer to' option to 'This PC'.
|
||||||
|
|
||||||
### Battery drains too fast.
|
|
||||||
When your battery on the laptop drains too fast, please perform these steps and report the results back to the Winutil community.
|
|
||||||
|
|
||||||
1. **Check Battery Health:**
|
|
||||||
- Open a Command Prompt as an administrator.
|
|
||||||
- Run the following command to generate a battery report:
|
|
||||||
```powershell
|
|
||||||
powercfg /batteryreport /output "C:\battery_report.html"
|
|
||||||
```
|
|
||||||
- Open the generated HTML report to review information about battery health and usage.
|
|
||||||
|
|
||||||
2. **Review Power Settings:**
|
|
||||||
- Go to "Settings" > "System" > "Power & sleep."
|
|
||||||
- Adjust power plan settings based on your preferences and usage patterns.
|
|
||||||
- Click on "Additional power settings" to access advanced power settings.
|
|
||||||
|
|
||||||
3. **Identify Power-Hungry Apps:**
|
|
||||||
- Right-click on the taskbar and select "Task Manager."
|
|
||||||
- Navigate to the "Processes" tab to identify applications with high CPU or memory usage.
|
|
||||||
- Consider closing unnecessary background applications.
|
|
||||||
|
|
||||||
4. **Update Drivers:**
|
|
||||||
- Visit your laptop manufacturer's website or use Windows Update to check for driver updates.
|
|
||||||
- Ensure graphics, chipset, and other essential drivers are up to date.
|
|
||||||
|
|
||||||
5. **Check for Windows Updates:**
|
|
||||||
- Go to "Settings" > "Update & Security" > "Windows Update."
|
|
||||||
- Check for and install any available updates for your operating system.
|
|
||||||
|
|
||||||
6. **Reduce Screen Brightness:**
|
|
||||||
- Adjust screen brightness based on your preferences and lighting conditions.
|
|
||||||
- Go to "Settings" > "System" > "Display" to adjust brightness.
|
|
||||||
|
|
||||||
7. **Battery Saver Mode:**
|
|
||||||
- Go to "Settings" > "System" > "Battery."
|
|
||||||
- Turn on "Battery saver" to limit background activity and conserve power.
|
|
||||||
|
|
||||||
8. **Check Power Usage in Settings:**
|
|
||||||
- Go to "Settings" > "System" > "Battery" > "Battery usage by app."
|
|
||||||
- Review the list of apps and their power usage.
|
|
||||||
|
|
||||||
9. **Check Background Apps:**
|
|
||||||
- Go to "Settings" > "Privacy" > "Background apps."
|
|
||||||
- Disable unnecessary apps running in the background.
|
|
||||||
|
|
||||||
10. **Use Powercfg for Analysis:**
|
|
||||||
- Open a Command Prompt as an administrator.
|
|
||||||
- Run the following command to analyze energy usage and generate a report:
|
|
||||||
```powershell
|
|
||||||
powercfg /energy /output "C:\energy_report.html"
|
|
||||||
```
|
|
||||||
- Open the generated HTML report to identify energy consumption patterns.
|
|
||||||
|
|
||||||
11. **Review Event Viewer:**
|
|
||||||
- Open Event Viewer by searching for it in the Start menu.
|
|
||||||
- Navigate to "Windows Logs" > "System."
|
|
||||||
- Look for events with the source "Power-Troubleshooter" to identify power-related events.
|
|
||||||
|
|
||||||
12. **Check Wake-up Sources:**
|
|
||||||
- Open a Command Prompt as an administrator.
|
|
||||||
- Use the command `powercfg /requests` to identify processes preventing sleep.
|
|
||||||
- Check Task Scheduler for tasks waking up the computer.
|
|
||||||
- Use the command `powercfg /waketimers` to view active wake timers.
|
|
||||||
|
|
||||||
13. **Resource Monitor:**
|
|
||||||
- Open Resource Monitor from the Start menu.
|
|
||||||
- Navigate to the "CPU" tab and identify processes with high CPU usage.
|
|
||||||
|
|
||||||
14. **Windows Settings - Activity History:**
|
|
||||||
- In "Settings," go to "Privacy" > "Activity history."
|
|
||||||
- Turn off "Let Windows collect my activities from this PC."
|
|
||||||
|
|
||||||
15. **Network Adapters:**
|
|
||||||
- Open Device Manager by searching for it in the Start menu.
|
|
||||||
- Locate your network adapter, right-click, and go to "Properties."
|
|
||||||
- Under the "Power Management" tab, uncheck the option that allows the device to wake the computer.
|
|
||||||
|
|
||||||
16. **Review Installed Applications:**
|
|
||||||
- Manually review installed applications by searching for "Add or remove programs" in the Start menu.
|
|
||||||
- Check settings/preferences of individual applications for power-related options.
|
|
||||||
- Uninstall unnecessary or problematic software.
|
|
||||||
|
|
||||||
By following these detailed instructions, you should be able to thoroughly diagnose and address battery drain issues on your Windows laptop. Adjust settings as needed to optimize power management and improve battery life.
|
|
||||||
|
|
||||||
### Troubleshoot errors during Microwin usage
|
|
||||||
|
|
||||||
#### Error `0x80041031`
|
|
||||||
|
|
||||||
This error code typically indicates an issue related to Windows Management Instrumentation (WMI). Here are a few steps you can try to resolve the issue:
|
|
||||||
|
|
||||||
1. **Reboot Your Computer:**
|
|
||||||
Sometimes, a simple reboot can resolve temporary issues. Restart your computer and try mounting the ISO again.
|
|
||||||
|
|
||||||
2. **Check for System Corruption:**
|
|
||||||
Run the System File Checker (SFC) utility to scan and repair system files that may be corrupted.
|
|
||||||
```powershell
|
|
||||||
sfc /scannow
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Update Your System:**
|
|
||||||
Make sure your operating system is up-to-date. Check for Windows updates and install any pending updates.
|
|
||||||
|
|
||||||
4. **Check WMI Service:**
|
|
||||||
Ensure that the Windows Management Instrumentation (WMI) service is running. You can do this through the Services application:
|
|
||||||
- Press `Win + R` to open the Run dialog.
|
|
||||||
- Type `services.msc` and press Enter.
|
|
||||||
- Locate "Windows Management Instrumentation" in the list.
|
|
||||||
- Make sure to set its status to "Running" and the startup type to "Automatic."
|
|
||||||
|
|
||||||
5. **Check for Security Software Interference:**
|
|
||||||
Security software can sometimes interfere with WMI operations. Temporarily disable your antivirus or security software and check if the issue persists.
|
|
||||||
|
|
||||||
6. **Event Viewer:**
|
|
||||||
Check the Event Viewer for more detailed error information. Look for entries related to the `80041031` error and check if there are any additional details that can help identify the cause.
|
|
||||||
|
|
||||||
- Press `Win + X` and select "Event Viewer."
|
|
||||||
- Navigate to "Windows Logs" -> "Application" or "System."
|
|
||||||
- Look for entries with the source related to WMI or the application use to mount the ISO.
|
|
||||||
|
|
||||||
7. **ISO File Integrity:**
|
|
||||||
Ensure that the ISO file you are trying to mount is uncorrupted. Try mounting a different ISO file to see if the issue persists.
|
|
||||||
|
|
||||||
If the problem persists after trying these steps, additional troubleshooting is required. Consider seeking assistance from Microsoft support or community forums for more specific guidance based on your system configuration and the software you use to mount the ISO.
|
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
BIN
docs/assets/check.png
Normal file
BIN
docs/assets/check.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
@ -27,8 +27,8 @@
|
|||||||
* Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your Repository-list.
|
* Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your Repository-list.
|
||||||

|

|
||||||
|
|
||||||
### Clone the Fork
|
### Clone the Fork
|
||||||
* While you can make your changes directly through the Web, we recommend cloning the repo to your device to test your fork easily.
|
* While you can make your changes directly through the Web, we recommend cloning the repo to your device to test your fork easily.
|
||||||
* Using the application GitHub Desktop (available in WinUtil) you can easily manage your repos locally. You can do it using other tools like git-cli (available in WinUtil), we recommend GitHub Desktop for ease of use.
|
* Using the application GitHub Desktop (available in WinUtil) you can easily manage your repos locally. You can do it using other tools like git-cli (available in WinUtil), we recommend GitHub Desktop for ease of use.
|
||||||
* Install GitHub Desktop if not already installed
|
* Install GitHub Desktop if not already installed
|
||||||
* Log in using the same GitHub account u used to fork WinUtil
|
* Log in using the same GitHub account u used to fork WinUtil
|
||||||
|
BIN
docs/img/ProgramInstall.png
Normal file
BIN
docs/img/ProgramInstall.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 138 KiB |
BIN
docs/img/ProgramInstallButton.png
Normal file
BIN
docs/img/ProgramInstallButton.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 137 KiB |
BIN
docs/img/favicon.png
Normal file
BIN
docs/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
#### Tweaks Addition
|
#### Tweaks Addition
|
||||||
* To enable tweaks on your system select Tweaks at the top next to Install.
|
* To enable tweaks on your system select Tweaks at the top next to Install.
|
||||||
* Then you can select what tweaks you want adding to your system. We do have some presets you can select from at the top you can see this in the picture below.
|
* Then you can select what tweaks you want adding to your system. We do have some presets you can select from at the top you can see this in the picture below.
|
||||||

|

|
||||||
* After you have chosen your tweaks click the Run Tweaks button at the bottom of the screen.
|
* After you have chosen your tweaks click the Run Tweaks button at the bottom of the screen.
|
||||||
|
|
||||||
@ -114,7 +114,7 @@
|
|||||||
* **Keep Provisioned Packages**: leaving this option unticked (default) will try to remove every operating system package
|
* **Keep Provisioned Packages**: leaving this option unticked (default) will try to remove every operating system package
|
||||||
|
|
||||||
Some packages may remain after processing. This can happen if the packages in question were permanent ones or had been superseded by newer versions
|
Some packages may remain after processing. This can happen if the packages in question were permanent ones or had been superseded by newer versions
|
||||||
|
|
||||||
* **Keep Appx Packages**: leaving this option unticked (default) will try to remove every Microsoft Store app from the Windows image
|
* **Keep Appx Packages**: leaving this option unticked (default) will try to remove every Microsoft Store app from the Windows image
|
||||||
|
|
||||||
This option will exclude some applications that are essential in the case that you want or need to add a Store app later on
|
This option will exclude some applications that are essential in the case that you want or need to add a Store app later on
|
||||||
@ -122,7 +122,7 @@
|
|||||||
* **Keep Defender**: leaving this option unticked will try to remove every part of Windows Defender, including the Windows Security app
|
* **Keep Defender**: leaving this option unticked will try to remove every part of Windows Defender, including the Windows Security app
|
||||||
|
|
||||||
Leaving this option unticked is **NOT recommended** unless you plan to use a third-party antivirus solution on your MicroWin installation. On that regard, don't install AVs with bad reputation or rogueware
|
Leaving this option unticked is **NOT recommended** unless you plan to use a third-party antivirus solution on your MicroWin installation. On that regard, don't install AVs with bad reputation or rogueware
|
||||||
|
|
||||||
* **Keep Edge**: leaving this option unticked will try to remove every part of the Microsoft Edge browser using the best methods available
|
* **Keep Edge**: leaving this option unticked will try to remove every part of the Microsoft Edge browser using the best methods available
|
||||||
|
|
||||||
Leaving this option unticked is not recommended because it might break some applications that might depend on the `Edge WebView2` runtime. However, if that happens, you can easily [reinstall it](https://developer.microsoft.com/en-us/microsoft-edge/webview2)
|
Leaving this option unticked is not recommended because it might break some applications that might depend on the `Edge WebView2` runtime. However, if that happens, you can easily [reinstall it](https://developer.microsoft.com/en-us/microsoft-edge/webview2)
|
||||||
@ -141,7 +141,7 @@
|
|||||||
* **Copy to Ventoy** will copy the target ISO file to any USB drive with [Ventoy](https://ventoy.net/en/index.html) installed
|
* **Copy to Ventoy** will copy the target ISO file to any USB drive with [Ventoy](https://ventoy.net/en/index.html) installed
|
||||||
|
|
||||||
Ventoy is a solution that lets you boot to any ISO file stored in a drive. Think of it as having multiple bootable USBs in one. Do note though that your drive needs to have enough free space for the target ISO file
|
Ventoy is a solution that lets you boot to any ISO file stored in a drive. Think of it as having multiple bootable USBs in one. Do note though that your drive needs to have enough free space for the target ISO file
|
||||||
|
|
||||||
|
|
||||||
## Automation
|
## Automation
|
||||||
|
|
||||||
|
@ -125,33 +125,13 @@ Function Get-WinUtilToggleStatus {
|
|||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleHiddenFiles") {
|
|
||||||
$HiddenFiles = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').Hidden
|
|
||||||
if($HiddenFiles -eq 0){
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return $true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleTaskbarWidgets") {
|
if ($ToggleSwitch -eq "WPFToggleTaskbarWidgets") {
|
||||||
$TaskbarWidgets = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskBarDa
|
$TaskbarWidgets = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskBarDa
|
||||||
if($TaskbarWidgets -eq 0) {
|
if($TaskbarWidgets -eq 0) {
|
||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleTaskbarAlignment") {
|
|
||||||
$TaskbarAlignment = (Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskbarAl
|
|
||||||
if($TaskbarAlignment -eq 0) {
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return $true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,12 +54,18 @@ function Install-WinUtilProgramChoco {
|
|||||||
}
|
}
|
||||||
if(($chocoInstallStatus -eq 0) -AND ($tryUpgrade -eq $false)){
|
if(($chocoInstallStatus -eq 0) -AND ($tryUpgrade -eq $false)){
|
||||||
Write-Host "$($Program.choco) installed successfully using Chocolatey."
|
Write-Host "$($Program.choco) installed successfully using Chocolatey."
|
||||||
|
$X++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value ($x/$count) })
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Failed to install $($Program.choco) using Chocolatey, Chocolatey output:`n`n$(Get-Content -Path $installOutputFilePath)."
|
Write-Host "Failed to install $($Program.choco) using Chocolatey, Chocolatey output:`n`n$(Get-Content -Path $installOutputFilePath)."
|
||||||
|
$X++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -value ($x/$count) })
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
Write-Host "Failed to install $($Program.choco) due to an error: $_"
|
Write-Host "Failed to install $($Program.choco) due to an error: $_"
|
||||||
|
$X++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -value ($x/$count) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,21 +77,26 @@ function Install-WinUtilProgramChoco {
|
|||||||
$chocoUninstallStatus = $(Start-Process -FilePath "choco" -ArgumentList "uninstall $($Program.choco) -y" -Wait -PassThru).ExitCode
|
$chocoUninstallStatus = $(Start-Process -FilePath "choco" -ArgumentList "uninstall $($Program.choco) -y" -Wait -PassThru).ExitCode
|
||||||
if($chocoUninstallStatus -eq 0){
|
if($chocoUninstallStatus -eq 0){
|
||||||
Write-Host "$($Program.choco) uninstalled successfully using Chocolatey."
|
Write-Host "$($Program.choco) uninstalled successfully using Chocolatey."
|
||||||
|
$x++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value ($x/$count) })
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Failed to uninstall $($Program.choco) using Chocolatey, Chocolatey output:`n`n$(Get-Content -Path $uninstallOutputFilePath)."
|
Write-Host "Failed to uninstall $($Program.choco) using Chocolatey, Chocolatey output:`n`n$(Get-Content -Path $uninstallOutputFilePath)."
|
||||||
|
$x++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -value ($x/$count) })
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
Write-Host "Failed to uninstall $($Program.choco) due to an error: $_"
|
Write-Host "Failed to uninstall $($Program.choco) due to an error: $_"
|
||||||
|
$x++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -value ($x/$count) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$x++
|
|
||||||
}
|
}
|
||||||
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
||||||
|
|
||||||
# Cleanup leftovers files
|
# Cleanup leftovers files
|
||||||
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $installOutputFilePath }
|
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $installOutputFilePath }
|
||||||
if(Test-Path -Path $uninstallOutputFilePath){ Remove-Item -Path $uninstallOutputFilePath }
|
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $uninstallOutputFilePath }
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,17 +22,18 @@ Function Install-WinUtilProgramWinget {
|
|||||||
[Parameter(Position=1)]
|
[Parameter(Position=1)]
|
||||||
[String]$manage = "Installing"
|
[String]$manage = "Installing"
|
||||||
)
|
)
|
||||||
$x = 0
|
|
||||||
$count = $ProgramsToInstall.Count
|
$count = $ProgramsToInstall.Count
|
||||||
|
|
||||||
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "-- Configuring winget packages ---"
|
Write-Host "-- Configuring winget packages ---"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Foreach ($Program in $ProgramsToInstall){
|
for ($i = 0; $i -le $ProgramsToInstall.Count; $i++) {
|
||||||
|
$Program = $ProgramsToInstall[$i]
|
||||||
$failedPackages = @()
|
$failedPackages = @()
|
||||||
Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($x + 1) of $count" -PercentComplete $($x/$count*100)
|
Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($i + 1) of $count" -PercentComplete $(($i/$count) * 100)
|
||||||
if($manage -eq "Installing"){
|
if($manage -eq "Installing") {
|
||||||
# Install package via ID, if it fails try again with different scope and then with an unelevated prompt.
|
# Install package via ID, if it fails try again with different scope and then with an unelevated prompt.
|
||||||
# Since Install-WinGetPackage might not be directly available, we use winget install command as a workaround.
|
# Since Install-WinGetPackage might not be directly available, we use winget install command as a workaround.
|
||||||
# Winget, not all installers honor any of the following: System-wide, User Installs, or Unelevated Prompt OR Silent Install Mode.
|
# Winget, not all installers honor any of the following: System-wide, User Installs, or Unelevated Prompt OR Silent Install Mode.
|
||||||
@ -40,22 +41,26 @@ Function Install-WinUtilProgramWinget {
|
|||||||
Write-Host "Starting install of $($Program.winget) with winget."
|
Write-Host "Starting install of $($Program.winget) with winget."
|
||||||
try {
|
try {
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully."
|
Write-Host "$($Program.winget) installed successfully."
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Write-Host "Attempt with User scope"
|
Write-Host "Attempt with User scope"
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --scope user --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --scope user --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully with User scope."
|
Write-Host "$($Program.winget) installed successfully with User scope."
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Write-Host "Attempt with User prompt"
|
Write-Host "Attempt with User prompt"
|
||||||
@ -68,24 +73,27 @@ Function Install-WinUtilProgramWinget {
|
|||||||
} else {
|
} else {
|
||||||
Write-Host "Skipping installation with specific user credentials."
|
Write-Host "Skipping installation with specific user credentials."
|
||||||
}
|
}
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully with User prompt."
|
Write-Host "$($Program.winget) installed successfully with User prompt."
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
Write-Host "Failed to install $($Program.winget). With winget"
|
Write-Host "Failed to install $($Program.winget). With winget"
|
||||||
$failedPackages += $Program
|
$failedPackages += $Program
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" -value ($i/$count) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($manage -eq "Uninstalling"){
|
elseif($manage -eq "Uninstalling") {
|
||||||
# Uninstall package via ID using winget directly.
|
# Uninstall package via ID using winget directly.
|
||||||
try {
|
try {
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "uninstall --id $($Program.winget) --silent" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "uninstall --id $($Program.winget) --silent" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -ne 0){
|
if($status -ne 0) {
|
||||||
Write-Host "Failed to uninstall $($Program.winget)."
|
Write-Host "Failed to uninstall $($Program.winget)."
|
||||||
} else {
|
} else {
|
||||||
Write-Host "$($Program.winget) uninstalled successfully."
|
Write-Host "$($Program.winget) uninstalled successfully."
|
||||||
@ -94,9 +102,13 @@ Function Install-WinUtilProgramWinget {
|
|||||||
} catch {
|
} catch {
|
||||||
Write-Host "Failed to uninstall $($Program.winget) due to an error: $_"
|
Write-Host "Failed to uninstall $($Program.winget) due to an error: $_"
|
||||||
$failedPackages += $Program
|
$failedPackages += $Program
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
}
|
}
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$count) })
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw "[Install-WinUtilProgramWinget] Invalid Value for Parameter 'manage', Provided Value is: $manage"
|
||||||
}
|
}
|
||||||
$X++
|
|
||||||
}
|
}
|
||||||
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
||||||
return $failedPackages;
|
return $failedPackages;
|
||||||
|
@ -19,6 +19,7 @@ function Install-WinUtilWinget {
|
|||||||
Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red
|
Write-Host "`nWinget is not Installed. Continuing with install.`r" -ForegroundColor Red
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Gets the computer's information
|
# Gets the computer's information
|
||||||
if ($null -eq $sync.ComputerInfo){
|
if ($null -eq $sync.ComputerInfo){
|
||||||
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
|
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
|
||||||
@ -63,4 +64,5 @@ function Install-WinUtilWinget {
|
|||||||
throw [WingetFailedInstall]::new('Failed to install!')
|
throw [WingetFailedInstall]::new('Failed to install!')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,10 @@ function Invoke-WinUtilFeatureInstall {
|
|||||||
$CheckBox
|
$CheckBox
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 1/$using:CheckBox.Count })
|
||||||
|
|
||||||
|
x = 0
|
||||||
|
|
||||||
$CheckBox | ForEach-Object {
|
$CheckBox | ForEach-Object {
|
||||||
if($sync.configs.feature.$psitem.feature){
|
if($sync.configs.feature.$psitem.feature){
|
||||||
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
|
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
|
||||||
@ -20,9 +24,11 @@ function Invoke-WinUtilFeatureInstall {
|
|||||||
Catch{
|
Catch{
|
||||||
if ($psitem.Exception.Message -like "*requires elevation*"){
|
if ($psitem.Exception.Message -like "*requires elevation*"){
|
||||||
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
}
|
}
|
||||||
|
|
||||||
else{
|
else{
|
||||||
|
|
||||||
Write-Warning "Unable to Install $feature due to unhandled exception"
|
Write-Warning "Unable to Install $feature due to unhandled exception"
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
Write-Warning $psitem.Exception.StackTrace
|
||||||
}
|
}
|
||||||
@ -40,14 +46,18 @@ function Invoke-WinUtilFeatureInstall {
|
|||||||
Catch{
|
Catch{
|
||||||
if ($psitem.Exception.Message -like "*requires elevation*"){
|
if ($psitem.Exception.Message -like "*requires elevation*"){
|
||||||
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
}
|
}
|
||||||
|
|
||||||
else{
|
else{
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
Write-Warning "Unable to Install $feature due to unhandled exception"
|
Write-Warning "Unable to Install $feature due to unhandled exception"
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
Write-Warning $psitem.Exception.StackTrace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$X++
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($x/$CheckBox.Count) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
function Invoke-WinUtilHiddenFiles {
|
|
||||||
<#
|
|
||||||
|
|
||||||
.SYNOPSIS
|
|
||||||
Enable/Disable Hidden Files
|
|
||||||
|
|
||||||
.PARAMETER Enabled
|
|
||||||
Indicates whether to enable or disable Hidden Files
|
|
||||||
|
|
||||||
#>
|
|
||||||
Param($Enabled)
|
|
||||||
Try{
|
|
||||||
if ($Enabled -eq $false){
|
|
||||||
Write-Host "Enabling Hidden Files"
|
|
||||||
$value = 1
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Host "Disabling Hidden Files"
|
|
||||||
$value = 0
|
|
||||||
}
|
|
||||||
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
|
||||||
Set-ItemProperty -Path $Path -Name Hidden -Value $value
|
|
||||||
}
|
|
||||||
Catch [System.Security.SecurityException] {
|
|
||||||
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
||||||
}
|
|
||||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
||||||
Write-Warning $psitem.Exception.ErrorRecord
|
|
||||||
}
|
|
||||||
Catch{
|
|
||||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
Function Invoke-WinUtilSponsors {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Lists Sponsors from ChrisTitusTech
|
|
||||||
.DESCRIPTION
|
|
||||||
Lists Sponsors from ChrisTitusTech
|
|
||||||
.EXAMPLE
|
|
||||||
Invoke-WinUtilSponsors
|
|
||||||
.NOTES
|
|
||||||
This function is used to list sponsors from ChrisTitusTech
|
|
||||||
#>
|
|
||||||
try {
|
|
||||||
# Define the URL and headers
|
|
||||||
$url = "https://github.com/sponsors/ChrisTitusTech"
|
|
||||||
$headers = @{
|
|
||||||
"User-Agent" = "Chrome/58.0.3029.110"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fetch the webpage content
|
|
||||||
try {
|
|
||||||
$html = Invoke-RestMethod -Uri $url -Headers $headers
|
|
||||||
} catch {
|
|
||||||
Write-Output $_.Exception.Message
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use regex to extract the content between "Current sponsors" and "Past sponsors"
|
|
||||||
$currentSponsorsPattern = '(?s)(?<=Current sponsors).*?(?=Past sponsors)'
|
|
||||||
$currentSponsorsHtml = [regex]::Match($html, $currentSponsorsPattern).Value
|
|
||||||
|
|
||||||
# Use regex to extract the sponsor usernames from the alt attributes in the "Current Sponsors" section
|
|
||||||
$sponsorPattern = '(?<=alt="@)[^"]+'
|
|
||||||
$sponsors = [regex]::Matches($currentSponsorsHtml, $sponsorPattern) | ForEach-Object { $_.Value }
|
|
||||||
|
|
||||||
# Exclude "ChrisTitusTech" from the sponsors
|
|
||||||
$sponsors = $sponsors | Where-Object { $_ -ne "ChrisTitusTech" }
|
|
||||||
|
|
||||||
# Return the sponsors
|
|
||||||
return $sponsors
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Write-Error "An error occurred while fetching or processing the sponsors: $_"
|
|
||||||
return $null
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
function Invoke-WinUtilTaskbarAlignment {
|
|
||||||
<#
|
|
||||||
|
|
||||||
.SYNOPSIS
|
|
||||||
Switches between Center & Left Taskbar Alignment
|
|
||||||
|
|
||||||
.PARAMETER Enabled
|
|
||||||
Indicates whether to make Taskbar Alignment Center or Left
|
|
||||||
|
|
||||||
#>
|
|
||||||
Param($Enabled)
|
|
||||||
Try{
|
|
||||||
if ($Enabled -eq $false){
|
|
||||||
Write-Host "Making Taskbar Alignment to the Center"
|
|
||||||
$value = 1
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Host "Making Taskbar Alignment to the Left"
|
|
||||||
$value = 0
|
|
||||||
}
|
|
||||||
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
|
||||||
Set-ItemProperty -Path $Path -Name "TaskbarAl" -Value $value
|
|
||||||
}
|
|
||||||
Catch [System.Security.SecurityException] {
|
|
||||||
Write-Warning "Unable to set $Path\$Name to $value due to a Security Exception"
|
|
||||||
}
|
|
||||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
||||||
Write-Warning $psitem.Exception.ErrorRecord
|
|
||||||
}
|
|
||||||
Catch{
|
|
||||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
|
||||||
}
|
|
||||||
}
|
|
73
functions/private/Set-WinUtilTaskbarItem.ps1
Normal file
73
functions/private/Set-WinUtilTaskbarItem.ps1
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<#
|
||||||
|
|
||||||
|
.SYNOPSIS
|
||||||
|
Modifies the Taskbaritem of the WPF Form
|
||||||
|
|
||||||
|
.PARAMETER state & value
|
||||||
|
Value can be between 0 and 1, 0 being no progress done yet and 1 being fully completed
|
||||||
|
State can be 'None' > No progress, 'Indeterminate' > Without value, 'Normal' > when using value, 'Error' > Red (when using value), 'Paused' > Yellow (when using value)
|
||||||
|
|
||||||
|
.PARAMETER overlay
|
||||||
|
Overlay icon to display on the taskbar item
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Set-WinUtilTaskbaritem -value 0.5 -state "Normal"
|
||||||
|
Set-WinUtilTaskbaritem -state "Error"
|
||||||
|
Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||||
|
Set-WinUtilTaskbaritem -description "This is a description"
|
||||||
|
Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
|
||||||
|
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
function Set-WinUtilTaskbaritem {
|
||||||
|
param (
|
||||||
|
[double]$value,
|
||||||
|
$state,
|
||||||
|
$overlay,
|
||||||
|
$description
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($value) {
|
||||||
|
$sync["Form"].taskbarItemInfo.ProgressValue = $value
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($state) {
|
||||||
|
switch ($state) {
|
||||||
|
'Indeterminate' { $sync["Form"].taskbarItemInfo.ProgressState = "Indeterminate" }
|
||||||
|
'Normal' { $sync["Form"].taskbarItemInfo.ProgressState = "Normal" }
|
||||||
|
'Error' { $sync["Form"].taskbarItemInfo.ProgressState = "Error" }
|
||||||
|
'Paused' { $sync["Form"].taskbarItemInfo.ProgressState = "Paused" }
|
||||||
|
default { $sync["Form"].taskbarItemInfo.ProgressState = "None" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($overlay -and (Test-Path $overlay)) {
|
||||||
|
# Read the image file as a byte array
|
||||||
|
$imageBytes = [System.IO.File]::ReadAllBytes($overlay)
|
||||||
|
|
||||||
|
# Convert the byte array to a Base64 string
|
||||||
|
[System.Convert]::ToBase64String($imageBytes)
|
||||||
|
|
||||||
|
# Load the image file as a bitmap
|
||||||
|
$bitmap = [System.Drawing.Bitmap]::new($overlay)
|
||||||
|
|
||||||
|
# Create a streaming image by streaming the bitmap to a memory stream
|
||||||
|
$memoryStream = [System.IO.MemoryStream]::new()
|
||||||
|
$bitmap.Save($memoryStream, [System.Drawing.Imaging.ImageFormat]::Png)
|
||||||
|
$memoryStream.Position = 0
|
||||||
|
|
||||||
|
# Create a bitmap image from the memory stream
|
||||||
|
$bitmapImage = [System.Windows.Media.Imaging.BitmapImage]::new()
|
||||||
|
$bitmapImage.BeginInit()
|
||||||
|
$bitmapImage.StreamSource = $memoryStream
|
||||||
|
$bitmapImage.EndInit()
|
||||||
|
$bitmapImage.Freeze()
|
||||||
|
|
||||||
|
$sync["Form"].taskbarItemInfo.Overlay = $bitmapImage
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($description) {
|
||||||
|
$sync["Form"].taskbarItemInfo.Description = $description
|
||||||
|
}
|
||||||
|
}
|
@ -24,9 +24,6 @@ function Show-CustomDialog {
|
|||||||
.PARAMETER IconSize
|
.PARAMETER IconSize
|
||||||
The Size to use for Icon inside the custom dialog window.
|
The Size to use for Icon inside the custom dialog window.
|
||||||
|
|
||||||
.PARAMETER EnableScroll
|
|
||||||
A flag indicating whether to enable scrolling if the content exceeds the window size.
|
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
|
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
|
||||||
|
|
||||||
@ -37,8 +34,7 @@ function Show-CustomDialog {
|
|||||||
[int]$Height = 200,
|
[int]$Height = 200,
|
||||||
[int]$FontSize = 10,
|
[int]$FontSize = 10,
|
||||||
[int]$HeaderFontSize = 14,
|
[int]$HeaderFontSize = 14,
|
||||||
[int]$IconSize = 25,
|
[int]$IconSize = 25
|
||||||
[bool]$EnableScroll = $false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Add-Type -AssemblyName PresentationFramework
|
Add-Type -AssemblyName PresentationFramework
|
||||||
@ -250,18 +246,11 @@ $cttLogoPath = @"
|
|||||||
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message)))
|
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message)))
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a ScrollViewer if EnableScroll is true
|
|
||||||
if ($EnableScroll) {
|
# Add the TextBlock to the Grid
|
||||||
$scrollViewer = New-Object System.Windows.Controls.ScrollViewer
|
$grid.Children.Add($messageTextBlock)
|
||||||
$scrollViewer.VerticalScrollBarVisibility = 'Auto'
|
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
||||||
$scrollViewer.HorizontalScrollBarVisibility = 'Disabled'
|
|
||||||
$scrollViewer.Content = $messageTextBlock
|
|
||||||
$grid.Children.Add($scrollViewer)
|
|
||||||
[Windows.Controls.Grid]::SetRow($scrollViewer, 1) # Set the row to the second row (0-based index)
|
|
||||||
} else {
|
|
||||||
$grid.Children.Add($messageTextBlock)
|
|
||||||
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add OK button
|
# Add OK button
|
||||||
$okButton = New-Object Windows.Controls.Button
|
$okButton = New-Object Windows.Controls.Button
|
||||||
|
@ -16,12 +16,18 @@ function Invoke-WPFFeatureInstall {
|
|||||||
|
|
||||||
Invoke-WPFRunspace -ArgumentList $Features -DebugPreference $DebugPreference -ScriptBlock {
|
Invoke-WPFRunspace -ArgumentList $Features -DebugPreference $DebugPreference -ScriptBlock {
|
||||||
param($Features, $DebugPreference)
|
param($Features, $DebugPreference)
|
||||||
|
|
||||||
$sync.ProcessRunning = $true
|
$sync.ProcessRunning = $true
|
||||||
|
if ($Features.count -eq 1){
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 })
|
||||||
|
} else {
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 })
|
||||||
|
}
|
||||||
|
|
||||||
Invoke-WinUtilFeatureInstall $Features
|
Invoke-WinUtilFeatureInstall $Features
|
||||||
|
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "$env:TEMP\cttcheck.png" })
|
||||||
|
|
||||||
Write-Host "==================================="
|
Write-Host "==================================="
|
||||||
Write-Host "--- Features are Installed ---"
|
Write-Host "--- Features are Installed ---"
|
||||||
Write-Host "--- A Reboot may be required ---"
|
Write-Host "--- A Reboot may be required ---"
|
||||||
|
@ -24,6 +24,7 @@ function Invoke-WPFGetInstalled {
|
|||||||
param($checkbox, $DebugPreference)
|
param($checkbox, $DebugPreference)
|
||||||
|
|
||||||
$sync.ProcessRunning = $true
|
$sync.ProcessRunning = $true
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" })
|
||||||
|
|
||||||
if($checkbox -eq "winget"){
|
if($checkbox -eq "winget"){
|
||||||
Write-Host "Getting Installed Programs..."
|
Write-Host "Getting Installed Programs..."
|
||||||
@ -42,5 +43,6 @@ function Invoke-WPFGetInstalled {
|
|||||||
|
|
||||||
Write-Host "Done..."
|
Write-Host "Done..."
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
$sync.form.Dispatcher.Invoke([action] { Set-WinUtilTaskbaritem -state "None" })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ function Invoke-WPFGetIso {
|
|||||||
$sync.BusyText.Text="N Busy"
|
$sync.BusyText.Text="N Busy"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Write-Host " _ __ __ _ "
|
Write-Host " _ __ __ _ "
|
||||||
Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ "
|
Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ "
|
||||||
Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ "
|
Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ "
|
||||||
@ -88,6 +89,8 @@ function Invoke-WPFGetIso {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||||
|
|
||||||
# Detect the file size of the ISO and compare it with the free space of the system drive
|
# Detect the file size of the ISO and compare it with the free space of the system drive
|
||||||
$isoSize = (Get-Item -Path $filePath).Length
|
$isoSize = (Get-Item -Path $filePath).Length
|
||||||
Write-Debug "Size of ISO file: $($isoSize) bytes"
|
Write-Debug "Size of ISO file: $($isoSize) bytes"
|
||||||
@ -104,6 +107,7 @@ function Invoke-WPFGetIso {
|
|||||||
{
|
{
|
||||||
# It's critical and we can't continue. Output an error
|
# It's critical and we can't continue. Output an error
|
||||||
Write-Host "You don't have enough space for this operation. You need at least $([Math]::Round(($isoSize / ([Math]::Pow(1024, 2))) * 2, 2)) MB of free space to copy the ISO files to a temp directory and to be able to perform additional operations."
|
Write-Host "You don't have enough space for this operation. You need at least $([Math]::Round(($isoSize / ([Math]::Pow(1024, 2))) * 2, 2)) MB of free space to copy the ISO files to a temp directory and to be able to perform additional operations."
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -122,6 +126,7 @@ function Invoke-WPFGetIso {
|
|||||||
Write-Error "Failed to mount the image. Error: $($_.Exception.Message)"
|
Write-Error "Failed to mount the image. Error: $($_.Exception.Message)"
|
||||||
Write-Error "This is NOT winutil's problem, your ISO might be corrupt, or there is a problem on the system"
|
Write-Error "This is NOT winutil's problem, your ISO might be corrupt, or there is a problem on the system"
|
||||||
Write-Error "Please refer to this wiki for more details https://github.com/ChrisTitusTech/winutil/blob/main/wiki/Error-in-Winutil-MicroWin-during-ISO-mounting%2Cmd"
|
Write-Error "Please refer to this wiki for more details https://github.com/ChrisTitusTech/winutil/blob/main/wiki/Error-in-Winutil-MicroWin-during-ISO-mounting%2Cmd"
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
# storing off values in hidden fields for further steps
|
# storing off values in hidden fields for further steps
|
||||||
@ -199,6 +204,7 @@ function Invoke-WPFGetIso {
|
|||||||
$msg = "Neither install.wim nor install.esd exist in the image, this could happen if you use unofficial Windows images. Please don't use shady images from the internet, use only official images. Here are instructions how to download ISO images if the Microsoft website is not showing the link to download and ISO. https://www.techrepublic.com/article/how-to-download-a-windows-10-iso-file-without-using-the-media-creation-tool/"
|
$msg = "Neither install.wim nor install.esd exist in the image, this could happen if you use unofficial Windows images. Please don't use shady images from the internet, use only official images. Here are instructions how to download ISO images if the Microsoft website is not showing the link to download and ISO. https://www.techrepublic.com/article/how-to-download-a-windows-10-iso-file-without-using-the-media-creation-tool/"
|
||||||
Write-Host $msg
|
Write-Host $msg
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
throw
|
throw
|
||||||
}
|
}
|
||||||
elseif ((-not (Test-Path -Path $wimFile -PathType Leaf)) -and (Test-Path -Path $wimFile.Replace(".wim", ".esd").Trim() -PathType Leaf))
|
elseif ((-not (Test-Path -Path $wimFile -PathType Leaf)) -and (Test-Path -Path $wimFile.Replace(".wim", ".esd").Trim() -PathType Leaf))
|
||||||
@ -239,6 +245,7 @@ function Invoke-WPFGetIso {
|
|||||||
|
|
||||||
$sync.BusyMessage.Visibility="Hidden"
|
$sync.BusyMessage.Visibility="Hidden"
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
Set-WinUtilTaskbaritem -state "None"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,8 +20,14 @@ function Invoke-WPFInstall {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
|
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
|
||||||
param($PackagesToInstall, $DebugPreference)
|
param($PackagesToInstall, $DebugPreference)
|
||||||
|
if ($PackagesToInstall.count -eq 1){
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 })
|
||||||
|
} else {
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 })
|
||||||
|
}
|
||||||
$packagesWinget, $packagesChoco = {
|
$packagesWinget, $packagesChoco = {
|
||||||
$packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new()
|
$packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new()
|
||||||
$packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new()
|
$packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new()
|
||||||
@ -52,11 +58,13 @@ function Invoke-WPFInstall {
|
|||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "-- Installs have finished ---"
|
Write-Host "-- Installs have finished ---"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "$env:TEMP\cttcheck.png" })
|
||||||
}
|
}
|
||||||
Catch {
|
Catch {
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "Error: $_"
|
Write-Host "Error: $_"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
}
|
}
|
||||||
Start-Sleep -Seconds 5
|
Start-Sleep -Seconds 5
|
||||||
$sync.ProcessRunning = $False
|
$sync.ProcessRunning = $False
|
||||||
|
@ -15,6 +15,8 @@ function Invoke-WPFInstallUpgrade {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||||
|
|
||||||
Update-WinUtilProgramWinget
|
Update-WinUtilProgramWinget
|
||||||
|
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
|
@ -4,6 +4,7 @@ function Invoke-WPFMicrowin {
|
|||||||
Invoke MicroWin routines...
|
Invoke MicroWin routines...
|
||||||
#>
|
#>
|
||||||
|
|
||||||
|
|
||||||
if($sync.ProcessRunning) {
|
if($sync.ProcessRunning) {
|
||||||
$msg = "GetIso process is currently running."
|
$msg = "GetIso process is currently running."
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||||
@ -42,6 +43,8 @@ public class PowerManagement {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||||
|
|
||||||
Write-Host "Target ISO location: $($SaveDialog.FileName)"
|
Write-Host "Target ISO location: $($SaveDialog.FileName)"
|
||||||
|
|
||||||
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
||||||
@ -74,6 +77,7 @@ public class PowerManagement {
|
|||||||
$msg = "The export process has failed and MicroWin processing cannot continue"
|
$msg = "The export process has failed and MicroWin processing cannot continue"
|
||||||
Write-Host "Failed to export the image"
|
Write-Host "Failed to export the image"
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,6 +91,7 @@ public class PowerManagement {
|
|||||||
$dlg_msg = $msg + "`n`nIf you want more information, the version of the image selected is $($imgVersion)`n`nIf an image has been incorrectly marked as incompatible, report an issue to the developers."
|
$dlg_msg = $msg + "`n`nIf you want more information, the version of the image selected is $($imgVersion)`n`nIf an image has been incorrectly marked as incompatible, report an issue to the developers."
|
||||||
Write-Host $msg
|
Write-Host $msg
|
||||||
[System.Windows.MessageBox]::Show($dlg_msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Exclamation)
|
[System.Windows.MessageBox]::Show($dlg_msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Exclamation)
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,6 +100,7 @@ public class PowerManagement {
|
|||||||
if (-not $mountDirExists -or -not $scratchDirExists)
|
if (-not $mountDirExists -or -not $scratchDirExists)
|
||||||
{
|
{
|
||||||
Write-Error "Required directories '$mountDirExists' '$scratchDirExists' and do not exist."
|
Write-Error "Required directories '$mountDirExists' '$scratchDirExists' and do not exist."
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +115,7 @@ public class PowerManagement {
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Write-Host "Could not mount image. Exiting..."
|
Write-Host "Could not mount image. Exiting..."
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,19 +318,6 @@ public class PowerManagement {
|
|||||||
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
||||||
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
||||||
Write-Host "Edge icon removed from taskbar"
|
Write-Host "Edge icon removed from taskbar"
|
||||||
if (Test-Path "HKLM:\zSOFTWARE\WOW6432Node")
|
|
||||||
{
|
|
||||||
# Remove leftovers of 64-bit installations
|
|
||||||
# ---
|
|
||||||
# Remove registry values first...
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /va /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /va /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeWebView" /va /f > $null 2>&1
|
|
||||||
# ...then the registry keys
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeWebView" /f > $null 2>&1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
||||||
@ -378,6 +372,7 @@ public class PowerManagement {
|
|||||||
if (-not (Test-Path -Path "$mountDir\sources\install.wim"))
|
if (-not (Test-Path -Path "$mountDir\sources\install.wim"))
|
||||||
{
|
{
|
||||||
Write-Error "Something went wrong and '$mountDir\sources\install.wim' doesn't exist. Please report this bug to the devs"
|
Write-Error "Something went wrong and '$mountDir\sources\install.wim' doesn't exist. Please report this bug to the devs"
|
||||||
|
Set-WinUtilTaskbaritem -state "Error" -value 1
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Write-Host "Windows image completed. Continuing with boot.wim."
|
Write-Host "Windows image completed. Continuing with boot.wim."
|
||||||
@ -479,6 +474,7 @@ public class PowerManagement {
|
|||||||
#$msg = "Done. ISO image is located here: $env:temp\microwin.iso"
|
#$msg = "Done. ISO image is located here: $env:temp\microwin.iso"
|
||||||
$msg = "Done. ISO image is located here: $($SaveDialog.FileName)"
|
$msg = "Done. ISO image is located here: $($SaveDialog.FileName)"
|
||||||
Write-Host $msg
|
Write-Host $msg
|
||||||
|
Set-WinUtilTaskbaritem -state "None"
|
||||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)
|
||||||
} else {
|
} else {
|
||||||
Write-Host "ISO creation failed. The "$($mountDir)" directory has not been removed."
|
Write-Host "ISO creation failed. The "$($mountDir)" directory has not been removed."
|
||||||
@ -491,5 +487,6 @@ public class PowerManagement {
|
|||||||
# Allow the machine to sleep again (optional)
|
# Allow the machine to sleep again (optional)
|
||||||
[PowerManagement]::SetThreadExecutionState(0)
|
[PowerManagement]::SetThreadExecutionState(0)
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
Set-WinUtilTaskbaritem -state "None"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,20 +17,14 @@ function Invoke-WPFShortcut {
|
|||||||
[bool]$RunAsAdmin = $false
|
[bool]$RunAsAdmin = $false
|
||||||
)
|
)
|
||||||
|
|
||||||
# add an a Custom Icon if it's available at "$env:TEMP\cttlogo.png", else don't add a Custom Icon.
|
# Preper the Shortcut Fields and add an a Custom Icon if it's available at "$env:TEMP\cttlogo.png", else don't add a Custom Icon.
|
||||||
$iconPath = $null
|
$iconPath = $null
|
||||||
Switch ($ShortcutToAdd) {
|
Switch ($ShortcutToAdd) {
|
||||||
"WinUtil" {
|
"WinUtil" {
|
||||||
# Use Powershell 7 if installed and fallback to PS5 if not
|
$SourceExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||||
if (Get-Command "pwsh" -ErrorAction SilentlyContinue){
|
$IRM = 'irm https://christitus.com/win | iex'
|
||||||
$shell = "pwsh.exe"
|
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
|
||||||
}
|
$ArgumentsToSourceExe = "$powershell '$IRM'"
|
||||||
else{
|
|
||||||
$shell = "powershell.exe"
|
|
||||||
}
|
|
||||||
|
|
||||||
$shellArgs = "-ExecutionPolicy Bypass -Command `"Start-Process $shell -verb runas -ArgumentList `'-Command `"irm https://christitus.com/win | iex`"`'"
|
|
||||||
|
|
||||||
$DestinationName = "WinUtil.lnk"
|
$DestinationName = "WinUtil.lnk"
|
||||||
|
|
||||||
Invoke-WebRequest -Uri "https://christitus.com/images/logo-full.png" -OutFile "$env:TEMP\cttlogo.png"
|
Invoke-WebRequest -Uri "https://christitus.com/images/logo-full.png" -OutFile "$env:TEMP\cttlogo.png"
|
||||||
@ -58,9 +52,9 @@ function Invoke-WPFShortcut {
|
|||||||
# Prepare the Shortcut paramter
|
# Prepare the Shortcut paramter
|
||||||
$WshShell = New-Object -comObject WScript.Shell
|
$WshShell = New-Object -comObject WScript.Shell
|
||||||
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
||||||
$Shortcut.TargetPath = $shell
|
$Shortcut.TargetPath = $SourceExe
|
||||||
$Shortcut.Arguments = $shellArgs
|
$Shortcut.Arguments = $ArgumentsToSourceExe
|
||||||
if ($null -ne $iconPath) {
|
if ($iconPath -ne $null) {
|
||||||
$shortcut.IconLocation = $iconPath
|
$shortcut.IconLocation = $iconPath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,5 @@ function Invoke-WPFToggle {
|
|||||||
"WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $(Get-WinUtilToggleStatus WPFToggleTaskbarWidgets)}
|
"WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $(Get-WinUtilToggleStatus WPFToggleTaskbarWidgets)}
|
||||||
"WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $(Get-WinUtilToggleStatus WPFToggleTaskbarSearch)}
|
"WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $(Get-WinUtilToggleStatus WPFToggleTaskbarSearch)}
|
||||||
"WPFToggleTaskView" {Invoke-WinUtilTaskView $(Get-WinUtilToggleStatus WPFToggleTaskView)}
|
"WPFToggleTaskView" {Invoke-WinUtilTaskView $(Get-WinUtilToggleStatus WPFToggleTaskView)}
|
||||||
"WPFToggleHiddenFiles" {Invoke-WinUtilHiddenFiles $(Get-WinUtilToggleStatus WPFToggleHiddenFiles)}
|
|
||||||
"WPFToggleTaskbarAlignment" {Invoke-WinUtilTaskbarAlignment $(Get-WinUtilToggleStatus WPFToggleTaskbarAlignment)}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,29 +25,22 @@ function Invoke-WPFTweakPS7{
|
|||||||
$targetTerminalName = "Windows PowerShell"
|
$targetTerminalName = "Windows PowerShell"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Check if the Windows Terminal is installed and return if not (Prerequisite for the following code)
|
|
||||||
if (-not (Get-Command "wt" -ErrorAction SilentlyContinue)){
|
|
||||||
Write-Host "Windows Terminal not installed. Skipping Terminal preference"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
# Check if the Windows Terminal settings.json file exists and return if not (Prereqisite for the following code)
|
|
||||||
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
|
|
||||||
if (-not (Test-Path -Path $settingsPath)){
|
|
||||||
Write-Host "Windows Terminal Settings file not found at $settingsPath"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Settings file found."
|
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
|
||||||
$settingsContent = Get-Content -Path $settingsPath | ConvertFrom-Json
|
if (Test-Path -Path $settingsPath) {
|
||||||
$ps7Profile = $settingsContent.profiles.list | Where-Object { $_.name -eq $targetTerminalName }
|
Write-Host "Settings file found."
|
||||||
if ($ps7Profile) {
|
$settingsContent = Get-Content -Path $settingsPath | ConvertFrom-Json
|
||||||
$settingsContent.defaultProfile = $ps7Profile.guid
|
$ps7Profile = $settingsContent.profiles.list | Where-Object { $_.name -eq $targetTerminalName }
|
||||||
$updatedSettings = $settingsContent | ConvertTo-Json -Depth 100
|
if ($ps7Profile) {
|
||||||
Set-Content -Path $settingsPath -Value $updatedSettings
|
$settingsContent.defaultProfile = $ps7Profile.guid
|
||||||
Write-Host "Default profile updated to " -NoNewline
|
$updatedSettings = $settingsContent | ConvertTo-Json -Depth 100
|
||||||
Write-Host "$targetTerminalName " -ForegroundColor White -NoNewline
|
Set-Content -Path $settingsPath -Value $updatedSettings
|
||||||
Write-Host "using the name attribute."
|
Write-Host "Default profile updated to $targetTerminalName using the name attribute."
|
||||||
|
} else {
|
||||||
|
Write-Host "No PowerShell 7 profile found in Windows Terminal settings using the name attribute."
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "No PowerShell 7 profile found in Windows Terminal settings using the name attribute."
|
Write-Host "Settings file not found at $settingsPath"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Function Invoke-WPFUltimatePerformance {
|
|||||||
if ($ultimatePlan) {
|
if ($ultimatePlan) {
|
||||||
# Extract the GUID of the Ultimate Performance plan
|
# Extract the GUID of the Ultimate Performance plan
|
||||||
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
|
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
|
||||||
|
|
||||||
# Set a different power plan as active before deleting the Ultimate Performance plan
|
# Set a different power plan as active before deleting the Ultimate Performance plan
|
||||||
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
|
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
|
||||||
powercfg -setactive $balancedPlanGUID
|
powercfg -setactive $balancedPlanGUID
|
||||||
|
@ -29,8 +29,14 @@ function Invoke-WPFUnInstall {
|
|||||||
|
|
||||||
if($confirm -eq "No"){return}
|
if($confirm -eq "No"){return}
|
||||||
|
|
||||||
|
|
||||||
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
|
Invoke-WPFRunspace -ArgumentList $PackagesToInstall -DebugPreference $DebugPreference -ScriptBlock {
|
||||||
param($PackagesToInstall, $DebugPreference)
|
param($PackagesToInstall, $DebugPreference)
|
||||||
|
if ($PackagesToInstall.count -eq 1){
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 })
|
||||||
|
} else {
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 })
|
||||||
|
}
|
||||||
$packagesWinget, $packagesChoco = {
|
$packagesWinget, $packagesChoco = {
|
||||||
$packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new()
|
$packagesWinget = [System.Collections.Generic.List`1[System.Object]]::new()
|
||||||
$packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new()
|
$packagesChoco = [System.Collections.Generic.List`1[System.Object]]::new()
|
||||||
@ -56,22 +62,24 @@ function Invoke-WPFUnInstall {
|
|||||||
Install-WinUtilProgramChoco -ProgramsToInstall $packagesChoco -Manage "Uninstalling"
|
Install-WinUtilProgramChoco -ProgramsToInstall $packagesChoco -Manage "Uninstalling"
|
||||||
}
|
}
|
||||||
|
|
||||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
||||||
$MessageboxTitle = "Uninstalls are Finished "
|
|
||||||
$Messageboxbody = ("Done")
|
|
||||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
||||||
|
|
||||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||||
|
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "-- Uninstalls have finished ---"
|
Write-Host "-- Uninstalls have finished ---"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "$env:TEMP\cttcheck.png" })
|
||||||
}
|
}
|
||||||
Catch {
|
Catch {
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "Error: $_"
|
Write-Host "Error: $_"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" })
|
||||||
}
|
}
|
||||||
$sync.ProcessRunning = $False
|
$sync.ProcessRunning = $False
|
||||||
|
|
||||||
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||||
|
$MessageboxTitle = "Uninstalls are Finished "
|
||||||
|
$Messageboxbody = ("Done")
|
||||||
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,15 +30,22 @@ function Invoke-WPFtweaksbutton {
|
|||||||
|
|
||||||
$sync.ProcessRunning = $true
|
$sync.ProcessRunning = $true
|
||||||
|
|
||||||
|
if ($Tweaks.count -eq 1){
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 })
|
||||||
|
} else {
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 })
|
||||||
|
}
|
||||||
$cnt = 0
|
$cnt = 0
|
||||||
# Execute other selected tweaks
|
# Execute other selected tweaks
|
||||||
foreach ($tweak in $Tweaks) {
|
foreach ($tweak in $Tweaks) {
|
||||||
Write-Debug "This is a tweak to run $tweak count: $cnt"
|
Write-Debug "This is a tweak to run $tweak count: $cnt"
|
||||||
Invoke-WinUtilTweaks $tweak
|
Invoke-WinUtilTweaks $tweak
|
||||||
$cnt += 1
|
$cnt += 1
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($cnt/$Tweaks.Count) })
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "$env:TEMP\cttcheck.png" })
|
||||||
Write-Host "================================="
|
Write-Host "================================="
|
||||||
Write-Host "-- Tweaks are Finished ---"
|
Write-Host "-- Tweaks are Finished ---"
|
||||||
Write-Host "================================="
|
Write-Host "================================="
|
||||||
|
@ -24,12 +24,21 @@ function Invoke-WPFundoall {
|
|||||||
param($Tweaks, $DebugPreference)
|
param($Tweaks, $DebugPreference)
|
||||||
|
|
||||||
$sync.ProcessRunning = $true
|
$sync.ProcessRunning = $true
|
||||||
|
if ($Tweaks.count -eq 1){
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 })
|
||||||
|
} else {
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 })
|
||||||
|
}
|
||||||
|
$cnt = 0
|
||||||
|
|
||||||
Foreach ($tweak in $tweaks){
|
Foreach ($tweak in $tweaks){
|
||||||
Invoke-WinUtilTweaks $tweak -undo $true
|
Invoke-WinUtilTweaks $tweak -undo $true
|
||||||
|
$cnt += 1
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($cnt/$Tweaks.Count) })
|
||||||
}
|
}
|
||||||
|
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "$env:TEMP\cttcheck.png" })
|
||||||
Write-Host "=================================="
|
Write-Host "=================================="
|
||||||
Write-Host "--- Undo Tweaks are Finished ---"
|
Write-Host "--- Undo Tweaks are Finished ---"
|
||||||
Write-Host "=================================="
|
Write-Host "=================================="
|
||||||
|
12
mkdocs.yml
12
mkdocs.yml
@ -26,18 +26,16 @@ theme:
|
|||||||
logo: assets/favicon.png
|
logo: assets/favicon.png
|
||||||
favicon: assets/favicon.png
|
favicon: assets/favicon.png
|
||||||
palette:
|
palette:
|
||||||
- media: "(prefers-color-scheme: light)"
|
- scheme: default
|
||||||
scheme: default
|
|
||||||
toggle:
|
toggle:
|
||||||
icon: material/toggle-switch-off-outline
|
icon: material/toggle-switch-off-outline
|
||||||
name: Switch to dark mode
|
name: Switch to dark mode
|
||||||
primary: black
|
primary: black
|
||||||
accent: purple
|
accent: purple
|
||||||
- media: "(prefers-color-scheme: dark)"
|
- scheme: slate
|
||||||
scheme: slate
|
|
||||||
toggle:
|
toggle:
|
||||||
icon: material/toggle-switch
|
icon: material/toggle-switch
|
||||||
name: Switch to light mode
|
name: Switch to light mode
|
||||||
primary: teal
|
primary: teal
|
||||||
accent: lime
|
accent: lime
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
|
@ -154,6 +154,22 @@ Invoke-WPFRunspace -ScriptBlock {
|
|||||||
# Print the logo
|
# Print the logo
|
||||||
Invoke-WPFFormVariables
|
Invoke-WPFFormVariables
|
||||||
|
|
||||||
|
# download the logo
|
||||||
|
$logoUrl = "https://christitus.com/images/logo-full.png"
|
||||||
|
# Download the image
|
||||||
|
$logoPath = "$env:TEMP\cttlogo.png"
|
||||||
|
Invoke-WebRequest -Uri $logoUrl -OutFile $logoPath
|
||||||
|
|
||||||
|
# download the check
|
||||||
|
$CheckUrl = "https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/docs/assets/Check.png"
|
||||||
|
# Download the image
|
||||||
|
$CheckPath = "$env:TEMP\cttcheck.png"
|
||||||
|
Invoke-WebRequest -Uri $CheckUrl -OutFile $CheckPath
|
||||||
|
|
||||||
|
# Progress bar in taskbaritem > Set-WinUtilProgressbar
|
||||||
|
$sync["Form"].TaskbarItemInfo = New-Object System.Windows.Shell.TaskbarItemInfo
|
||||||
|
Set-WinUtilTaskbaritem -state "None"
|
||||||
|
|
||||||
# Set the titlebar
|
# Set the titlebar
|
||||||
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
|
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
|
||||||
# Set the commands that will run when the form is closed
|
# Set the commands that will run when the form is closed
|
||||||
@ -288,37 +304,8 @@ Add-Type @"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Using a TaskbarItem Overlay until someone figures out how to replace the icon correctly
|
|
||||||
|
|
||||||
# URL of the image
|
|
||||||
$imageUrl = "https://christitus.com/images/logo-full.png"
|
|
||||||
|
|
||||||
# Download the image
|
|
||||||
$imagePath = "$env:TEMP\logo-full.png"
|
|
||||||
Invoke-WebRequest -Uri $imageUrl -OutFile $imagePath
|
|
||||||
|
|
||||||
# Read the image file as a byte array
|
|
||||||
$imageBytes = [System.IO.File]::ReadAllBytes($imagePath)
|
|
||||||
|
|
||||||
# Convert the byte array to a Base64 string
|
|
||||||
$base64String = [System.Convert]::ToBase64String($imageBytes)
|
|
||||||
|
|
||||||
# Create a streaming image by streaming the base64 string to a bitmap streamsource
|
|
||||||
$bitmap = New-Object System.Windows.Media.Imaging.BitmapImage
|
|
||||||
$bitmap.BeginInit()
|
|
||||||
$bitmap.StreamSource = [System.IO.MemoryStream][System.Convert]::FromBase64String($base64String)
|
|
||||||
$bitmap.EndInit()
|
|
||||||
$bitmap.Freeze()
|
|
||||||
|
|
||||||
# Ensure TaskbarItemInfo is created if not already
|
|
||||||
if (-not $sync["Form"].TaskbarItemInfo) {
|
|
||||||
$sync["Form"].TaskbarItemInfo = New-Object System.Windows.Shell.TaskbarItemInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the overlay icon for the taskbar
|
# Set the overlay icon for the taskbar
|
||||||
$sync["Form"].TaskbarItemInfo.Overlay = $bitmap
|
Set-WinUtilTaskbaritem -overlay $logoPath
|
||||||
|
|
||||||
|
|
||||||
$rect = New-Object RECT
|
$rect = New-Object RECT
|
||||||
[Window]::GetWindowRect($windowHandle, [ref]$rect)
|
[Window]::GetWindowRect($windowHandle, [ref]$rect)
|
||||||
@ -458,6 +445,10 @@ $sync["SearchBar"].Add_TextChanged({
|
|||||||
$label.Visibility = "Collapsed"}
|
$label.Visibility = "Collapsed"}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$sync["Form"].Add_Activated({
|
||||||
|
Set-WinUtilTaskbaritem -overlay $logoPath
|
||||||
|
})
|
||||||
|
|
||||||
# Define event handler for button click
|
# Define event handler for button click
|
||||||
$sync["SettingsButton"].Add_Click({
|
$sync["SettingsButton"].Add_Click({
|
||||||
Write-Debug "SettingsButton clicked"
|
Write-Debug "SettingsButton clicked"
|
||||||
@ -505,32 +496,5 @@ Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sy
|
|||||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
||||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize
|
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize
|
||||||
})
|
})
|
||||||
|
|
||||||
$sync["SponsorMenuItem"].Add_Click({
|
|
||||||
# Handle Export menu item click
|
|
||||||
Write-Debug "Sponsors clicked"
|
|
||||||
$sync["SettingsPopup"].IsOpen = $false
|
|
||||||
$authorInfo = @"
|
|
||||||
<a href="https://github.com/sponsors/ChrisTitusTech">Current sponsors for ChrisTitusTech:</a>
|
|
||||||
"@
|
|
||||||
$authorInfo += "`n"
|
|
||||||
try {
|
|
||||||
# Call the function to get the sponsors
|
|
||||||
$sponsors = Invoke-WinUtilSponsors
|
|
||||||
|
|
||||||
# Append the sponsors to the authorInfo
|
|
||||||
$sponsors | ForEach-Object { $authorInfo += "$_`n" }
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
$authorInfo += "An error occurred while fetching or processing the sponsors: $_`n"
|
|
||||||
}
|
|
||||||
|
|
||||||
$FontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSize
|
|
||||||
$HeaderFontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSizeHeader
|
|
||||||
$IconSize = $sync.configs.themes.$ctttheme.CustomDialogIconSize
|
|
||||||
$Width = $sync.configs.themes.$ctttheme.CustomDialogWidth
|
|
||||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
|
||||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize -EnableScroll $true
|
|
||||||
})
|
|
||||||
$sync["Form"].ShowDialog() | out-null
|
$sync["Form"].ShowDialog() | out-null
|
||||||
Stop-Transcript
|
Stop-Transcript
|
||||||
|
477
winutil.ps1
477
winutil.ps1
@ -8,7 +8,7 @@
|
|||||||
Author : Chris Titus @christitustech
|
Author : Chris Titus @christitustech
|
||||||
Runspace Author: @DeveloperDurp
|
Runspace Author: @DeveloperDurp
|
||||||
GitHub : https://github.com/ChrisTitusTech
|
GitHub : https://github.com/ChrisTitusTech
|
||||||
Version : 24.07.17
|
Version : 24.07.13
|
||||||
#>
|
#>
|
||||||
param (
|
param (
|
||||||
[switch]$Debug,
|
[switch]$Debug,
|
||||||
@ -45,7 +45,7 @@ Add-Type -AssemblyName System.Windows.Forms
|
|||||||
# Variable to sync between runspaces
|
# Variable to sync between runspaces
|
||||||
$sync = [Hashtable]::Synchronized(@{})
|
$sync = [Hashtable]::Synchronized(@{})
|
||||||
$sync.PSScriptRoot = $PSScriptRoot
|
$sync.PSScriptRoot = $PSScriptRoot
|
||||||
$sync.version = "24.07.17"
|
$sync.version = "24.07.13"
|
||||||
$sync.configs = @{}
|
$sync.configs = @{}
|
||||||
$sync.ProcessRunning = $false
|
$sync.ProcessRunning = $false
|
||||||
|
|
||||||
@ -715,34 +715,14 @@ Function Get-WinUtilToggleStatus {
|
|||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleHiddenFiles") {
|
|
||||||
$HiddenFiles = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').Hidden
|
|
||||||
if($HiddenFiles -eq 0){
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return $true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleTaskbarWidgets") {
|
if ($ToggleSwitch -eq "WPFToggleTaskbarWidgets") {
|
||||||
$TaskbarWidgets = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskBarDa
|
$TaskbarWidgets = (Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskBarDa
|
||||||
if($TaskbarWidgets -eq 0) {
|
if($TaskbarWidgets -eq 0) {
|
||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if ($ToggleSwitch -eq "WPFToggleTaskbarAlignment") {
|
|
||||||
$TaskbarAlignment = (Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced").TaskbarAl
|
|
||||||
if($TaskbarAlignment -eq 0) {
|
|
||||||
return $false
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return $true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function Get-WinUtilVariables {
|
function Get-WinUtilVariables {
|
||||||
@ -973,7 +953,7 @@ function Install-WinUtilProgramChoco {
|
|||||||
|
|
||||||
# Cleanup leftovers files
|
# Cleanup leftovers files
|
||||||
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $installOutputFilePath }
|
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $installOutputFilePath }
|
||||||
if(Test-Path -Path $uninstallOutputFilePath){ Remove-Item -Path $uninstallOutputFilePath }
|
if(Test-Path -Path $installOutputFilePath){ Remove-Item -Path $uninstallOutputFilePath }
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1001,17 +981,18 @@ Function Install-WinUtilProgramWinget {
|
|||||||
[Parameter(Position=1)]
|
[Parameter(Position=1)]
|
||||||
[String]$manage = "Installing"
|
[String]$manage = "Installing"
|
||||||
)
|
)
|
||||||
$x = 0
|
|
||||||
$count = $ProgramsToInstall.Count
|
$count = $ProgramsToInstall.Count
|
||||||
|
|
||||||
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Write-Host "-- Configuring winget packages ---"
|
Write-Host "-- Configuring winget packages ---"
|
||||||
Write-Host "==========================================="
|
Write-Host "==========================================="
|
||||||
Foreach ($Program in $ProgramsToInstall){
|
for ($i = 0; $i -le $ProgramsToInstall.Count; $i++) {
|
||||||
|
$Program = $ProgramsToInstall[$i]
|
||||||
$failedPackages = @()
|
$failedPackages = @()
|
||||||
Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($x + 1) of $count" -PercentComplete $($x/$count*100)
|
Write-Progress -Activity "$manage Applications" -Status "$manage $($Program.winget) $($i + 1) of $count" -PercentComplete $(($i/$count) * 100)
|
||||||
if($manage -eq "Installing"){
|
if($manage -eq "Installing") {
|
||||||
# Install package via ID, if it fails try again with different scope and then with an unelevated prompt.
|
# Install package via ID, if it fails try again with different scope and then with an unelevated prompt.
|
||||||
# Since Install-WinGetPackage might not be directly available, we use winget install command as a workaround.
|
# Since Install-WinGetPackage might not be directly available, we use winget install command as a workaround.
|
||||||
# Winget, not all installers honor any of the following: System-wide, User Installs, or Unelevated Prompt OR Silent Install Mode.
|
# Winget, not all installers honor any of the following: System-wide, User Installs, or Unelevated Prompt OR Silent Install Mode.
|
||||||
@ -1019,21 +1000,21 @@ Function Install-WinUtilProgramWinget {
|
|||||||
Write-Host "Starting install of $($Program.winget) with winget."
|
Write-Host "Starting install of $($Program.winget) with winget."
|
||||||
try {
|
try {
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully."
|
Write-Host "$($Program.winget) installed successfully."
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Write-Host "Attempt with User scope"
|
Write-Host "Attempt with User scope"
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --scope user --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "install --id $($Program.winget) --scope user --silent --accept-source-agreements --accept-package-agreements" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully with User scope."
|
Write-Host "$($Program.winget) installed successfully with User scope."
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -1047,11 +1028,11 @@ Function Install-WinUtilProgramWinget {
|
|||||||
} else {
|
} else {
|
||||||
Write-Host "Skipping installation with specific user credentials."
|
Write-Host "Skipping installation with specific user credentials."
|
||||||
}
|
}
|
||||||
if($status -eq 0){
|
if($status -eq 0) {
|
||||||
Write-Host "$($Program.winget) installed successfully with User prompt."
|
Write-Host "$($Program.winget) installed successfully with User prompt."
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ($status -eq -1978335189){
|
if ($status -eq -1978335189) {
|
||||||
Write-Host "$($Program.winget) No applicable update found"
|
Write-Host "$($Program.winget) No applicable update found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -1060,11 +1041,11 @@ Function Install-WinUtilProgramWinget {
|
|||||||
$failedPackages += $Program
|
$failedPackages += $Program
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($manage -eq "Uninstalling"){
|
elseif($manage -eq "Uninstalling") {
|
||||||
# Uninstall package via ID using winget directly.
|
# Uninstall package via ID using winget directly.
|
||||||
try {
|
try {
|
||||||
$status = $(Start-Process -FilePath "winget" -ArgumentList "uninstall --id $($Program.winget) --silent" -Wait -PassThru -NoNewWindow).ExitCode
|
$status = $(Start-Process -FilePath "winget" -ArgumentList "uninstall --id $($Program.winget) --silent" -Wait -PassThru -NoNewWindow).ExitCode
|
||||||
if($status -ne 0){
|
if($status -ne 0) {
|
||||||
Write-Host "Failed to uninstall $($Program.winget)."
|
Write-Host "Failed to uninstall $($Program.winget)."
|
||||||
} else {
|
} else {
|
||||||
Write-Host "$($Program.winget) uninstalled successfully."
|
Write-Host "$($Program.winget) uninstalled successfully."
|
||||||
@ -1075,7 +1056,9 @@ Function Install-WinUtilProgramWinget {
|
|||||||
$failedPackages += $Program
|
$failedPackages += $Program
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$X++
|
else {
|
||||||
|
throw "[Install-WinUtilProgramWinget] Invalid Value for Parameter 'manage', Provided Value is: $manage"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
||||||
return $failedPackages;
|
return $failedPackages;
|
||||||
@ -2046,40 +2029,6 @@ function Invoke-WinUtilGPU {
|
|||||||
}
|
}
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
function Invoke-WinUtilHiddenFiles {
|
|
||||||
<#
|
|
||||||
|
|
||||||
.SYNOPSIS
|
|
||||||
Enable/Disable Hidden Files
|
|
||||||
|
|
||||||
.PARAMETER Enabled
|
|
||||||
Indicates whether to enable or disable Hidden Files
|
|
||||||
|
|
||||||
#>
|
|
||||||
Param($Enabled)
|
|
||||||
Try{
|
|
||||||
if ($Enabled -eq $false){
|
|
||||||
Write-Host "Enabling Hidden Files"
|
|
||||||
$value = 1
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Host "Disabling Hidden Files"
|
|
||||||
$value = 0
|
|
||||||
}
|
|
||||||
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
|
||||||
Set-ItemProperty -Path $Path -Name Hidden -Value $value
|
|
||||||
}
|
|
||||||
Catch [System.Security.SecurityException] {
|
|
||||||
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
||||||
}
|
|
||||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
||||||
Write-Warning $psitem.Exception.ErrorRecord
|
|
||||||
}
|
|
||||||
Catch{
|
|
||||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Function Invoke-WinUtilMouseAcceleration {
|
Function Invoke-WinUtilMouseAcceleration {
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -2333,51 +2282,6 @@ function Invoke-WinUtilSnapWindow {
|
|||||||
Write-Warning $psitem.Exception.StackTrace
|
Write-Warning $psitem.Exception.StackTrace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Function Invoke-WinUtilSponsors {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Lists Sponsors from ChrisTitusTech
|
|
||||||
.DESCRIPTION
|
|
||||||
Lists Sponsors from ChrisTitusTech
|
|
||||||
.EXAMPLE
|
|
||||||
Invoke-WinUtilSponsors
|
|
||||||
.NOTES
|
|
||||||
This function is used to list sponsors from ChrisTitusTech
|
|
||||||
#>
|
|
||||||
try {
|
|
||||||
# Define the URL and headers
|
|
||||||
$url = "https://github.com/sponsors/ChrisTitusTech"
|
|
||||||
$headers = @{
|
|
||||||
"User-Agent" = "Chrome/58.0.3029.110"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fetch the webpage content
|
|
||||||
try {
|
|
||||||
$html = Invoke-RestMethod -Uri $url -Headers $headers
|
|
||||||
} catch {
|
|
||||||
Write-Output $_.Exception.Message
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use regex to extract the content between "Current sponsors" and "Past sponsors"
|
|
||||||
$currentSponsorsPattern = '(?s)(?<=Current sponsors).*?(?=Past sponsors)'
|
|
||||||
$currentSponsorsHtml = [regex]::Match($html, $currentSponsorsPattern).Value
|
|
||||||
|
|
||||||
# Use regex to extract the sponsor usernames from the alt attributes in the "Current Sponsors" section
|
|
||||||
$sponsorPattern = '(?<=alt="@)[^"]+'
|
|
||||||
$sponsors = [regex]::Matches($currentSponsorsHtml, $sponsorPattern) | ForEach-Object { $_.Value }
|
|
||||||
|
|
||||||
# Exclude "ChrisTitusTech" from the sponsors
|
|
||||||
$sponsors = $sponsors | Where-Object { $_ -ne "ChrisTitusTech" }
|
|
||||||
|
|
||||||
# Return the sponsors
|
|
||||||
return $sponsors
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Write-Error "An error occurred while fetching or processing the sponsors: $_"
|
|
||||||
return $null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Function Invoke-WinUtilStickyKeys {
|
Function Invoke-WinUtilStickyKeys {
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
@ -2409,40 +2313,6 @@ Function Invoke-WinUtilStickyKeys {
|
|||||||
Write-Warning $psitem.Exception.StackTrace
|
Write-Warning $psitem.Exception.StackTrace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function Invoke-WinUtilTaskbarAlignment {
|
|
||||||
<#
|
|
||||||
|
|
||||||
.SYNOPSIS
|
|
||||||
Switches between Center & Left Taskbar Alignment
|
|
||||||
|
|
||||||
.PARAMETER Enabled
|
|
||||||
Indicates whether to make Taskbar Alignment Center or Left
|
|
||||||
|
|
||||||
#>
|
|
||||||
Param($Enabled)
|
|
||||||
Try{
|
|
||||||
if ($Enabled -eq $false){
|
|
||||||
Write-Host "Making Taskbar Alignment to the Center"
|
|
||||||
$value = 1
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Host "Making Taskbar Alignment to the Left"
|
|
||||||
$value = 0
|
|
||||||
}
|
|
||||||
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
|
||||||
Set-ItemProperty -Path $Path -Name "TaskbarAl" -Value $value
|
|
||||||
}
|
|
||||||
Catch [System.Security.SecurityException] {
|
|
||||||
Write-Warning "Unable to set $Path\$Name to $value due to a Security Exception"
|
|
||||||
}
|
|
||||||
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
||||||
Write-Warning $psitem.Exception.ErrorRecord
|
|
||||||
}
|
|
||||||
Catch{
|
|
||||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
||||||
Write-Warning $psitem.Exception.StackTrace
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function Invoke-WinUtilTaskbarSearch {
|
function Invoke-WinUtilTaskbarSearch {
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -2958,9 +2828,6 @@ function Show-CustomDialog {
|
|||||||
.PARAMETER IconSize
|
.PARAMETER IconSize
|
||||||
The Size to use for Icon inside the custom dialog window.
|
The Size to use for Icon inside the custom dialog window.
|
||||||
|
|
||||||
.PARAMETER EnableScroll
|
|
||||||
A flag indicating whether to enable scrolling if the content exceeds the window size.
|
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
|
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
|
||||||
|
|
||||||
@ -2971,8 +2838,7 @@ function Show-CustomDialog {
|
|||||||
[int]$Height = 200,
|
[int]$Height = 200,
|
||||||
[int]$FontSize = 10,
|
[int]$FontSize = 10,
|
||||||
[int]$HeaderFontSize = 14,
|
[int]$HeaderFontSize = 14,
|
||||||
[int]$IconSize = 25,
|
[int]$IconSize = 25
|
||||||
[bool]$EnableScroll = $false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Add-Type -AssemblyName PresentationFramework
|
Add-Type -AssemblyName PresentationFramework
|
||||||
@ -3184,18 +3050,11 @@ $cttLogoPath = @"
|
|||||||
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message)))
|
$messageTextBlock.Inlines.Add((New-Object Windows.Documents.Run($Message)))
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a ScrollViewer if EnableScroll is true
|
|
||||||
if ($EnableScroll) {
|
# Add the TextBlock to the Grid
|
||||||
$scrollViewer = New-Object System.Windows.Controls.ScrollViewer
|
$grid.Children.Add($messageTextBlock)
|
||||||
$scrollViewer.VerticalScrollBarVisibility = 'Auto'
|
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
||||||
$scrollViewer.HorizontalScrollBarVisibility = 'Disabled'
|
|
||||||
$scrollViewer.Content = $messageTextBlock
|
|
||||||
$grid.Children.Add($scrollViewer)
|
|
||||||
[Windows.Controls.Grid]::SetRow($scrollViewer, 1) # Set the row to the second row (0-based index)
|
|
||||||
} else {
|
|
||||||
$grid.Children.Add($messageTextBlock)
|
|
||||||
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add OK button
|
# Add OK button
|
||||||
$okButton = New-Object Windows.Controls.Button
|
$okButton = New-Object Windows.Controls.Button
|
||||||
@ -4620,19 +4479,6 @@ public class PowerManagement {
|
|||||||
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
||||||
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
||||||
Write-Host "Edge icon removed from taskbar"
|
Write-Host "Edge icon removed from taskbar"
|
||||||
if (Test-Path "HKLM:\zSOFTWARE\WOW6432Node")
|
|
||||||
{
|
|
||||||
# Remove leftovers of 64-bit installations
|
|
||||||
# ---
|
|
||||||
# Remove registry values first...
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /va /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /va /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeWebView" /va /f > $null 2>&1
|
|
||||||
# ...then the registry keys
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update" /f > $null 2>&1
|
|
||||||
reg delete "HKLM\zSOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeWebView" /f > $null 2>&1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
||||||
@ -5023,20 +4869,14 @@ function Invoke-WPFShortcut {
|
|||||||
[bool]$RunAsAdmin = $false
|
[bool]$RunAsAdmin = $false
|
||||||
)
|
)
|
||||||
|
|
||||||
# add an a Custom Icon if it's available at "$env:TEMP\cttlogo.png", else don't add a Custom Icon.
|
# Preper the Shortcut Fields and add an a Custom Icon if it's available at "$env:TEMP\cttlogo.png", else don't add a Custom Icon.
|
||||||
$iconPath = $null
|
$iconPath = $null
|
||||||
Switch ($ShortcutToAdd) {
|
Switch ($ShortcutToAdd) {
|
||||||
"WinUtil" {
|
"WinUtil" {
|
||||||
# Use Powershell 7 if installed and fallback to PS5 if not
|
$SourceExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||||
if (Get-Command "pwsh" -ErrorAction SilentlyContinue){
|
$IRM = 'irm https://christitus.com/win | iex'
|
||||||
$shell = "pwsh.exe"
|
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
|
||||||
}
|
$ArgumentsToSourceExe = "$powershell '$IRM'"
|
||||||
else{
|
|
||||||
$shell = "powershell.exe"
|
|
||||||
}
|
|
||||||
|
|
||||||
$shellArgs = "-ExecutionPolicy Bypass -Command `"Start-Process $shell -verb runas -ArgumentList `'-Command `"irm https://christitus.com/win | iex`"`'"
|
|
||||||
|
|
||||||
$DestinationName = "WinUtil.lnk"
|
$DestinationName = "WinUtil.lnk"
|
||||||
|
|
||||||
Invoke-WebRequest -Uri "https://christitus.com/images/logo-full.png" -OutFile "$env:TEMP\cttlogo.png"
|
Invoke-WebRequest -Uri "https://christitus.com/images/logo-full.png" -OutFile "$env:TEMP\cttlogo.png"
|
||||||
@ -5064,9 +4904,9 @@ function Invoke-WPFShortcut {
|
|||||||
# Prepare the Shortcut paramter
|
# Prepare the Shortcut paramter
|
||||||
$WshShell = New-Object -comObject WScript.Shell
|
$WshShell = New-Object -comObject WScript.Shell
|
||||||
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
||||||
$Shortcut.TargetPath = $shell
|
$Shortcut.TargetPath = $SourceExe
|
||||||
$Shortcut.Arguments = $shellArgs
|
$Shortcut.Arguments = $ArgumentsToSourceExe
|
||||||
if ($null -ne $iconPath) {
|
if ($iconPath -ne $null) {
|
||||||
$shortcut.IconLocation = $iconPath
|
$shortcut.IconLocation = $iconPath
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5145,8 +4985,6 @@ function Invoke-WPFToggle {
|
|||||||
"WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $(Get-WinUtilToggleStatus WPFToggleTaskbarWidgets)}
|
"WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $(Get-WinUtilToggleStatus WPFToggleTaskbarWidgets)}
|
||||||
"WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $(Get-WinUtilToggleStatus WPFToggleTaskbarSearch)}
|
"WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $(Get-WinUtilToggleStatus WPFToggleTaskbarSearch)}
|
||||||
"WPFToggleTaskView" {Invoke-WinUtilTaskView $(Get-WinUtilToggleStatus WPFToggleTaskView)}
|
"WPFToggleTaskView" {Invoke-WinUtilTaskView $(Get-WinUtilToggleStatus WPFToggleTaskView)}
|
||||||
"WPFToggleHiddenFiles" {Invoke-WinUtilHiddenFiles $(Get-WinUtilToggleStatus WPFToggleHiddenFiles)}
|
|
||||||
"WPFToggleTaskbarAlignment" {Invoke-WinUtilTaskbarAlignment $(Get-WinUtilToggleStatus WPFToggleTaskbarAlignment)}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function Invoke-WPFTweakPS7{
|
function Invoke-WPFTweakPS7{
|
||||||
@ -5176,32 +5014,25 @@ function Invoke-WPFTweakPS7{
|
|||||||
$targetTerminalName = "Windows PowerShell"
|
$targetTerminalName = "Windows PowerShell"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Check if the Windows Terminal is installed and return if not (Prerequisite for the following code)
|
|
||||||
if (-not (Get-Command "wt" -ErrorAction SilentlyContinue)){
|
|
||||||
Write-Host "Windows Terminal not installed. Skipping Terminal preference"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
# Check if the Windows Terminal settings.json file exists and return if not (Prereqisite for the following code)
|
|
||||||
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
|
|
||||||
if (-not (Test-Path -Path $settingsPath)){
|
|
||||||
Write-Host "Windows Terminal Settings file not found at $settingsPath"
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "Settings file found."
|
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
|
||||||
$settingsContent = Get-Content -Path $settingsPath | ConvertFrom-Json
|
if (Test-Path -Path $settingsPath) {
|
||||||
$ps7Profile = $settingsContent.profiles.list | Where-Object { $_.name -eq $targetTerminalName }
|
Write-Host "Settings file found."
|
||||||
if ($ps7Profile) {
|
$settingsContent = Get-Content -Path $settingsPath | ConvertFrom-Json
|
||||||
$settingsContent.defaultProfile = $ps7Profile.guid
|
$ps7Profile = $settingsContent.profiles.list | Where-Object { $_.name -eq $targetTerminalName }
|
||||||
$updatedSettings = $settingsContent | ConvertTo-Json -Depth 100
|
if ($ps7Profile) {
|
||||||
Set-Content -Path $settingsPath -Value $updatedSettings
|
$settingsContent.defaultProfile = $ps7Profile.guid
|
||||||
Write-Host "Default profile updated to " -NoNewline
|
$updatedSettings = $settingsContent | ConvertTo-Json -Depth 100
|
||||||
Write-Host "$targetTerminalName " -ForegroundColor White -NoNewline
|
Set-Content -Path $settingsPath -Value $updatedSettings
|
||||||
Write-Host "using the name attribute."
|
Write-Host "Default profile updated to $targetTerminalName using the name attribute."
|
||||||
|
} else {
|
||||||
|
Write-Host "No PowerShell 7 profile found in Windows Terminal settings using the name attribute."
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "No PowerShell 7 profile found in Windows Terminal settings using the name attribute."
|
Write-Host "Settings file not found at $settingsPath"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Invoke-WPFtweaksbutton {
|
function Invoke-WPFtweaksbutton {
|
||||||
<#
|
<#
|
||||||
|
|
||||||
@ -5289,7 +5120,7 @@ Function Invoke-WPFUltimatePerformance {
|
|||||||
if ($ultimatePlan) {
|
if ($ultimatePlan) {
|
||||||
# Extract the GUID of the Ultimate Performance plan
|
# Extract the GUID of the Ultimate Performance plan
|
||||||
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
|
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
|
||||||
|
|
||||||
# Set a different power plan as active before deleting the Ultimate Performance plan
|
# Set a different power plan as active before deleting the Ultimate Performance plan
|
||||||
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
|
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
|
||||||
powercfg -setactive $balancedPlanGUID
|
powercfg -setactive $balancedPlanGUID
|
||||||
@ -8354,14 +8185,6 @@ $sync.configs.applications = '{
|
|||||||
"link": "https://zoom.us/",
|
"link": "https://zoom.us/",
|
||||||
"winget": "Zoom.Zoom"
|
"winget": "Zoom.Zoom"
|
||||||
},
|
},
|
||||||
"WPFInstallzoomit": {
|
|
||||||
"category": "Utilities",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "ZoomIt",
|
|
||||||
"description": "A screen zoom, annotation, and recording tool for technical presentations and demos",
|
|
||||||
"link": "https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit",
|
|
||||||
"winget": "Microsoft.Sysinternals.ZoomIt"
|
|
||||||
},
|
|
||||||
"WPFInstallzotero": {
|
"WPFInstallzotero": {
|
||||||
"category": "Document",
|
"category": "Document",
|
||||||
"choco": "zotero",
|
"choco": "zotero",
|
||||||
@ -8602,14 +8425,6 @@ $sync.configs.applications = '{
|
|||||||
"link": "https://github.com/xM4ddy/OFGB",
|
"link": "https://github.com/xM4ddy/OFGB",
|
||||||
"winget": "xM4ddy.OFGB"
|
"winget": "xM4ddy.OFGB"
|
||||||
},
|
},
|
||||||
"WPFInstallPaleMoon": {
|
|
||||||
"category": "Browsers",
|
|
||||||
"choco": "paleMoon",
|
|
||||||
"content": "PaleMoon",
|
|
||||||
"description": "Pale Moon is an Open Source, Goanna-based web browser available for Microsoft Windows and Linux (with other operating systems in development), focusing on efficiency and ease of use.",
|
|
||||||
"link": "https://www.palemoon.org/download.shtml",
|
|
||||||
"winget": "MoonchildProductions.PaleMoon"
|
|
||||||
},
|
|
||||||
"WPFInstallShotcut": {
|
"WPFInstallShotcut": {
|
||||||
"category": "Multimedia Tools",
|
"category": "Multimedia Tools",
|
||||||
"choco": "na",
|
"choco": "na",
|
||||||
@ -8617,46 +8432,6 @@ $sync.configs.applications = '{
|
|||||||
"description": "Shotcut is a free, open source, cross-platform video editor.",
|
"description": "Shotcut is a free, open source, cross-platform video editor.",
|
||||||
"link": "https://shotcut.org/",
|
"link": "https://shotcut.org/",
|
||||||
"winget": "Meltytech.Shotcut"
|
"winget": "Meltytech.Shotcut"
|
||||||
},
|
|
||||||
"WPFInstallLenovoLegionToolkit": {
|
|
||||||
"category": "Utilities",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "Lenovo Legion Toolkit",
|
|
||||||
"description": "Lenovo Legion Toolkit (LLT) is a open-source utility created for Lenovo Legion (and similar) series laptops, that allows changing a couple of features that are only available in Lenovo Vantage or Legion Zone. It runs no background services, uses less memory, uses virtually no CPU, and contains no telemetry. Just like Lenovo Vantage, this application is Windows only.",
|
|
||||||
"link": "https://github.com/BartoszCichecki/LenovoLegionToolkit",
|
|
||||||
"winget": "BartoszCichecki.LenovoLegionToolkit"
|
|
||||||
},
|
|
||||||
"WPFInstallPulsarEdit": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "pulsar",
|
|
||||||
"content": "Pulsar",
|
|
||||||
"description": "A Community-led Hyper-Hackable Text Editor",
|
|
||||||
"link": "https://pulsar-edit.dev/",
|
|
||||||
"winget": "Pulsar-Edit.Pulsar"
|
|
||||||
},
|
|
||||||
"WPFInstallAegisub": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "aegisub",
|
|
||||||
"content": "Aegisub",
|
|
||||||
"description": "Aegisub is a free, cross-platform open source tool for creating and modifying subtitles. Aegisub makes it quick and easy to time subtitles to audio, and features many powerful tools for styling them, including a built-in real-time video preview.",
|
|
||||||
"link": "https://github.com/Aegisub/Aegisub",
|
|
||||||
"winget": "Aegisub.Aegisub"
|
|
||||||
},
|
|
||||||
"WPFInstallSubtitleEdit": {
|
|
||||||
"category": "Multimedia Tools",
|
|
||||||
"choco": "na",
|
|
||||||
"content": "Subtitle Edit",
|
|
||||||
"description": "Subtitle Edit is a free and open source editor for video subtitles.",
|
|
||||||
"link": "https://github.com/SubtitleEdit/subtitleedit",
|
|
||||||
"winget": "Nikse.SubtitleEdit"
|
|
||||||
},
|
|
||||||
"WPFInstallFork": {
|
|
||||||
"category": "Development",
|
|
||||||
"choco": "git-fork",
|
|
||||||
"content": "Fork",
|
|
||||||
"description": "Fork - a fast and friendly git client.",
|
|
||||||
"link": "https://git-fork.com/",
|
|
||||||
"winget": "Fork.Fork"
|
|
||||||
}
|
}
|
||||||
}' | convertfrom-json
|
}' | convertfrom-json
|
||||||
$sync.configs.dns = '{
|
$sync.configs.dns = '{
|
||||||
@ -11488,35 +11263,19 @@ $sync.configs.tweaks = '{
|
|||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a006_",
|
"Order": "a006_",
|
||||||
"InvokeScript": [
|
"InvokeScript": [
|
||||||
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
|
"
|
||||||
$name = \"TaskbarEndTask\"
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\"
|
||||||
$value = 1
|
"
|
||||||
|
|
||||||
# Ensure the registry key exists
|
|
||||||
if (-not (Test-Path $path)) {
|
|
||||||
New-Item -Path $path -Force | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the property, creating it if it doesn''t exist
|
|
||||||
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
|
|
||||||
],
|
],
|
||||||
"UndoScript": [
|
"UndoScript": [
|
||||||
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
|
"
|
||||||
$name = \"TaskbarEndTask\"
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"0\"
|
||||||
$value = 0
|
"
|
||||||
|
|
||||||
# Ensure the registry key exists
|
|
||||||
if (-not (Test-Path $path)) {
|
|
||||||
New-Item -Path $path -Force | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the property, creating it if it doesn''t exist
|
|
||||||
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"WPFTweaksPowershell7": {
|
"WPFTweaksPowershell7": {
|
||||||
"Content": "Change Windows Terminal default: PowerShell 5 -> PowerShell 7",
|
"Content": "Replace Default Powershell 5 to Powershell 7",
|
||||||
"Description": "This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary",
|
"Description": "This will edit the config file of the Windows Terminal Replacing the Powershell 5 to Powershell 7 and install Powershell 7 if necessary",
|
||||||
"category": "Essential Tweaks",
|
"category": "Essential Tweaks",
|
||||||
"panel": "1",
|
"panel": "1",
|
||||||
"Order": "a009_",
|
"Order": "a009_",
|
||||||
@ -12276,20 +12035,12 @@ $sync.configs.tweaks = '{
|
|||||||
"Order": "a108_",
|
"Order": "a108_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleHiddenFiles": {
|
|
||||||
"Content": "Show Hidden Files",
|
|
||||||
"Description": "If Enabled then Hidden Files will be shown.",
|
|
||||||
"category": "Customize Preferences",
|
|
||||||
"panel": "2",
|
|
||||||
"Order": "a200_",
|
|
||||||
"Type": "Toggle"
|
|
||||||
},
|
|
||||||
"WPFToggleShowExt": {
|
"WPFToggleShowExt": {
|
||||||
"Content": "Show File Extensions",
|
"Content": "Show File Extensions",
|
||||||
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a201_",
|
"Order": "a200_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskbarSearch": {
|
"WPFToggleTaskbarSearch": {
|
||||||
@ -12297,7 +12048,7 @@ $sync.configs.tweaks = '{
|
|||||||
"Description": "If Enabled Search Button will be on the taskbar.",
|
"Description": "If Enabled Search Button will be on the taskbar.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a202_",
|
"Order": "a201_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskView": {
|
"WPFToggleTaskView": {
|
||||||
@ -12305,7 +12056,7 @@ $sync.configs.tweaks = '{
|
|||||||
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a203_",
|
"Order": "a202_",
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFToggleTaskbarWidgets": {
|
"WPFToggleTaskbarWidgets": {
|
||||||
@ -12313,15 +12064,7 @@ $sync.configs.tweaks = '{
|
|||||||
"Description": "If Enabled then Widgets Button in Taskbar will be shown.",
|
"Description": "If Enabled then Widgets Button in Taskbar will be shown.",
|
||||||
"category": "Customize Preferences",
|
"category": "Customize Preferences",
|
||||||
"panel": "2",
|
"panel": "2",
|
||||||
"Order": "a204_",
|
"Order": "a203_",
|
||||||
"Type": "Toggle"
|
|
||||||
},
|
|
||||||
"WPFToggleTaskbarAlignment": {
|
|
||||||
"Content": "Switch Taskbar Items between Center & Left",
|
|
||||||
"Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
|
|
||||||
"category": "Customize Preferences",
|
|
||||||
"panel": "2",
|
|
||||||
"Order": "a204_",
|
|
||||||
"Type": "Toggle"
|
"Type": "Toggle"
|
||||||
},
|
},
|
||||||
"WPFOOSUbutton": {
|
"WPFOOSUbutton": {
|
||||||
@ -13077,7 +12820,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<MenuItem FontSize="{ButtonFontSize}" Header="Export" Name="ExportMenuItem" Foreground="{MainForegroundColor}"/>
|
<MenuItem FontSize="{ButtonFontSize}" Header="Export" Name="ExportMenuItem" Foreground="{MainForegroundColor}"/>
|
||||||
<Separator/>
|
<Separator/>
|
||||||
<MenuItem FontSize="{ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{MainForegroundColor}"/>
|
<MenuItem FontSize="{ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{MainForegroundColor}"/>
|
||||||
<MenuItem FontSize="{ButtonFontSize}" Header="Sponsors" Name="SponsorMenuItem" Foreground="{MainForegroundColor}"/>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
</Popup>
|
</Popup>
|
||||||
@ -13171,10 +12913,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallmullvadbrowser" Content="Mullvad Browser" ToolTip="Mullvad Browser is a privacy-focused web browser, developed in partnership with the Tor Project." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallmullvadbrowser" Content="Mullvad Browser" ToolTip="Mullvad Browser is a privacy-focused web browser, developed in partnership with the Tor Project." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallmullvadbrowserLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://mullvad.net/browser"/>
|
<TextBlock Name="WPFInstallmullvadbrowserLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://mullvad.net/browser"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallPaleMoon" Content="PaleMoon" ToolTip="Pale Moon is an Open Source, Goanna-based web browser available for Microsoft Windows and Linux (with other operating systems in development), focusing on efficiency and ease of use." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallPaleMoonLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.palemoon.org/download.shtml"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallthorium" Content="Thorium Browser AVX2" ToolTip="Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallthorium" Content="Thorium Browser AVX2" ToolTip="Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallthoriumLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="http://thorium.rocks/"/>
|
<TextBlock Name="WPFInstallthoriumLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="http://thorium.rocks/"/>
|
||||||
@ -13293,10 +13031,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
|
|
||||||
<Label Name="WPFLabelDevelopment" Content="Development" FontSize="{FontSizeHeading}" FontFamily="{HeaderFontFamily}"/>
|
<Label Name="WPFLabelDevelopment" Content="Development" FontSize="{FontSizeHeading}" FontFamily="{HeaderFontFamily}"/>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallAegisub" Content="Aegisub" ToolTip="Aegisub is a free, cross-platform open source tool for creating and modifying subtitles. Aegisub makes it quick and easy to time subtitles to audio, and features many powerful tools for styling them, including a built-in real-time video preview." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallAegisubLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/Aegisub/Aegisub"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallanaconda3" Content="Anaconda" ToolTip="Anaconda is a distribution of the Python and R programming languages for scientific computing." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallanaconda3" Content="Anaconda" ToolTip="Anaconda is a distribution of the Python and R programming languages for scientific computing." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallanaconda3Link" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.anaconda.com/products/distribution"/>
|
<TextBlock Name="WPFInstallanaconda3Link" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.anaconda.com/products/distribution"/>
|
||||||
@ -13321,10 +13055,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallfnm" Content="Fast Node Manager" ToolTip="Fast Node Manager (fnm) allows you to switch your Node version by using the Terminal" Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallfnm" Content="Fast Node Manager" ToolTip="Fast Node Manager (fnm) allows you to switch your Node version by using the Terminal" Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallfnmLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/Schniz/fnm"/>
|
<TextBlock Name="WPFInstallfnmLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/Schniz/fnm"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallFork" Content="Fork" ToolTip="Fork - a fast and friendly git client." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallForkLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://git-fork.com/"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallgit" Content="Git" ToolTip="Git is a distributed version control system widely used for tracking changes in source code during software development." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallgit" Content="Git" ToolTip="Git is a distributed version control system widely used for tracking changes in source code during software development." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallgitLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://git-scm.com/"/>
|
<TextBlock Name="WPFInstallgitLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://git-scm.com/"/>
|
||||||
@ -13421,14 +13151,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallpostman" Content="Postman" ToolTip="Postman is a collaboration platform for API development that simplifies the process of developing APIs." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallpostman" Content="Postman" ToolTip="Postman is a collaboration platform for API development that simplifies the process of developing APIs." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallpostmanLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.postman.com/"/>
|
<TextBlock Name="WPFInstallpostmanLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.postman.com/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallPulsarEdit" Content="Pulsar" ToolTip="A Community-led Hyper-Hackable Text Editor" Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallPulsarEditLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://pulsar-edit.dev/"/>
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
|
||||||
</Border>
|
|
||||||
<Border Grid.Row="1" Grid.Column="1">
|
|
||||||
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallpyenvwin" Content="Python Version Manager (pyenv-win)" ToolTip="pyenv for Windows is a simple python version management tool. It lets you easily switch between multiple versions of Python." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallpyenvwin" Content="Python Version Manager (pyenv-win)" ToolTip="pyenv for Windows is a simple python version management tool. It lets you easily switch between multiple versions of Python." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallpyenvwinLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://pyenv-win.github.io/pyenv-win/"/>
|
<TextBlock Name="WPFInstallpyenvwinLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://pyenv-win.github.io/pyenv-win/"/>
|
||||||
@ -13437,6 +13159,10 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallpython3" Content="Python3" ToolTip="Python is a versatile programming language used for web development, data analysis, artificial intelligence, and more." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallpython3" Content="Python3" ToolTip="Python is a versatile programming language used for web development, data analysis, artificial intelligence, and more." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallpython3Link" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.python.org/"/>
|
<TextBlock Name="WPFInstallpython3Link" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.python.org/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="1" Grid.Column="1">
|
||||||
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallrustlang" Content="Rust" ToolTip="Rust is a programming language designed for safety and performance, particularly focused on systems programming." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallrustlang" Content="Rust" ToolTip="Rust is a programming language designed for safety and performance, particularly focused on systems programming." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallrustlangLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.rust-lang.org/"/>
|
<TextBlock Name="WPFInstallrustlangLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.rust-lang.org/"/>
|
||||||
@ -13981,10 +13707,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallstremio" Content="Stremio" ToolTip="Stremio is a media center application that allows users to organize and stream their favorite movies, TV shows, and video content." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallstremio" Content="Stremio" ToolTip="Stremio is a media center application that allows users to organize and stream their favorite movies, TV shows, and video content." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallstremioLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.stremio.com/"/>
|
<TextBlock Name="WPFInstallstremioLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.stremio.com/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallSubtitleEdit" Content="Subtitle Edit" ToolTip="Subtitle Edit is a free and open source editor for video subtitles." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallSubtitleEditLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/SubtitleEdit/subtitleedit"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstalltagscanner" Content="TagScanner (Tag Scanner)" ToolTip="TagScanner is a powerful tool for organizing and managing your music collection" Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstalltagscanner" Content="TagScanner (Tag Scanner)" ToolTip="TagScanner is a powerful tool for organizing and managing your music collection" Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstalltagscannerLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.xdlab.ru/en/"/>
|
<TextBlock Name="WPFInstalltagscannerLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.xdlab.ru/en/"/>
|
||||||
@ -14032,14 +13754,14 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallheidisql" Content="HeidiSQL" ToolTip="HeidiSQL is a powerful and easy-to-use client for MySQL, MariaDB, Microsoft SQL Server, and PostgreSQL databases. It provides tools for database management and development." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallheidisql" Content="HeidiSQL" ToolTip="HeidiSQL is a powerful and easy-to-use client for MySQL, MariaDB, Microsoft SQL Server, and PostgreSQL databases. It provides tools for database management and development." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallheidisqlLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.heidisql.com/"/>
|
<TextBlock Name="WPFInstallheidisqlLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.heidisql.com/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallmremoteng" Content="mRemoteNG" ToolTip="mRemoteNG is a free and open-source remote connections manager. It allows you to view and manage multiple remote sessions in a single interface." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallmremotengLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://mremoteng.org/"/>
|
|
||||||
</StackPanel>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
<Border Grid.Row="1" Grid.Column="3">
|
<Border Grid.Row="1" Grid.Column="3">
|
||||||
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<CheckBox Name="WPFInstallmremoteng" Content="mRemoteNG" ToolTip="mRemoteNG is a free and open-source remote connections manager. It allows you to view and manage multiple remote sessions in a single interface." Margin="0,0,2,0"/>
|
||||||
|
<TextBlock Name="WPFInstallmremotengLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://mremoteng.org/"/>
|
||||||
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallmullvadvpn" Content="Mullvad VPN" ToolTip="This is the VPN client software for the Mullvad VPN service." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallmullvadvpn" Content="Mullvad VPN" ToolTip="This is the VPN client software for the Mullvad VPN service." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallmullvadvpnLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/mullvad/mullvadvpn-app"/>
|
<TextBlock Name="WPFInstallmullvadvpnLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/mullvad/mullvadvpn-app"/>
|
||||||
@ -14323,14 +14045,14 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallkeepass" Content="KeePassXC" ToolTip="KeePassXC is a cross-platform, open-source password manager with strong encryption features." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallkeepass" Content="KeePassXC" ToolTip="KeePassXC is a cross-platform, open-source password manager with strong encryption features." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallkeepassLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://keepassxc.org/"/>
|
<TextBlock Name="WPFInstallkeepassLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://keepassxc.org/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallLenovoLegionToolkit" Content="Lenovo Legion Toolkit" ToolTip="Lenovo Legion Toolkit (LLT) is a open-source utility created for Lenovo Legion (and similar) series laptops, that allows changing a couple of features that are only available in Lenovo Vantage or Legion Zone. It runs no background services, uses less memory, uses virtually no CPU, and contains no telemetry. Just like Lenovo Vantage, this application is Windows only." Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallLenovoLegionToolkitLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/BartoszCichecki/LenovoLegionToolkit"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstalllinkshellextension" Content="Link Shell extension" ToolTip="Link Shell Extension (LSE) provides for the creation of Hardlinks, Junctions, Volume Mountpoints, Symbolic Links, a folder cloning process that utilises Hardlinks or Symbolic Links and a copy process taking care of Junctions, Symbolic Links, and Hardlinks. LSE, as its name implies is implemented as a Shell extension and is accessed from Windows Explorer, or similar file/folder managers." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstalllinkshellextension" Content="Link Shell extension" ToolTip="Link Shell Extension (LSE) provides for the creation of Hardlinks, Junctions, Volume Mountpoints, Symbolic Links, a folder cloning process that utilises Hardlinks or Symbolic Links and a copy process taking care of Junctions, Symbolic Links, and Hardlinks. LSE, as its name implies is implemented as a Shell extension and is accessed from Windows Explorer, or similar file/folder managers." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstalllinkshellextensionLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html"/>
|
<TextBlock Name="WPFInstalllinkshellextensionLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="1" Grid.Column="4">
|
||||||
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstalllivelywallpaper" Content="Lively Wallpaper" ToolTip="Free and open-source software that allows users to set animated desktop wallpapers and screensavers." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstalllivelywallpaper" Content="Lively Wallpaper" ToolTip="Free and open-source software that allows users to set animated desktop wallpapers and screensavers." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstalllivelywallpaperLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.rocksdanister.com/lively/"/>
|
<TextBlock Name="WPFInstalllivelywallpaperLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://www.rocksdanister.com/lively/"/>
|
||||||
@ -14339,10 +14061,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstalllocalsend" Content="LocalSend" ToolTip="An open source cross-platform alternative to AirDrop." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstalllocalsend" Content="LocalSend" ToolTip="An open source cross-platform alternative to AirDrop." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstalllocalsendLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://localsend.org/"/>
|
<TextBlock Name="WPFInstalllocalsendLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://localsend.org/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
|
||||||
</Border>
|
|
||||||
<Border Grid.Row="1" Grid.Column="4">
|
|
||||||
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstalllockhunter" Content="LockHunter" ToolTip="LockHunter is a free tool to delete files blocked by something you do not know." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstalllockhunter" Content="LockHunter" ToolTip="LockHunter is a free tool to delete files blocked by something you do not know." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstalllockhunterLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://lockhunter.com/"/>
|
<TextBlock Name="WPFInstalllockhunterLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://lockhunter.com/"/>
|
||||||
@ -14631,10 +14349,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFInstallzerotierone" Content="ZeroTier One" ToolTip="ZeroTier One is a software-defined networking tool that allows you to create secure and scalable networks." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallzerotierone" Content="ZeroTier One" ToolTip="ZeroTier One is a software-defined networking tool that allows you to create secure and scalable networks." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallzerotieroneLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://zerotier.com/"/>
|
<TextBlock Name="WPFInstallzerotieroneLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://zerotier.com/"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<CheckBox Name="WPFInstallzoomit" Content="ZoomIt" ToolTip="A screen zoom, annotation, and recording tool for technical presentations and demos" Margin="0,0,2,0"/>
|
|
||||||
<TextBlock Name="WPFInstallzoomitLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<CheckBox Name="WPFInstallzoxide" Content="Zoxide" ToolTip="Zoxide is a fast and efficient directory changer (cd) that helps you navigate your file system with ease." Margin="0,0,2,0"/>
|
<CheckBox Name="WPFInstallzoxide" Content="Zoxide" ToolTip="Zoxide is a fast and efficient directory changer (cd) that helps you navigate your file system with ease." Margin="0,0,2,0"/>
|
||||||
<TextBlock Name="WPFInstallzoxideLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/ajeetdsouza/zoxide"/>
|
<TextBlock Name="WPFInstallzoxideLink" Style="{StaticResource HoverTextBlockStyle}" Text="(?)" ToolTip="https://github.com/ajeetdsouza/zoxide"/>
|
||||||
@ -14680,7 +14394,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>
|
<CheckBox Name="WPFTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>
|
||||||
<CheckBox Name="WPFTweaksEndTaskOnTaskbar" Content="Enable End Task With Right Click" Margin="5,0" ToolTip="Enables option to end task when right clicking a program in the taskbar"/>
|
<CheckBox Name="WPFTweaksEndTaskOnTaskbar" Content="Enable End Task With Right Click" Margin="5,0" ToolTip="Enables option to end task when right clicking a program in the taskbar"/>
|
||||||
<CheckBox Name="WPFTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
|
<CheckBox Name="WPFTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
|
||||||
<CheckBox Name="WPFTweaksPowershell7" Content="Change Windows Terminal default: PowerShell 5 -> PowerShell 7" Margin="5,0" ToolTip="This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary"/>
|
<CheckBox Name="WPFTweaksPowershell7" Content="Replace Default Powershell 5 to Powershell 7" Margin="5,0" ToolTip="This will edit the config file of the Windows Terminal Replacing the Powershell 5 to Powershell 7 and install Powershell 7 if necessary"/>
|
||||||
<CheckBox Name="WPFTweaksPowershell7Tele" Content="Disable Powershell 7 Telemetry" Margin="5,0" ToolTip="This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data."/>
|
<CheckBox Name="WPFTweaksPowershell7Tele" Content="Disable Powershell 7 Telemetry" Margin="5,0" ToolTip="This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data."/>
|
||||||
<CheckBox Name="WPFTweaksLaptopHibernation" Content="Set Hibernation as default (good for laptops)" Margin="5,0" ToolTip="Most modern laptops have connected stadby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399"/>
|
<CheckBox Name="WPFTweaksLaptopHibernation" Content="Set Hibernation as default (good for laptops)" Margin="5,0" ToolTip="Most modern laptops have connected stadby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399"/>
|
||||||
<CheckBox Name="WPFTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
|
<CheckBox Name="WPFTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
|
||||||
@ -14760,10 +14474,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFToggleStickyKeys" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
<CheckBox Name="WPFToggleStickyKeys" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
||||||
<Label Content="Enable Sticky Keys" ToolTip="If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
<Label Content="Enable Sticky Keys" ToolTip="If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
<DockPanel LastChildFill="True">
|
|
||||||
<CheckBox Name="WPFToggleHiddenFiles" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
|
||||||
<Label Content="Show Hidden Files" ToolTip="If Enabled then Hidden Files will be shown." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
|
||||||
</DockPanel>
|
|
||||||
<DockPanel LastChildFill="True">
|
<DockPanel LastChildFill="True">
|
||||||
<CheckBox Name="WPFToggleShowExt" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
<CheckBox Name="WPFToggleShowExt" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
||||||
<Label Content="Show File Extensions" ToolTip="If enabled then File extensions (e.g., .txt, .jpg) are visible." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
<Label Content="Show File Extensions" ToolTip="If enabled then File extensions (e.g., .txt, .jpg) are visible." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
||||||
@ -14776,10 +14486,6 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|||||||
<CheckBox Name="WPFToggleTaskView" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
<CheckBox Name="WPFToggleTaskView" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
||||||
<Label Content="Show Task View Button in Taskbar" ToolTip="If Enabled then Task View Button in Taskbar will be shown." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
<Label Content="Show Task View Button in Taskbar" ToolTip="If Enabled then Task View Button in Taskbar will be shown." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
<DockPanel LastChildFill="True">
|
|
||||||
<CheckBox Name="WPFToggleTaskbarAlignment" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
|
||||||
<Label Content="Switch Taskbar Items between Center & Left" ToolTip="[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
|
||||||
</DockPanel>
|
|
||||||
<DockPanel LastChildFill="True">
|
<DockPanel LastChildFill="True">
|
||||||
<CheckBox Name="WPFToggleTaskbarWidgets" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
<CheckBox Name="WPFToggleTaskbarWidgets" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="4,0" HorizontalAlignment="Right" FontSize="{FontSize}"/>
|
||||||
<Label Content="Show Widgets Button in Taskbar" ToolTip="If Enabled then Widgets Button in Taskbar will be shown." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
<Label Content="Show Widgets Button in Taskbar" ToolTip="If Enabled then Widgets Button in Taskbar will be shown." HorizontalAlignment="Left" FontSize="{FontSize}"/>
|
||||||
@ -15590,32 +15296,5 @@ Version : <a href="https://github.com/ChrisTitusTech/winutil/releases/tag/$($sy
|
|||||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
||||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize
|
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize
|
||||||
})
|
})
|
||||||
|
|
||||||
$sync["SponsorMenuItem"].Add_Click({
|
|
||||||
# Handle Export menu item click
|
|
||||||
Write-Debug "Sponsors clicked"
|
|
||||||
$sync["SettingsPopup"].IsOpen = $false
|
|
||||||
$authorInfo = @"
|
|
||||||
<a href="https://github.com/sponsors/ChrisTitusTech">Current sponsors for ChrisTitusTech:</a>
|
|
||||||
"@
|
|
||||||
$authorInfo += "`n"
|
|
||||||
try {
|
|
||||||
# Call the function to get the sponsors
|
|
||||||
$sponsors = Invoke-WinUtilSponsors
|
|
||||||
|
|
||||||
# Append the sponsors to the authorInfo
|
|
||||||
$sponsors | ForEach-Object { $authorInfo += "$_`n" }
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
$authorInfo += "An error occurred while fetching or processing the sponsors: $_`n"
|
|
||||||
}
|
|
||||||
|
|
||||||
$FontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSize
|
|
||||||
$HeaderFontSize = $sync.configs.themes.$ctttheme.CustomDialogFontSizeHeader
|
|
||||||
$IconSize = $sync.configs.themes.$ctttheme.CustomDialogIconSize
|
|
||||||
$Width = $sync.configs.themes.$ctttheme.CustomDialogWidth
|
|
||||||
$Height = $sync.configs.themes.$ctttheme.CustomDialogHeight
|
|
||||||
Show-CustomDialog -Message $authorInfo -Width $Width -Height $Height -FontSize $FontSize -HeaderFontSize $HeaderFontSize -IconSize $IconSize -EnableScroll $true
|
|
||||||
})
|
|
||||||
$sync["Form"].ShowDialog() | out-null
|
$sync["Form"].ShowDialog() | out-null
|
||||||
Stop-Transcript
|
Stop-Transcript
|
||||||
|
@ -697,7 +697,6 @@
|
|||||||
<MenuItem FontSize="{ButtonFontSize}" Header="Export" Name="ExportMenuItem" Foreground="{MainForegroundColor}"/>
|
<MenuItem FontSize="{ButtonFontSize}" Header="Export" Name="ExportMenuItem" Foreground="{MainForegroundColor}"/>
|
||||||
<Separator/>
|
<Separator/>
|
||||||
<MenuItem FontSize="{ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{MainForegroundColor}"/>
|
<MenuItem FontSize="{ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{MainForegroundColor}"/>
|
||||||
<MenuItem FontSize="{ButtonFontSize}" Header="Sponsors" Name="SponsorMenuItem" Foreground="{MainForegroundColor}"/>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
</Popup>
|
</Popup>
|
||||||
|
Reference in New Issue
Block a user