Windows-Update/Upgrader.ps1

181 lines
13 KiB
PowerShell
Raw Normal View History

2022-09-16 09:44:34 +00:00
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
2022-09-16 11:26:26 +00:00
Start-Sleep -Seconds 2
Invoke-WebRequest -Uri https://raw.githubusercontent.com/OlaYZen/Windows-Update/main/winget-export.json -OutFile $PSScriptRoot"".\winget-export.json
2022-09-16 11:09:10 +00:00
2022-09-16 09:44:34 +00:00
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("PresentationFramework")
if (Get-Module -ListAvailable -Name PSWindowsUpdate) {
Write-Host "PSWindowsUpdate exists"
}
else {
Write-Host "PSWindowsUpdate does not exist, Installing ..."
Install-Module PSWindowsUpdate -force
}
function CheckBoxFunc {
if ($checkBox.Checked)
{
$button5.Visible = $false
$button6.Visible = $true
}
else
{
$button5.Visible = $true
$button6.Visible = $false
}
$button5reboot
}
function GetWindowsUpdates {
(
Get-WindowsUpdate -AcceptAll -Install
)
$button1.Visible = $false
}
function UpdateWindowsUpdatesnoReboot {
(
Install-WindowsUpdate -Confirm -AcceptAll
)
}
function UpdateWindowsUpdateswithReboot {
(
Install-WindowsUpdate -Confirm -AcceptAll -AutoReboot
)
}
function InstallProgramsViajsonWinget {
(
winget import .\winget-export.json --accept-package-agreements --accept-source-agreements --ignore-versions --ignore-unavailable
)
}
function WingetUpgrade {
(
winget upgrade --all --accept-source-agreements --silent --include-unknown
)
}
function EditWinget {
(
notepad.exe $PSScriptRoot"".\winget-export.json
)
}
[System.Windows.Forms.Application]::EnableVisualStyles()
$button1 = New-Object System.Windows.Forms.Button
$button1.Location = '12, 5'
$button1.Name = "Get Windows Updates"
$button1.Size = '95, 55'
$button1.TabIndex = 0
$button1.Text = "Get Windows Updates"
$button1.Add_Click({GetWindowsUpdates})
[System.Windows.Forms.Application]::EnableVisualStyles()
$button5 = New-Object System.Windows.Forms.Button
$button5.Location = '12, 5'
$button5.Name = "Install Windows Updates"
$button5.Size = '95, 55'
$button5.TabIndex = 0
$button5.Text = "Install Windows Updates"
$button5.Add_Click({UpdateWindowsUpdatesnoReboot})
[System.Windows.Forms.Application]::EnableVisualStyles()
$button6 = New-Object System.Windows.Forms.Button
$button6.Location = '12, 5'
$button6.Name = "Install Windows Updates"
$button6.Size = '95, 55'
$button6.TabIndex = 0
$button6.Visible = $false
$button6.Text = "Install Windows Updates"
$button6.Add_Click({UpdateWindowsUpdateswithReboot})
[System.Windows.Forms.Application]::EnableVisualStyles()
$button2 = New-Object System.Windows.Forms.Button
$button2.Location = '122, 5'
$button2.Name = "Install Programs via Winget"
$button2.Size = '95, 55'
$button2.TabIndex = 1
$button2.Text = "Install Programs via Winget"
$button2.Add_Click({InstallProgramsViajsonWinget})
[System.Windows.Forms.Application]::EnableVisualStyles()
$button3 = New-Object System.Windows.Forms.Button
$button3.Location = '232, 5'
$button3.Name = "Upgrade Winget software"
$button3.Size = '95, 55'
$button3.TabIndex = 2
$button3.Text = "Upgrade Winget software"
$button3.Add_Click({WingetUpgrade})
[System.Windows.Forms.Application]::EnableVisualStyles()
$button4 = New-Object System.Windows.Forms.Button
$button4.Location = '122, 60'
$button4.Name = "Edit Winget Software"
$button4.Size = '95, 35'
$button4.TabIndex = 2
2022-09-16 11:06:41 +00:00
$button4.Text = "Edit Winget Software"
2022-09-16 09:44:34 +00:00
$button4.Add_Click({EditWinget})
$checkBox = new-object System.Windows.Forms.checkbox
$checkBox.Location = '12, 55'
$checkBox.Size = '95, 55'
$checkBox.Text = "AutoReboot"
$checkBox.Add_Click({CheckBoxFunc})
$AutoReboot = New-Object System.Windows.Forms.TextBox
$AutoReboot.Location = '12, 175'
$AutoReboot.Multiline = $true
$AutoReboot.Name = "textBoxDisplay3"
$AutoReboot.Size = '460, 175'
$AutoReboot.ReadOnly = $true
$AutoReboot.Visible = $false
$AutoReboot.BackColor = "White"
$VersionLabel = New-Object System.Windows.Forms.Label
$VersionLabel.Location = '266, 90'
$VersionLabel.Name = 'Versionlabel'
$VersionLabel.Text = "Version 1.2.1"
$VersionLabel.Size = '490, 500'
$Form = New-Object System.Windows.Forms.Form
$Form.StartPosition = "CenterScreen"
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
$Form.Name = "mainForm"
$Form.Text = "Windows and Winget Updates"
$Form.MaximizeBox = $False
$Form.ShowInTaskbar = $true
$Form.Controls.Add($button1)
$Form.Controls.Add($button2)
$Form.Controls.Add($button3)
$Form.Controls.Add($button4)
$Form.Controls.Add($button5)
$Form.Controls.Add($button6)
$Form.Controls.Add($checkBox)
$Form.Controls.Add($AutoReboot)
$Form.Controls.Add($VersionLabel)
$Form.Controls.Add($RichTextBoxDisplay)
$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAqlQTFRFN13of5fw/f39V3fr3OL5l6vym67zUXLrv8v2ytT44uf6p7f0SmzqiZ/xRWjpydP3zdb46u774+j6usf2d5Hv9/j8OmDoPWLp+vr9tML1scD17/L8qbn0ZYLtaYXtgprwVnbr2uH5l6rymq3yUHHrh57wx9L3y9T4ucb2dpDvs8H1ZIHtZoPtgpnwVXXr2eD5lanymKvyhp3wQGXpx9H35On6uMX2dI/vssH1pbb0YoDtgJjwVHTr1975lKjyhZzw+/z9xdD3tsT1c43u9PX8OV7ossD1sL/1pLX0Y4HtfpfwUnPr1dz5k6fyhJvwxM/3xtD3tsP1cIvuorTzYH7s09v5kqbyTG7qw873boru1t752+H5oLLzprf0q7r0X37sfpbv0tr4e5TvkKXxkabyws334eb6bYnu4Ob6r771nrDzXnzsfZXv0Nn4epPvwMz3bIju3+X66u37rr31na/zXXzsXHvsfJXvztf4jqPxwMv2aobtrbz1vMj2W3rsjKHxjaPxjKLxvsr2vcr2aIXtrLz0wc33WXnsiqDxRGjpYX/s3eP6q7v0WHfri6HxWHjs3OP6eZLviaDxbYjuu8j2qrr0eJLvco3uqLn0tcP13uT6d5DvZ4Ttt8X2Sm3qqLj0nK/za4fug5rwU3Tr0dn4dY/v/Pz9b4ru2N/5dI7uj6TxX33s1d35cYzumq3zo7Tz1Nz5obPzobLzn7HzgZnwz9j4PGHp5+v77fD78fT89vf8vcn2lqry5er6OV/oQ2fpiJ7xnbDzOF7oR2rqzNX4mazyyNL3Rmnq+fr9+/v9Tm/q8vT88fP8y9X4O2DoaYbtPGHo+Pn9QGTp+Pn8k6jyS23qQmbp8PL88/X8PmPpT3Dr7O/7Q2bpWnns9Pb86Oz7TW/q9ff8SGvqo61g/AAAE+9JREFUeJztnfejXEUVxy9XAkoLLSEEiCFAQgi9SoAQQkKH0HsJj96r9CqhQ+hNWkAIRZogRZHem0gVEFH5S+TuW97b3fM9M2fKA0e+nx93Z86cu2d3v/fOzDlTVYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhPy/MV8N+VkO2/Nj23U9LIf1BbDtBfUeP4cdfpHDmS4WguMsbOu8CL6sRTP4tZgWj3p4BuvV4tD0Eo4eRQSkWhL2XiqDX0urARkxMt36MqOg6WUdXcoIyGjYe7kMfi2vBqReId36GGz5l44uZQREEZGx6X6tqAdkXLr1lbDllR1dygiIIiKrJLulS0hdj0+2Xk2Ahl0SUkhAFBFZNdmtiY6ApIvIyBHQ8GquPoUEBIuI86tmYmFHQOpJqdZXx3bXcPUpJCCKiKyZ6tZaroCsnWp9HWx3EVefQgKiiMi6iV6t54pHvX6i9Wo4NLuBs08hAVFEZMNErzZyBiRVRBQJ+ZWzUykBGRoR2dgZkHpymvUVsNVNnJ1KCYgiIpumebWZOyBT0qyPw1adElJMQBQR2TzJqfWmugOyRZL1ajw0uqS7UykBUQxMS3JqS3c86ukzUqwrErKVu1cxAdkaGkgTkW08AUkTkW2xzfncvYoJyHb48rZPcWoHX0B2TLE+Bdt0S0g5AVFEZKcEn3wSUtczE6xXO0OTHgkpJyCKhV0SfNrVF48kEZmBJWS0p1s5AckvIrt5A1LvHm99Mra4nadbOQFRRMSxPO1jD39A9oy3viO26JGQggKyF75A59SpE/dEVj97R1uvZkKDC/m6lRMQxYRrfdrNPsLWvvv1vhIvIjOmQ3e39vUrKCC5RWR/YeuAA8VLB8Va3x16W8/y9SsoIIqIuBaonRwsTE3sEy8dEmv9UOytT0JKCojyJBIrImCLzmJyif2wSOvV3tDZw739CgqIYsO5Qu3gCGFpv6o6sve1WBFRJOQob8eSAoJFxL0Ap3O0sHQgGuKYOOvHQF/rY70dSwqIIiLev2XMccLQ8VW1iXgxUkQOifW1pIAoIuJegdNAElJVK4sXT4iyXp0AXT3S37GkgFSHQyOeBQaFE4Wdk5qXT+59NU5EFAk5xd+zqIAcBY345k8xp+JPaxfx8q9jrJ8GPa1P9/csKiCz8GVGicgZwsys5uXNxctnxlg/M9rTogKiiIhnDQ4CJKT1aa0pXj4rwrrysZ4U3fN/NCCKiPiWGBBnCyvtf77lel+fHmFdWmlxjqFnWQHBIuKdQQXIXLP2vcG54o3zwq2fB/2s+wxdywpIPhGRuWbtKZjzxRsXhFu/MN7PsgKiiMisYHeAhLRXuuSX+zfB1quLoJsWCSksIIqI+GeIepktbAxM44sniIjMOSwhF1u6FhYQLCL+OdReZK7ZwG6JS8RbwSJyKfTSJCGlBSSXiMhcs4FNqXIh4/xQ65dhLy+39C0sIIqI+CdRuwG7PAdyf64Qb10U6qW8U2u40tS3sIBkEhGZazYoFHI/VbCIYAm5ytS3tIBgETHdv3Qgc8068kflpvVLw6xfDX1sZvcNlBaQY/HFBoqIzDXrKNMxTrw5J8z6othHk4QUFxBFREw3MAMACblm8F35f3ZumI9LQRevtXUuLSBy1buFZZZoEJlr1ikTI8VDY6CIYAk50Na5uIDkEJFxon/XjZScVrlGs4QYCz2sr7P1Li4giogsFmJDyvaFnW/LtavrQ6yvgj20SUh5AckgIkBCTut8/wbx9o0hHm4IHZzf2Lu4gCgiYponaiNzzboXzuXMY5CILAEdvMnYu7yAYBGxPQb3I3PNLuluIDeZBlQT3BT6V99s7F5eQNJFROaa9Wy+kpk8AdUE5ap8C6OEFBgQRUSMNzEVzDXrSZS6RTQIKAQ1Dbq3n7V7eQFRRMR4m1+hXLPevVcyGzRARLCELG/tXmBAsIgYH4QrlGsmKjbIqk1jrda3h97VS1v7FxiQVBGRuWaipsmtoom5muBO2DurhJQYEEVErLcxYJfntr1tZPFYs4jcBp1b0Xx1BQakOgnast7oy1wzWRdLJu6YM+ewhNxqvrgSA3IKtGW9j5FLtKCG9W9FI2M1wQWhb/Xt5osrMSCn44s2ishhouM6spGMubGa4BrYN7OEFBkQRURs30IgIXfIVnIzxZ0231aDrq1lv7gSA6KIiO1/WuaajQKlFe8SrYwisgF07W77tRUZECwitjsZmWu2OGomi26aqgkqP96J9msrMiApIiJzzeaiZvKvx1RNUOYotrBLSJkBSfgeAgm5B7W7VzQzVRPcCjoWICFlBkQREcs/tcw1G7UMavc70c4kIri8cMhllhkQLCKWL6LMNbsPNxTZn5ZqgspP9/6ASyszIPEiIq93f9xwVdHQUE0QZ9LPWy/g0soMiPJN3MjfU27ReQA3vF40vM1vHU9EPxhyaWUGRBGRA7z9ZDrOVOXre41oaRARvPPY71YHhQbkHGjO/1WUCWs7aE3lb8lbTTD+hztIoQHpg+a0b/sgMtdsG62p/GRcZ3m1wCs1QRJSakCU7+JDvn7ya7+l1vRh0dRbTRDf/G0WdGWFBkQRkY09vWSumf6j+r1o6xWROKe6KTUgWET29fSSuWb6swt4pvdUE1R+tupvEFJqQPqgPZ+IyFwzx9O9XHv3VBPEPoVJSLEBUb6Nt7h7SQlxLKLIDY7uw4qqi6FLvl9tD6UGRPm/Vu+ZWoBcM8fD/STR2FNNUK77+l0SFBsQLCKPOPvIXDPXbi6wSd6ZOaecGur50fZSbED6oEG3iMj5KWdmrExmd1YTvA56FCgh5QZEEZFHXX2khDjTSh4TzZ3VBGVZ7Ab3b1ZSbEAUEXnc0UMWJ3P/B6k1tTDzQ4cCJaTggGARecLRQ+aauVMTtapzGEVCnD9ZQLkB6YMWXSIic808FSBkaV9HNUG5/bQhVEIKDogiIrv
$iconBytes = [Convert]::FromBase64String($iconBase64)
$stream = [System.IO.MemoryStream]::new($iconBytes, 0, $iconBytes.Length)
$Form.Icon = [System.Drawing.Icon]::FromHandle(([System.Drawing.Bitmap]::new($stream).GetHIcon()))
$Form.Add_Shown({$Form.Activate()})
$Form.Size = '352, 142'
$Form.Topmost = $false
[void]$Form.ShowDialog()
[void]$stream.Dispose()
[void]$Form.Dispose()