/winstall

Automating something I do at most once every year

Primary LanguagePowerShell

Winstaller

Automating something I do at most once every year

Goals

  • Operations should be idempotent - in that you may run the script as many times as you like in setting up or resetting your machine
  • Errors should be actionable, but resolved programmatically

Todo

  • dotfiles
    • hard link
    • ask force overwrite?
    • split git file
    • split stack vs core profile
    • spellcheck dictionary
    • Download necessary assets (git repo)
      • Icons
      • Wallpapers
  • windows explorer
    • Enable View Hidden files
    • Disable recent in Quick Access
  • set chrome as default browser
  • winget
    • only install new apps
    • winget upgrade
    • download winget if not present
  • bootstrap
    • if you don't have ps, download via bat or sh
  • windows
    • increase thumbnail size
    • taskbar tweaker
  • apps
  • scripting
    • out-menu so we don't accidentally run anything
    • stop script if sub-error
    • use test checks
    • Add requires reboot and instructions on create admin account
    • todo - prompt for values or set via config?
  • trackpad
    • invert scrolling
    • three finger tap -> middle click
  • VS Code - Powershell Integrated Console
    • Use PS7
  • Document dependendencies (i.e. Font relies on Scoop)

Notes

$regKeyUrl = "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\{0}\UserChoice"
$regKeyHttp  = $regKeyUrl -f 'http'
$regKeyHttps = $regKeyUrl -f 'https'

$regKeyFile = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\{0}\UserChoice"
$regKeyHtm  = $regKeyFile -f '.htm'
$regKeyHtml = $regKeyFile -f '.html'


Set-ItemProperty $regKeyHttp  -name ProgId ChromeHTML
Set-ItemProperty $regKeyHttps -name ProgId ChromeHTML
Set-ItemProperty $regKeyHtm  -name ProgId ChromeHTML
Set-ItemProperty $regKeyHtml -name ProgId ChromeHTML

Get-ItemProperty $regKeyHttp
Get-ItemProperty $regKeyHttps
Get-ItemProperty $regKeyHtm
Get-ItemProperty $regKeyHtml
<Association Identifier=".htm" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier=".html" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="http" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />
<Association Identifier="https" ProgId="MSEdgeHTM" ApplicationName="Microsoft Edge" />

<Association Identifier=".htm" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
<Association Identifier=".html" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
<Association Identifier="http" ProgId="ChromeHTML" ApplicationName="Google Chrome" />
<Association Identifier="https" ProgId="ChromeHTML" ApplicationName="Google Chrome" />