web-dev-qa-db-ja.com

Windowsサービスをインストールできません

Visual Studio 2010と.N ُ ET 4.0を使用して、非常にシンプルなウィンドウサービスを作成しました。

このサービスには、インストーラーが追加されている以外、デフォルトのWindowsサービスプロジェクトから追加された機能はありません。

ドメイン内の開発ボックスまたは他のWindows 2008 R2マシンで「installutil.exe appName.exe」を実行すると、Windowsサービスは問題なくインストールされます。

カスタマーサイトでこれと同じことをしようとすると、次のエラーでインストールに失敗します。

Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or Assembly 'file:///C:\TestService\WindowsService1.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).

このソリューションには1つのプロジェクトのみがあり、依存関係は追加されていません。

私たちの環境の複数のマシンと、お客様の2つのマシンで試してみました。マシンはすべてWindows 2008 R2で、どちらも新規インストールです。 1台のマシンには.net 2.0と.net 4.0のみがあります。他の.net 2、3、3.5、4。

私は各マシンのローカル管理者です。

64ビットインストーラーも試しましたが、次のエラーが発生するため、32ビットのインストーラーを使用すると思います。 System.BadImageFormatException

任意のガイダンスをいただければ幸いです。ありがとう。

72
Matthew Dalton

このエラーのもう1つの理由は、Windowsが信頼できないと見なすソースからプログラムをコピーしたことです。ファイルのプロパティを右クリックして選択した後、「ブロック解除」をクリックしてアセンブリのブロックを解除できます。

272
doublehelix

ファイルのブロックを解除する必要があります。または少なくともそれは私の修正です。

Powershellで「一括」ブロック解除するには

get-childitem *.* | Unblock-File 

またはDOSの場合:

FOR %a in (*.*) do (echo.>%a:Zone.Identifier)
14
OzBob

この問題は、ネットワーク上の場所からサービスをインストールしようとしたために発生しました。 installutilを使用する前にservice.exeをローカルマシンにコピーすると、問題が修正され、サービスが正常にインストールされました。

9
Brandon Ward

別のコンピューターから実行可能ファイルをコピーすると、Windowsは保護のためにそれらのフラグをマークします。 実行可能ファイルを右クリック プロパティでクリックします ブロック解除。フラグがクリアされ、サービス実行可能ファイルがインストールされます。

7
Sanjay Sharma

投票することを忘れないでください... SC次のように試してください:1.コマンドラインを開きます。 。

2
user437631

私も同じ問題に直面しました。私の場合、私はユーティリティの新しいバージョンを展開していたので、新しいexe、installogファイルをコピーしてから、utilsをアンインストールしようとしました。

古いバージョンをコピーして、utilsをアンインストールし、新しいバージョンをコピーして、再度インストールしました。とにかく、それは私が最初に従ったべき論理的なシーケンスです。

1
OnceBitten

開発者コマンドでこのコマンドを使用できますPrompt run administrator

installutil C:\...\MyService\bin\Debug\MyService.exe
1
Oguzhan KIRCALI

私はこの問題を抱えており、.netバージョンのutilと私のサービスの間で異なる
iを.net 2で使用し、.net4でサービスをビルドします

1
Saeed-rz

上記の@doublehelixの応答に従って、この答えはWindowsで実行されているサービスの問題に関連する私の特定の問題の軌道に乗せましたXP(Unblockは私が見つけることができるセキュリティタブのオプションではありません)。私の場合、実際の物理ディスクは同じでしたが、別のドライブからサービスを実行しようとしていました(つまり、Windowsと同じドライブではなく、プログラムファイルの下ではありません)。根本的な問題(@doublehelixの答えに対して「コメント」するつもりでしたが、現在の状態ではできないようです)。

0
The Senator

私の場合、このエラーは、サービスexeを渡すのではなく、誤ってサービスを含むディレクトリをInstallUtilに渡すことによって発生しました。

明らかにヒューマンエラーですが、エラーメッセージは非常に誤解を招くものでした。

0