Windowsサービスアプリケーションをデプロイする方法

C#

VisualStudio で作成した Windowsサービスアプリケーションを、運用環境に配布する方法に手間取ったので、備忘録として残しておきます。

はじめに

業務でWindowsサービスアプリを作成しました。
作成方法は、こちらのチュートリアルを見て Visual Studio では Windowsサービスアプリケーションを参照しました。
ここでは、Windowsサービスアプリの作り方については省略します。

概要

ここでは、手間取った以下の点に絞って記載します。

  • デプロイ用のバイナリの生成方法
  • 運用環境でのサービスのインストール方法

前提

運用環境は以下の通りです。

  • Windows 10 IoT (Windows 10 Enterpricse LTSC)
  • 64bit
  • インストール済みの.NET Framework のバージョンは 4.5.1

デプロイ用のバイナリの生成方法

問題点

VisualStudio で作成するアプリケーションを運用環境にデプロイするためには、通常は「発行(publish)」でバイナリを生成すると思います。
しかし、今回はWindowsサービスアプリケーションで発行を行ったものをインストールしようとすると、以下のようなエラーが発生しました。

  • ClickOnce でのインストーラーをpublishしました
  • インストール実行すると、エラーが出ます
  • エラーの詳細を見ると、 System.Deployment.Application.DeploymentDownloadException (不明な subtype) という記述があります。

解決方法

「発行(publish)」でバイナリを生成する方法が間違っていたようでした。
単純に、VisualStudio上でビルドを行って、それで生成されたもの (.\bin\Release\~) をフォルダごと運用環境にコピーしてインストールすると動作しました。

ただし、これって運用環境に依存する気がするので、あまり良い解決方法ではない気がします・・・

運用環境でのサービスのインストール方法

解決方法

サービスをインストールするためには、 installutil.exe が必要です。
運用環境に既に .NET Framework が入っている場合は、C:\Windows\Microsoft.NET\Framework\XXXXXXXXX に入っているので、これを使えます。

# インストール方法
> installutil インストールしたいサービスのexeパス

# ちなみにアンインストール方法
> installutil インストールしたいサービスのexeパス /u

これを実行してインストールすると、サービスに登録されました。

その他注意したいこと

Windowsサービスアプリが参照できる環境変数は、デフォルトではシステム環境変数です。もしユーザー環境変数を使用したいならば、サービスのプロパティから実行するユーザーを指定してやる必要があります。

コメント

タイトルとURLをコピーしました