Windows Management Framework 5.1公開

Windows Management Framework(以下WMF) 5.1がリリースされたそうで、記事を読んでいると、WMF5.0以降でDSCのサポートが強化されていたことに気が付く。

以前にPowershell DSCを使ってクライアントPCのソフトウェア資産管理をできないかと考えたことがあったのだが、Windows10以前のOSについてはPowershellからOSの環境設定を変更するようなコマンドレットが殆どサポートされておらず、結局あきらめたのだ。

いつの間にやらPackageManagementやらGet-NetworkSwitchEthernetPortなど、当時ほしかった機能が提供されているようだ。近いうちに、また試してみたいな。

Visual Studio 2015での.NET Core開発

.NET CoreはLinux環境で開発を・・・と思ったのだけど、結局使い慣れたWindowsに戻ってきました。.NET Core(Windows)の開発環境構築手順などを残しておきます。

1. .NET Core SDKのインストール
.NET DownloadsからWindows版の.NET Core 1.1 SDK – Installerをダウンロードしてインストールする。

2..NET Core tools preview for Visual Studioのインストール
.NET Core installation guideに従って.NET Core tools preview for Visual Studioをインストールします。これで新規プロジェクト作成時に.NET Coreプラットフォームを選択する事ができるようになります。

3. 新規にコンソールアプリケーションを作成して実行します。

といった感じで開発環境を作るだけならとっても簡単。ただし困りものなのが.NET Coreで使用できるライブラリの取捨選択・・・。
例えばHTTPクライアントを実装したい場合System.Net.WebClientは.NET Coreに対応しない。System.Net.Http.HttpClientは.NET Coreに対応するが個別にNuGetからダウンロードが必要。System.Data.SqlClientはNuGetからダウンロードすれば使えるけど、SqlDataAdapter クラスは存在しないのでDataSetを使うことは出来ない。AzureStorageの依存情報を見ると.NET Coreの記述が無いので使えないのかと思いきや、NuGetでダウンロードする前におまじないを書けば使えたりします。万事この調子なので慣れるまでは大分苦労しそうです。

Acrobat Readerのインストールに繰り返し失敗する

Adobe Readerの更新インストールなどを行っていると、再インストールに失敗することがあります。公式ページにはエラーになった場合は一度Adobe Readerをアンインストールするように記載されています。ですがアンインストールを行っても、再インストールに繰り返し失敗する場合があります。

そんな時には「Acrobat Reader Cleaner Tool」の出番です。インストールしていたAdobe readerのバージョンにあったCleaner Toolをダウンロードして管理者ユーザーで実行するとアンインストール時に残ってしまったゴミデータを削除してくれます。

その後、あらためてAdobe Readerの再インストールを試みてください。

参考:Acrobat Reader(Adobe Reader) および Acrobat 用の Cleaner Tool について(Windows)

.NET Coreを使ってみる(Ubuntu)

.NET CoreをUbuntuに導入して、現在Windows上で動作させているバッチ処理をLinuxに移すことを考えています。

.NET Coreのインストール方法はMicrosoftの.NET Core(https://www.microsoft.com/net/core#ubuntu)のページがわかりやすいです。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.0-preview2-003131

以上でインストールは完了。
Ubuntu 14.xの場合には設定するリポジトリが次のように変わるので注意して下さい。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'

Hellowordプロジェクトを作成して動作を確認します。
以下のコマンドで適当にディレクトリを作成して、新規プロジェクトを作成します。新規プロジェクトにはHellowordと表示する処理が既に記述されています。

mkdir hwapp
cd hwapp
dotnet new

後は以下のコマンドを実行すると、コンソールに”HelloWorld”と表示されます。

dotnet restore
dotnet run

続いて開発環境を用意します。Windows上で開発するか、Linux上で開発するか迷うところですが、デプロイ時のトラブルを避けるためにもターゲット環境上で開発することにします。
まずはVisual Studio Codeをインストールしていきます。Download Visual Studio Code(https://code.visualstudio.com/Download)からUbuntu用にdebファイルをダウンロードして以下のコマンドを実行します。

sudo dpkg -I code_1.5.3-1474533365_amd64.deb

Visual Studio Codeをインストールしたら、Visual Studio Codeを起動してメニューの「表示→拡張機能」から「C# for Visual Studio Code」をインストールしておきます。最後に「有効」ボタンを押すまで機能しないので、押し忘れないように。

.NET Coreのプロジェクトをビルドしたときに「1. The project has not been restored or restore failed – run `dotnet restore`~」等のエラーが表示される

.NET Coreのプロジェクトをビルドした時に下記のエラーが表示される場合があります。

error : Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes:
error : 1. The project has not been restored or restore failed - run `dotnet restore`
error : 2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section.
error : 3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries.

OS等の実行環境に依存するパッケージを追加している場合に表示されます。この場合にはproject.jsonに下記の様に「runtimes~」を追記し実行環境を明記します。

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.1"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  },

  "runtimes": {
    "win10-x64": {}
  }
}

参考:Project.json Reference

.Net CoreでWindowsAzure.Storageを使用する

WindowsAzure.Storageが参照しているODataLibが.NET Coreに対応していないため、そのままNuGetパッケージをインストールするとエラーになります。WindowsAzure.Storageを.NET Coreで使用するには、project.jsonの下記の部分を変更し「portable-net451+win8」を追加します。

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50",
        "portable-net451+win8"
      ]
    }
  }

その後、あらためてWindowsAzure.StorageをNuGetからインストールすると正常に導入できます。

参考:Microsoft Azure Storage SDK for .NET (8.0.1)

OfficeClickToRun.exeで障害が発生して、Officeアプリケーションが強制終了してしまう

Microsoft Excelで特定のファイルを開いたときに、Excelが何のメッセージも出さずに終了指定しまう現象が発生しました。イベントログを確認してみるとアプリケーションにはOfficeClickToRun.exeのアプリケーションエラーが、システムにはMicrosoft Office ClickToRun Serviceが不正終了したエラーが残されていました。

アプリケーションイベントログ

障害が発生しているアプリケーション名: OfficeClickToRun.exe、バージョン: 15.0.4641.1002、タイム スタンプ: 0x53db083a
障害が発生しているモジュール名: unknown、バージョン: 0.0.0.0、タイム スタンプ: 0x00000000
例外コード: 0xc0000005
障害オフセット: 0x00000000
障害が発生しているプロセス ID: 0x1db8
障害が発生しているアプリケーションの開始時刻: 0x01d23f9ff27ee023
障害が発生しているアプリケーション パス: C:\Program Files\Microsoft Office 15\ClientX86\OfficeClickToRun.exe
障害が発生しているモジュール パス: unknown

ClickToRunはOfficeの標準ではインストールされない機能を、必要になったときに非同期的にインストールする機能です。原因はわかりませんが標準ではインストールされない機能を用いたExcelファイルを開こうとすると、ClickToRun Serviceが差分機能のインストールを行おうとして、落ちているのではないかと推測されます。

幸いなことにOfficeの修復インストールを行う事で直りました。Officeの修復インストールの時にはプロダクトIDを求められる場合があるので、事前に用意しておきましょう。

WordPress 4.7のRSSフィードで日付のフォーマットエラーが発生する

RSSフィードのlastBuildDateの書式がおかしい。「月, 10日 1月 2017年~」って感じになる。コード上は日付を出力するときの書式指定は日本ロケールを意図していないにもかかわらず、日本ロケールの設定に基づいて日付を出力してしまうために、文字列が壊れるということらしい。

修正方法は以下のサイトを参考に・・・
WordPress4.7へアップデート後、Google Search ConsoleのサイトマップにRSSフィードを送信している場合、無効な日付エラーが発生している時の対処法。

Windows Essentials 2012がEOLを迎えました

Windows Essentials 2012が2017年01月10日でEOLを迎えました。もう新規にダウンロードすることもできなくなっています。

Windows 7ユーザーの中にはWindows Essentialsに付属するWindows Live Mailでお世話になっている方も多いと思います。不特定多数からのデータを受信する恐れがある電子メールクライアントで、サポート終了したソフトウェアを使い続けるのは非常に危険です。速やかに利用を止めて、Microsoft Outlookなり、Thunderbirdなり、他の電子メールクライアントに移行しましょう。