|
|
@ -1,3 +1,41 @@ |
|
|
|
$sa = new-object -comobject shell.application |
|
|
|
$fonts = $sa.NameSpace(0x14) |
|
|
|
gci $PSScriptRoot -i *.ttf, *.otf -Recurse | %{$fonts.CopyHere($_.FullName)} |
|
|
|
<# |
|
|
|
.SYNOPSIS |
|
|
|
Installs the provided fonts. |
|
|
|
.DESCRIPTION |
|
|
|
Installs all the provided fonts by default. The FontName |
|
|
|
parameter can be used to pick a subset of fonts to install. |
|
|
|
.EXAMPLE |
|
|
|
C:\PS> ./install.ps1 |
|
|
|
Installs all the fonts located in the Git repository. |
|
|
|
.EXAMPLE |
|
|
|
C:\PS> ./install.ps1 furamono-, hack-* |
|
|
|
Installs all the FuraMono and Hack fonts. |
|
|
|
.EXAMPLE |
|
|
|
C:\PS> ./install.ps1 d* -WhatIf |
|
|
|
Shows which fonts would be installed without actually installing the fonts. |
|
|
|
Remove the "-WhatIf" to install the fonts. |
|
|
|
#> |
|
|
|
[CmdletBinding(SupportsShouldProcess)] |
|
|
|
param( |
|
|
|
# Specifies the font name to install. Default value will install all fonts. |
|
|
|
[Parameter(Position=0)] |
|
|
|
[string[]] |
|
|
|
$FontName = '*' |
|
|
|
) |
|
|
|
|
|
|
|
$fontFiles = New-Object 'System.Collections.Generic.List[System.IO.FileInfo]' |
|
|
|
foreach ($aFontName in $FontName) { |
|
|
|
Get-ChildItem $PSScriptRoot -Filter "${aFontName}.ttf" -Recurse | Foreach-Object {$fontFiles.Add($_)} |
|
|
|
Get-ChildItem $PSScriptRoot -Filter "${aFontName}.otf" -Recurse | Foreach-Object {$fontFiles.Add($_)} |
|
|
|
} |
|
|
|
|
|
|
|
$fonts = $null |
|
|
|
foreach ($fontFile in $fontFiles) { |
|
|
|
if ($PSCmdlet.ShouldProcess($fontFile.Name, "Install Font")) { |
|
|
|
if (!$fonts) { |
|
|
|
$shellApp = New-Object -ComObject shell.application |
|
|
|
$fonts = $shellApp.NameSpace(0x14) |
|
|
|
} |
|
|
|
$fonts.CopyHere($fontFile.FullName) |
|
|
|
} |
|
|
|
} |