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