mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 14:45:52 -06:00
b2dc605098
* Update applications.json Fake app add made by linux fanboy * Compile Winutil * Update screen-install.png (#1464) * Compile Winutil * Update files (#1487) - Add detections for whether the image to be processed by MicroWin is Windows 10 or later - Add procedure to clear the indexes ComboBox (WinForms term) every time an ISO is specified Co-authored-by: Chris Titus <contact@christitus.com> * Lots of changes to Invoke-WPFFixesUpdate (#1467) * Add Guilded into Communication Tab (#1059) * Add Guilded into Communication Tab * Remove Choco Package due to there is no Chocolatey packages * : Add ZeroTier One to utilities menu (#1061) * Update applications.json (#1063) Update to add [SuperF4 - Stefan Sundin](https://stefansundin.github.io/superf4/), as mentioned in #374 [Choco - SuperF4](https://community.chocolatey.org/packages/superf4) maintained by Xav83. [WinGet - SuperF4](https://winstall.app/apps/StefanSundin.Superf4) SuperF4 and Winget package published by Stefan Sundin. * Update inputXML.xaml (#1062) Updated inputXML.xaml to account for addition of the SuperF4 software. * Added AIMP music player (#1064) * Add Ventoy (Chocolatey Only Package) & .NET Core Runtime (Winget & Chocolatey) (#1066) * Tidy up SuperF4 line. * Tidy up SuperF4 line. Used spaces instead of tabs. * Add dotnet 7.0.11 Desktop Runtime * Undone changes to SuperF4 line * Addition of Ventoy (chocolatey only) package * Comment Spacing, Indentation, and Capitalization (#1084) * Comment Spacing, Indentation, and Capitalization * Comment Grammar and Spacing Makes grammar in comments better and more consistent Adds space before comment and centers word in `Write-Host` commands * More Grammar and Formatting * Add some comments * Populate PlaceHolder comments in functions Files I found that has issues: Get-WinUtilRegistry.ps1 Install-WinUtilWinget.ps1 Invoke-WinUtilDarkMode.ps1 Remove-WinUtilAPPX.ps1 Test-WinUtilPackageManager.ps1 Update-WinUtilProgramWinget.ps1 Invoke-WPFUpdatessecurity.ps1 * Tweak a few more comments * Tweak another write-host statement * Undo Catch statement adjustment It's outside of the scope of this pull request * Fix indentation * Description, Progress Bar, and nuke step 10 - Added a full description of exactly what the function does - Replaced `Write-Host`s with multiple progress bars - Might've added too many, but I didn't want to add one for just a few of them as I want the user to be able to see all tasks that have been performed, just like with `Write-Host` - Removed Step 10 - Only applies to Windows 8 * Add Aggressive Parameter, Actually Force Check for Updates * Add aggressive parameter and add system repair step * Lots of changes * Revert Stuff This reverts commit199a92e26e
. Revert "Comment Spacing, Indentation, and Capitalization (#1084)" This reverts commitacc2b5b243
. Revert "Add Ventoy (Chocolatey Only Package) & .NET Core Runtime (Winget & Chocolatey) (#1066)" This reverts commit932ec6a0a0
. Revert "Added AIMP music player (#1064)" This reverts commitd1a4a67a45
. Revert "Update inputXML.xaml (#1062)" This reverts commit2db4cb556e
. Revert "Update applications.json (#1063)" This reverts commitce7edbd60d
. Revert ": Add ZeroTier One to utilities menu (#1061)" This reverts commit783a9657d0
. --------- Co-authored-by: Justawildwolf <62820836+blusewill@users.noreply.github.com> Co-authored-by: Tim Stone <github@tsdev.au> Co-authored-by: Will Barnard <5012445+mrwillbarnz@users.noreply.github.com> Co-authored-by: Ian Bassi <ian.bassi@outlook.com> * Compile Winutil * Invoke-WPFRunspace argument fix (#1497) * Compile Winutil * Fixes, Changes & Features Added (Broken links & Comments) (#1476) * Fixes & Changes (Broken links & Comments) - Snappy Driver Installer Origin Github source code deprecated. Replaced with SourceForge official source code site. - Spacedrive File Manager "spacedrive.org" not working. Changed to official site. **Recent Alpha ver 0.2.0 - crashing on install for Win10+ (not tested in "lower" win versions), may be better to remove overall or place on standby.** - Xtreme Download Manager Web Integration not working for chromium based browser. **Deprecated by Manifest V3, no official update release.** * Update applications.json Reverted winget for Spacedrive to original. Spacedrive.FileSystem -> spacedrive.Spacedrive * Fix for Portmaster [Wrong repo/winget] * Choco Safing Portmaster * Added Apps Request - Added TeCno Account Switcher Resolves Feature Request n.6° #1451 - Added ATLauncher - Added OP Auto Clicker - Added Motrix Download Manager Resolves Feature Request #1443 * Fixed Panel Numbers * Added Thonny Python IDE - Feature Request #1451 * Update applications.json fix few missing values * Update applications.json add winget thonny --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Fixed typo: latancy to latency (#1492) * Compile Winutil * Update inputXML.xaml (#1462) * Compile Winutil * Update .gitignore * add Dax Studio program to the Development category (#1500) * Compile Winutil * Add GitHub CLI to applications (#1460) * Added GitHub CLI to applications GitHub cli is the command line interface offered by github alongside github desktop. For more information see: https://github.com/cli/cli. Installation instructions taken from: https://github.com/cli/cli#windows * spelling: removed accidental dot * Compile Winutil * Add Vesktop to applications.json (#1461) * Add Vesktop to applications.json * fix syntax error --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Add some apps (#1466) * Add some apps * Fix WPFInstallopenhashtab --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * adds helix to development tools (#1469) * Compile Winutil * Add tooltips to config checkboxes (#1470) * Fix typo * Update winutil.ps1 * Update winutil.ps1 Add tooltips to checkboxes in config session and rewrite so to make things more clear as to what each tweak does * Revert "Update winutil.ps1" This reverts commitaaa69c473f
. * Add applications Added Sonarr, Radarr, Prowlarr and Bazarr in response to an github issue * Add applications Added applications to the GUI * Revert "Add applications" This reverts commite5fba2b4eb
. * Revert "Add applications" This reverts commit55ff75a65c
. * Edit xaml files Editing the xaml files so the changes persist upon compilation --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Add Mumble (#1481) Add Mumble to Communications category. * Compile Winutil * Added 'Stremio' (#1473) * Compile Winutil * Update applications.json Added 'Stremio' * Compile Winutil --------- Co-authored-by: REVENGE977 <REVENGE977@users.noreply.github.com> Co-authored-by: Chris Titus <contact@christitus.com> * Add the Mullvad Browser (#1475) * add mullvad browser * Missing tab * fix format --------- Co-authored-by: Kristjan <krissiomar@gmail.com> Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Added some Applications (#1484) * Update applications.json Add: - Rancher Desktop - ManicTime - qFlipper - ModernFlyouts - ZoomIt - StartAllBack - Wintoys - Minecraft Launcher * Update applications.json added: - Arduino IDE - Whatsapp * Update applications.json corrected spacing * Update applications.json fixed winget commands --------- Co-authored-by: Chris Titus <contact@christitus.com> * Added WinMerge Application in Development category. (#1485) WinMerge is an Open Source differencing and merging tool for Windows. * Compile Winutil * Fix few app links and add app (issues/1478) (#1495) * Update some app links * Update winutil.ps1 Date update * Add Syncthingtray Related to the issue: https://github.com/ChrisTitusTech/winutil/issues/1478 * Update applications.json update putty link --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil * Update applications.json * Compile Winutil * App fix and sort * Add Dual Monitor tools to applications.json (#1504) * Add Dual Monitor tools to applications.json * Update applications.json * Update applications.json --------- Co-authored-by: Chris Titus <contact@christitus.com> * Compile Winutil --------- Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: Samq64 <81489795+Samq64@users.noreply.github.com> Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com> Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com> Co-authored-by: Justawildwolf <62820836+blusewill@users.noreply.github.com> Co-authored-by: Tim Stone <github@tsdev.au> Co-authored-by: Will Barnard <5012445+mrwillbarnz@users.noreply.github.com> Co-authored-by: Ian Bassi <ian.bassi@outlook.com> Co-authored-by: ogfrm <96927197+ogfrm@users.noreply.github.com> Co-authored-by: v-Kaefer <128633407+v-Kaefer@users.noreply.github.com> Co-authored-by: Shashank B N <117376750+Athena-2003@users.noreply.github.com> Co-authored-by: Alex Schwartz <alexschwartz01@gmail.com> Co-authored-by: André Gonzalez <lopescg@gmail.com> Co-authored-by: David Hardt <contact@hardt.ai> Co-authored-by: Choccy Milk <152878702+choccyy-milk@users.noreply.github.com> Co-authored-by: OmriOn <omri.hermon@gmail.com> Co-authored-by: Breno Fernandes <fernandesopa@gmail.com> Co-authored-by: Yuri Gabriel <97139700+Yuuh15@users.noreply.github.com> Co-authored-by: Filip Zurek <zurfil@tuta.com> Co-authored-by: H4D3S <32039975+REVENGE977@users.noreply.github.com> Co-authored-by: REVENGE977 <REVENGE977@users.noreply.github.com> Co-authored-by: KristjanOmar <117899282+KristjanOmar@users.noreply.github.com> Co-authored-by: Kristjan <krissiomar@gmail.com> Co-authored-by: MyDrift <personal@mdiana.ch> Co-authored-by: Akash Singh <52990376+Akash-S1999@users.noreply.github.com> Co-authored-by: Roc Wang <rocwang911@gmail.com> Co-authored-by: José Roberto Sánchez <jose_roberto_ss@hotmail.com>
162 lines
7.8 KiB
PowerShell
162 lines
7.8 KiB
PowerShell
function Invoke-WPFGetIso {
|
|
<#
|
|
.DESCRIPTION
|
|
Function to get the path to Iso file for MicroWin, unpack that isom=, read basic information and populate the UI Options
|
|
#>
|
|
|
|
Write-Host "Invoking WPFGetIso"
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "GetIso process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Write-Host " _ __ __ _ "
|
|
Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ "
|
|
Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ "
|
|
Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | "
|
|
Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| "
|
|
|
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
|
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf)
|
|
Write-Host "oscdimg.exe on system: $oscdImgFound"
|
|
|
|
if (!$oscdImgFound)
|
|
{
|
|
$downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked
|
|
|
|
if (!$downloadFromGitHub)
|
|
{
|
|
# only show the message to people who did check the box to download from github, if you check the box
|
|
# you consent to downloading it, no need to show extra dialogs
|
|
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
|
|
# the step below needs choco to download oscdimg
|
|
$chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco)
|
|
Write-Host "choco on system: $chocoFound"
|
|
if (!$chocoFound)
|
|
{
|
|
[System.Windows.MessageBox]::Show("choco.exe is not found on the system, you need choco to download oscdimg.exe")
|
|
return
|
|
}
|
|
|
|
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install windows-adk-oscdimg"
|
|
[System.Windows.MessageBox]::Show("oscdimg is installed, now close, reopen PowerShell terminal and re-launch winutil.ps1")
|
|
return
|
|
}
|
|
else {
|
|
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
|
|
Get-Oscdimg -oscdimgPath $oscdimgPath
|
|
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
|
if (!$oscdImgFound) {
|
|
$msg = "oscdimg was not downloaded can not proceed"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
return
|
|
}
|
|
else {
|
|
Write-Host "oscdimg.exe was successfully downloaded from github"
|
|
}
|
|
}
|
|
}
|
|
|
|
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
|
|
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
|
|
$openFileDialog.initialDirectory = $initialDirectory
|
|
$openFileDialog.filter = "ISO files (*.iso)| *.iso"
|
|
$openFileDialog.ShowDialog() | Out-Null
|
|
$filePath = $openFileDialog.FileName
|
|
|
|
if ([string]::IsNullOrEmpty($filePath))
|
|
{
|
|
Write-Host "No ISO is chosen"
|
|
return
|
|
}
|
|
|
|
Write-Host "File path $($filePath)"
|
|
if (-not (Test-Path -Path $filePath -PathType Leaf))
|
|
{
|
|
$msg = "File you've chosen doesn't exist"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
return
|
|
}
|
|
|
|
try {
|
|
Write-Host "Mounting Iso. Please wait."
|
|
$mountedISO = Mount-DiskImage -PassThru "$filePath"
|
|
Write-Host "Done mounting Iso $mountedISO"
|
|
$driveLetter = (Get-Volume -DiskImage $mountedISO).DriveLetter
|
|
Write-Host "Iso mounted to '$driveLetter'"
|
|
} catch {
|
|
# @ChrisTitusTech please copy this wiki and change the link below to your copy of the wiki
|
|
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 "Please refer to this wiki for more details https://github.com/ChrisTitusTech/winutil/blob/main/wiki/Error-in-Winutil-MicroWin-during-ISO-mounting%2Cmd"
|
|
return
|
|
}
|
|
# storing off values in hidden fields for further steps
|
|
# there is probably a better way of doing this, I don't have time to figure this out
|
|
$sync.MicrowinIsoDrive.Text = $driveLetter
|
|
|
|
Write-Host "Setting up mount dir and scratch dirs"
|
|
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
|
|
$randomNumber = Get-Random -Minimum 1 -Maximum 9999
|
|
$randomMicrowin = "Microwin_${timestamp}_${randomNumber}"
|
|
$randomMicrowinScratch = "MicrowinScratch_${timestamp}_${randomNumber}"
|
|
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
|
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
|
$sync.MicrowinMountDir.Text = $mountDir
|
|
$sync.MicrowinScratchDir.Text = $scratchDir
|
|
Write-Host "Done setting up mount dir and scratch dirs"
|
|
Write-Host "Scratch dir is $scratchDir"
|
|
Write-Host "Image dir is $mountDir"
|
|
|
|
try {
|
|
|
|
#$data = @($driveLetter, $filePath)
|
|
New-Item -ItemType Directory -Force -Path "$($mountDir)" | Out-Null
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)" | Out-Null
|
|
Write-Host "Copying Windows image. This will take awhile, please don't use UI or cancel this step!"
|
|
|
|
# xcopy we can verify files and also not copy files that already exist, but hard to measure
|
|
# xcopy.exe /E /I /H /R /Y /J $DriveLetter":" $mountDir >$null
|
|
$totalTime = Measure-Command { Copy-Files "$($driveLetter):" $mountDir -Recurse -Force }
|
|
Write-Host "Copy complete! Total Time: $($totalTime.Minutes)m$($totalTime.Seconds)s"
|
|
|
|
$wimFile = "$mountDir\sources\install.wim"
|
|
Write-Host "Getting image information $wimFile"
|
|
|
|
if (-not (Test-Path -Path $wimFile -PathType Leaf))
|
|
{
|
|
$msg = "Install.wim file doesn't exist in the image, this could happen if you use unofficial Windows images, or a Media creation tool, which creates a final image that can not be modified. 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
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
throw
|
|
}
|
|
$sync.MicrowinWindowsFlavors.Items.Clear()
|
|
Get-WindowsImage -ImagePath $wimFile | ForEach-Object {
|
|
$imageIdx = $_.ImageIndex
|
|
$imageName = $_.ImageName
|
|
$sync.MicrowinWindowsFlavors.Items.Add("$imageIdx : $imageName")
|
|
}
|
|
$sync.MicrowinWindowsFlavors.SelectedIndex = 0
|
|
Get-Volume $driveLetter | Get-DiskImage | Dismount-DiskImage
|
|
Write-Host "Selected value '$($sync.MicrowinWindowsFlavors.SelectedValue)'....."
|
|
|
|
$sync.MicrowinOptionsPanel.Visibility = 'Visible'
|
|
} catch {
|
|
Write-Host "Dismounting bad image..."
|
|
Get-Volume $driveLetter | Get-DiskImage | Dismount-DiskImage
|
|
Remove-Item -Recurse -Force "$($scratchDir)"
|
|
Remove-Item -Recurse -Force "$($mountDir)"
|
|
}
|
|
|
|
Write-Host "Done reading and unpacking ISO"
|
|
Write-Host ""
|
|
Write-Host "*********************************"
|
|
Write-Host "Check the UI for further steps!!!"
|
|
|
|
$sync.ProcessRunning = $false
|
|
}
|
|
|
|
|