Omawari 1.4.0.0:ユーザーインターフェイスを手直ししました

執筆日時:

f:id:daruyanagi:20171006093047p:plain

内部的なところはあまりいじらず、今まで放置してたユーザーインターフェイスの改善(?)を行いました。あと、ぬるぽエラーをちまちま殺したり。

日ごろ使っていて不便なところから、互換性をとりながら少しずつ、ね。“個人的にはログの前後移動”や“既存のウィンドウがあれば新規に開かずアクティブにする”なんかの実装に達成感を感じています。たかだか数行ちょろっと書くだけでだいぶ便利になった。でも、そろそろコードの整理しないといろいろあかんなぁ。

ついでにアプリケーションアイコンを付けたけど、なんとこれ Office の丸パクリ。あんまりよくないので、時間があるときにクラウドワークスあたりでお願いしようかなって思ってます。

あと、ウチの環境はだんだんデータが肥大化してきていてパフォーマンスが顕著に落ちているので、次はクリーニング機能を付けつつ、データベースへの移行とかも考えようかなーみたな。データ構造ももっとシンプルにできたのなぁー……最初はもっと使い捨てのつもりで作ってたから、あんまり考えてなくてね。

github.com

Chocolatey パッケージ化の準備

実は Chocolatey から簡単にインストールできるようにといろいろ準備をしています。Chocolatey ってのは yum とか apt-get みたいにアプリを入れられるヤツの
Windows 版ですね。Chocolatey のパッケージは、

  • パッケージに全部ファイルを入れちゃう
  • リモートに置いてあるインストーラーを叩く

という2パターンで作れるので、最初は ZIP 版をベースに前者のパッケージを作っていたのですが、いろいろお約束事をクリアするのが面倒……ライセンスファイルとかいろいろもろもろ。後者はそういうのが要らないっぽいので、前バージョンから ClickOnce を用意しています。次回辺りはちゃんと申請を通したい。

https://yanagi.blob.core.windows.net/clickonce-omawari/setup.exe

ついでにスクリプトでリリースパッケージ(ZIP)と Azure Blob へのアップロードも PowerShell で行うようにしてみました。毎回手でやんの鬱陶しくなってきたしね。

# Add-AzureAccount

$StorageAccountName = "yanagi" $StorageAccountKey = "***" $ContainerName = "clickonce-omawari"

$binRootDirectory = "C:\Users\Hideto\GitHub\Omawari\Omawari\bin" $publishRootDirectory = "C:\Users\Hideto\GitHub\Omawari\Omawari\Publish"

function New-ReleaseArchive { [cmdletbinding()] param( $rootDirectory, $Force )

$releaseDirectory = Join-Path $rootDirectory "Release" $version = (Get-ItemProperty (Join-Path $releaseDirectory "Omawari.exe")).VersionInfo.FileVersion $destinationPath = Join-Path $rootDirectory Omawari-$version.zip Compress-Archive -Path $releaseDirectory/* -DestinationPath $destinationPath -Force:$Force Invoke-Item $rootDirectory }

function Upload-FileToAzureStorageContainer { [cmdletbinding()] param( $StorageAccountName, $StorageAccountKey, $ContainerName, $rootDirectory, $Force )

$context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey $container = Get-AzureStorageContainer -Name $ContainerName -Context $context

$container.CloudBlobContainer.Uri.AbsoluteUri if ($container) { $filesToUpload = Get-ChildItem $rootDirectory -Recurse -File

foreach ($x in $filesToUpload) { $targetPath = ($x.fullname.Substring($rootDirectory.Length + 1)).Replace("", "/")

Write-Verbose "Uploading $("" + $x.fullname.Substring($rootDirectory.Length + 1)) to $($container.CloudBlobContainer.Uri.AbsoluteUri + "/" + $targetPath)" Set-AzureStorageBlobContent -File $x.fullname -Container $container.Name -Blob $targetPath -Context $context -Force:$Force | Out-Null } } }

New-ReleaseArchive -rootDirectory <span class="synIdentifier">$binRootDirectory</span> -Force $true

Upload-FileToAzureStorageContainer -StorageAccountName <span class="synIdentifier">$StorageAccountName</span> -StorageAccountKey $StorageAccountKey -ContainerName <span class="synIdentifier">$ContainerName</span> -rootDirectory $publishRootDirectory ` -Verbose

リリースビルドや ClickOnce の発行も自動化すればいいのかもだけど、途中でコケたときにいろいろぐちゃぐちゃになるのが嫌だったので、もう少しいろいろわかってから挑戦しようかなって感じです。msbuild とかイマイチようわからんしね……(← いろいろエラーが出て困っている顔