在特定计算机上安装Windows服务失败?

时间:2013-10-01 10:00:17

标签: .net windows batch-file windows-services

我有一个安装了以下代码(bat文件)的Windows服务:

@ECHO OFF

REM The following directory is for .NET 4.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%

echo Installing IEPPAMS Win Service...
echo ---------------------------------------------------
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil "%~dp0MyApp5.WindowsService.exe"
echo ---------------------------------------------------
pause
echo Done.

这几乎适用于所有运行Windows Server的计算机。有时bat文件必须重新保存为ANSI或UTF8,但在此之后它将在大多数情况下工作。

但是我跑进了Windows Server 2012计算机,在使用install.but fil时遇到以下异常:

Installing IEPPAMS Win Service...
---------------------------------------------------
Microsoft (R) .NET Framework Installation utility Version 4.0.30319.18010
Copyright (C) Microsoft Corporation.  All rights reserved.


Running a transacted installation.

Beginning the Install phase of the installation.
See the contents of the log file for the C:\MyAppService54\MyApp5.WindowsService
.exe assembly's progress.
The file is located at C:\MyAppService54\MyApp5.WindowsService.InstallLog.
Installing assembly 'C:\MyAppService54\MyApp5.WindowsService.exe'.
Affected parameters are:
   logtoconsole =
   assemblypath = C:\MyAppService54\MyApp5.WindowsService.exe
   logfile = C:\MyAppService54\MyApp5.WindowsService.InstallLog
Unable to create an instance of the MyApp5.WindowsService.ProjectInstaller insta
ller type.
System.Reflection.TargetInvocationException: Exception has been thrown by the ta
rget of an invocation.
The inner exception System.NullReferenceException was thrown with the following
error message: Object reference not set to an instance of an object..

An exception occurred during the Install phase.
System.InvalidOperationException: Unable to create an instance of the MyApp5.Win
dowsService.ProjectInstaller installer type.
The inner exception System.Reflection.TargetInvocationException was thrown with
the following error message: Exception has been thrown by the target of an invoc
ation..
The inner exception System.NullReferenceException was thrown with the following
error message: Object reference not set to an instance of an object..

The Rollback phase of the installation is beginning.
See the contents of the log file for the C:\MyAppService54\MyApp5.WindowsService
.exe assembly's progress.
The file is located at C:\MyAppService54\MyApp5.WindowsService.InstallLog.
Rolling back assembly 'C:\MyAppService54\MyApp5.WindowsService.exe'.
Affected parameters are:
   logtoconsole =
   assemblypath = C:\MyAppService54\MyApp5.WindowsService.exe
   logfile = C:\MyAppService54\MyApp5.WindowsService.InstallLog
Unable to create an instance of the MyApp5.WindowsService.ProjectInstaller insta
ller type.
System.Reflection.TargetInvocationException: Exception has been thrown by the ta
rget of an invocation.
The inner exception System.NullReferenceException was thrown with the following
error message: Object reference not set to an instance of an object..
An exception occurred during the Rollback phase of the System.Configuration.Inst
all.AssemblyInstaller installer.
System.InvalidOperationException: Unable to create an instance of the MyApp5.Win
dowsService.ProjectInstaller installer type.
The inner exception System.Reflection.TargetInvocationException was thrown with
the following error message: Exception has been thrown by the target of an invoc
ation..
The inner exception System.NullReferenceException was thrown with the following
error message: Object reference not set to an instance of an object..
An exception occurred during the Rollback phase of the installation. This except
ion will be ignored and the rollback will continue. However, the machine might n
ot fully revert to its initial state after the rollback is complete.

The Rollback phase completed successfully.

The transacted install has completed.
The installation failed, and the rollback has been performed.
---------------------------------------------------
Press any key to continue . . .

我看到它得到一个NullRef异常,但我不明白这个?它在所有其他计算机上运行良好。我知道这个特定的环境有一些额外的安全规则,可能是这个吗?

2 个答案:

答案 0 :(得分:0)

通过启用资源管理器中的所有安全设置并重新下载它可以正常工作。我不确定Explorer如何能够根据安全性更改zip文件的内容。我知道阻塞/解阻问题,但事实并非如此。

答案 1 :(得分:0)

从命令promt:

中试试这个
>sc create "servicenameABC" binPath="path to your service location"

现在转到services.msc你可以找到那里列出你的服务(servicenameABC), 希望它有所帮助..