Operations Lab.

Archive for 4月 2016

Open Live Writer に Syntax Highlight プラグインを追加する

leave a comment »

※このポストは、過去のポスト「Windows Live Writer から PowerShell のコードを投稿」のアップデート版です。

※とりあえずプラグインの設定だけしたい、という方は、末尾にダウンロード・インストールを行うスクリプトを掲載しています。

Windows Live Writer から Open Live Writer へ

ブログツールとして Windows Live Writer を使用している(いた)方も多いと思いますが、Windows Essentials 2012 以降、更新が停止しています。また、Windows Essentials 2012 スイートは 2017 年 1 月 10 日でサポート終了となり、それ以降はダウンロードできなくなります。

ws2012rn

上記にも記載されている通り、Windows Live Writer はオープンソース化され、現在はオープンソースプロジェクトとして開発が進められています。

Open Live Writer のダウンロードとインストール

Open Live Writer は以下の URL からダウンロードできます。

インストール時に、ブログへの接続情報が必要です。(インストーラーの中で 1 つ目のブログの設定が必須となっているため、バイナリのインストールだけ先に行うことはできません。)

アカウント(接続先ブログ)の追加(2 つ目以降)は、インストール後に実施できます。現在のところ、Wordpress など複数のサービスに対応しています。

olw2016

なお、Windows Live Writer は日本語版がありましたが、Open Live Writer は今のところ日本語表示には対応していません。

Open Live Writer へ Syntax Highlight Plug-in を追加

PowerShell など、コードを WordPress へ投稿する際には、Syntax Highlight を設定すると思いますが、Syntax Highlight Plug-in を使用すると Open Live Writer 上で手軽にコードの貼り付けが行えます。

Windows Live Writer 向けの Version 1.x 系と、Open Live Writer 向けの Version 2.x 系が公開されています。Version 2.x 系は、現在 2.0.0 BETA がダウンロード可能です。

プラグインのインストール・設定方法

インストール方法は以下の 2 種類です。

  1. Open Live Writer デフォルトのプラグイン配置パスに、ダウンロードしたプラグインファイル(中身)を配置(コピー)
  2. 専用(個別)のプラグインフォルダーにダウンロードしたプラグインファイル(中身)をコピーし、レジストリ上で追加のプラグインフォルダーとしてパスを設定

1 番目の方法は、Open Live Writer のインストールパス配下にプラグインファイルをコピーする方法です。大変お手軽ですが、インストールパスにはバージョン情報が含まれており、Open Live Writer のバージョンアップに伴いパスが変更されるため、Open Live Writer をバージョンアップする際には、ファイルを再度コピー(移動)する必要があります。

デフォルトのパス
C:\Users\<UserName>\AppData\Local\OpenLiveWriter\app-<Version>\Plugins

2 番目の方法は、自分の好きなフォルダーをプラグインフォルダーに設定できます。レジストリの以下のパスに、適当な名前で読み込むパスを値に設定すれば、追加でプラグインの読み込みを行ってくれます。

HKCU\SOFTWARE\OpenLiveWriter\PluginAssemblies

名前は、他のキー名と重複しなければ何を入れても問題ありません。値に設定された文字列をパスとして読み込みます。

正常にプラグインがロードできると、リボンの Insert にプラグインのボタンが表示されます。

olw2016-2

面倒なので

プラグインを自動でダウンロードし、上記 2 番目の方法でインストールするスクリプトを作成しました。

#Requires -Version 4
$ErrorActionPreference = "Stop"

$installsource = "https://richhewlett.blob.core.windows.net/blogdownloads/SyntaxHighlight_WordPressCom_OLWPlugIn_V2.0.0.zip"
$installtarget = $env:LOCALAPPDATA + "\OpenLiveWriter Additional Resources\Plugins"
$regkey = "HKCU:\SOFTWARE\OpenLiveWriter\PluginAssemblies"
$dllname = "SyntaxHighlight_WordPressCom_OLWPlugIn.dll"

$logbase = $env:TEMP
$logprefix = [System.IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name)
if($logprefix -eq "") {
    $logprefix = "powershell"
}
$logts = Get-Date -Format yyyyMMddHHmmss
$logname = "${logbase}\${logprefix}-${logdate}.log"

function Log([string] $msg) {
    $ts = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $output = "${ts} ${msg}"
    $output | Write-Output
    $output | Out-File -FilePath $logname -Encoding utf8 -Append
}

$message = "このスクリプトは Open Live Writer 用の SyntaxHighlightPlugin をインストールします`r`n続行しますか?"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "インストールを実行します"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "インストールを中止します"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0) 
if($result -eq 1) {
    exit 0
}

Log($MyInvocation.MyCommand.Path)
Log("インストールを開始します - {0}" -f $env:COMPUTERNAME)

Log("構成をチェックしています")
if(!(Test-Path $regkey)) {
    Log("レジストリー キー {0} が存在しません" -f $regkey)
    Log("Open Live Writer がインストールされていないか、正しく構成されていません")
    $message = "続行しますか?"
    $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "現状の構成にかかわらずインストールを続行します"
    $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "インストールを中止します"
    $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
    $result = $host.ui.PromptForChoice($title, $message, $options, 0)
    switch($result) {
        0 { New-Item -Path $regkey -Force | Out-Null }
        1 { exit 0 }
    }
}

$uri = New-Object System.Uri($installsource)
$downloadfile = $env:TEMP + "\" + (Split-Path $uri.AbsolutePath -Leaf)
Log("インストールファイルをダウンロードします")
Log("Download from : {0}" -f $installsource)
Log("Save to : {0}" -f $downloadfile)
Invoke-WebRequest -Uri $uri -UseBasicParsing -OutFile $downloadfile

Log("プラグインをインストールします")
Log("Install to : {0}" -f $installtarget)
if(!(Test-Path $installtarget)) {
    New-Item -ItemType Directory -Path $installtarget -Force | Out-Null
}
Expand-Archive -Path $downloadfile -DestinationPath $installtarget -Force

Log("プラグインを Open Live Writer に登録します")
New-ItemProperty -Path $regkey -Name SyntaxHighlightPlugin -Value ($installtarget + "\" + $dllname) -Force | Out-Null

$p = Get-Process -Name OpenLiveWriter -ErrorAction SilentlyContinue
if($p -ne $null) {
    Log("Open Live Writer が起動中です")
    Log("全ての Open Live Writer プロセスを終了後、再度 Open Live Writer を起動してください")
} 

Log("インストールが完了しました")
exit 0

GitHub からダウンロードできますので、利用されたい方はご自由にどうぞ。なお、動作や実行結果に関する保証などはありませんので、自己責任でお願いします。

なお、実行の際、引数などはありませんので、ダウンロードしたファイルを配置したフォルダーへ移動して、

PS> .\Install-OLWSyntaxHighlightPlugIn.ps1

で OK です。

※スクリプトの実行が制限されている場合は、スクリプトの実行ポリシーの変更が必要です。

広告

Written by kazu

2016/04/16 at 00:00

カテゴリー: PowerShell

Tagged with , ,