3

3バッチファイルを使用してWindowsサービスをインストールしようとしています。これを「setup.bat」と呼びましょう。ファイル内には、次のコマンドがあります。

"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil" "MyService.exe"

バッチファイル(Windows7で管理者として実行)を実行すると、次のようになります。

インストールの初期化中に例外が発生しました:System.IO.FileNotFoundException:ファイルまたはアセンブリ'file:/// C:\ Win dows \ system32\MyService.exe'またはその依存関係の1つを読み込めませんでした。システムは指定されたファイルを見つけることができません。実際のサービスは "SomeRandomLocation\MyService.exe". batファイルにあります 。"SomeRandomLocation\setup.bat"

何が起こっている?「setup.bat」フォルダから強制的にインストールするにはどうすればよいですか?

これは動的に機能するはずです。任意のフォルダで意味します!

4

6 に答える 6

7

インストールプロセスについては何も知りません。ただし%~dp0、実行中のバッチファイルの絶対パスが表示されます。したがって、exeが同じフォルダにある場合は、次のことを試すことができます。

"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil" "%~dp0MyService.exe"
于 2012-05-01T12:20:20.687 に答える
2

私自身の使用法のために、私は小さな.batファイルを作成しました:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" %1

そして今、サービスをインストールしたいときは、.exeファイルを.batにドラッグするだけです。完璧に動作します:)

于 2015-06-24T07:28:41.317 に答える
1

.batファイルを作成する場合、作業ディレクトリは、.batを呼び出した場所に基づいています。.batファイルへのショートカットを作成した場合、作業ディレクトリは.batファイルの場所に基づいています。スクリプト内の相対パスはすべて、作業ディレクトリを基準にして解釈されます。

すべてのパスを変更しないようにするため。cd C:\Servicesbatファイルの先頭にを発行するだけです。

于 2012-05-01T07:31:21.597 に答える
0

作業ディレクトリをC:\ Servicesに設定してみましたか?

于 2012-05-01T07:29:59.360 に答える
0

これは古い質問ですが...

この問題を解決するのに役立ったのは、ログを使用してインストーラーを実行することです

例えば:

"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil" "MyService.exe" /LogToConsole /ShowCallStack

私の場合、元のエラーはあなたのようなものでした

FileNotFoundException

、しかし私が見つけたログで

SecurityException

解決策は、管理者として実行することでした

于 2018-06-14T05:49:44.220 に答える
-1

それは私のために働きます(もちろん)-それはMyService.exe含まれているフォルダで探します。
"c:\windows\system32"はの場所ではないinstallutilため、バッチファイルの早い段階で作業ディレクトリが何らかの形で変更されている可能性があります。

これがバッチファイル内の唯一のコマンドではないと仮定します。バッチファイルの最初に
追加し、installutilコマンドの直前に追加して、これが機能するかどうかを確認します 。set OLDDIR=%CD%
chdir /d %OLDDIR%

于 2012-05-01T12:05:43.273 に答える