我使用的是VS 2012,因为已经从中删除了安装项目,所以我必须使用InstallUtil.exe。
我的Windows服务应用程序中没有projectInstaller类。我在命令提示符下运行:
installutil FilesMonitoringService.exe
我明白了:
C:\ Program Files \ Microsoft Visual Studio 8 \ VC#> installutil“C:\ Program Files \ Mic rosoft Visual Studio 8 \ VC#\ CSharpProjects \ MyService \ MyService \ bin \ Release \ MyServ ice.exe” Microsoft(R).NET Framework安装实用程序版本2.0.50727.42 版权所有(c)Microsoft Corporation。保留所有权利。
运行事务安装。
开始安装的安装阶段。 请参阅C:\ Program Files \ Microsoft Visual Studi的日志文件的内容 o 8 \ VC#\ CSharpProjects \ MyService \ MyService \ bin \ Release \ MyService.exe程序集 进展。 该文件位于C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProj ECTS \为MyService \为MyService \ BIN \发布\ MyService.InstallLog。 安装程序集'C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjec TS \为MyService \为MyService \ BIN \发布\ MyService.exe”。 受影响的参数是: logtoconsole = assemblypath = C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ 为MyService \为MyService \ BIN \发布\ MyService.exe logfile = C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ MySer 副\的MyService \ BIN \发布\ MyService.InstallLog 没有找到具有RunInstallerAttribute.Yes属性的公共安装程序 在C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ MyService \ MyService \ bin \ Release \ MyService.exe程序集。
安装阶段成功完成,提交阶段正在开始。 请参阅C:\ Program Files \ Microsoft Visual Studi的日志文件的内容 o 8 \ VC#\ CSharpProjects \ MyService \ MyService \ bin \ Release \ MyService.exe程序集 进展。 该文件位于C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProj ECTS \为MyService \为MyService \ BIN \发布\ MyService.InstallLog。 提交程序集'C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjec TS \为MyService \为MyService \ BIN \发布\ MyService.exe”。 受影响的参数是: logtoconsole = assemblypath = C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ 为MyService \为MyService \ BIN \发布\ MyService.exe logfile = C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ MySer 副\的MyService \ BIN \发布\ MyService.InstallLog 没有找到具有RunInstallerAttribute.Yes属性的公共安装程序 在C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjects \ MyService \ MyService \ bin \ Release \ MyService.exe程序集。 删除InstallState文件,因为没有安装程序。
提交阶段已成功完成。
已完成交易安装。
C:\ Program Files \ Microsoft Visual Studio 8 \ VC#>
确定,似乎已经安装了所有内容。但!当我到任务管理器进入服务页面时,我找不到我的服务。
可能是什么原因?
提前致谢!
编辑:我指出我没有projectInstaller类,因为如果我添加它(在设计器中 - >添加安装程序)并运行installutil命令我得到:(近似翻译)
安装FilesMonitoringService ... 在log jornal Application中创建EventLog FilesMonitoringService ...
在此设置阶段发生了异常。
System.Security.SecurityException:找不到源,但找不到任何或所有log jornals。没有jornals:安全。
反冲阶段开始。
//很多文字
后坐阶段已经成功
执行设置组操作。 设置失败并执行了反冲。
因此,如果我将projectInstller添加到我的Windows服务中,它肯定无法使用installUtil进行安装 这是生成的代码:
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{}
private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
{}
}
Mabby我需要在AfterInstall方法中加入一些代码吗?我还在properties
窗口设置了这个属性:
serviceInstaller1:ServiceName - > FileMonitoringService,StartType - >自动
serviceProcessInstaller1:帐户 - >本地系统
或者可以在没有projectInstaller的情况下实现吗?
答案 0 :(得分:18)
好的,有几件事情:
1)您需要projectInstaller
2)YourProject - >性能;启动项目 - > YourProject.Program
3)建造
4)“以管理员身份运行”命令提示符!
现在一切正常。
答案 1 :(得分:1)
我现在没有VS2012的副本来测试它,但我相信你的问题与
有关。我的Windows服务应用程序中没有projectInstaller类
一部分。
来自msdn:
安装组件在系统上注册单个服务 它正在安装它并让服务控制管理器 知道服务存在
答案 2 :(得分:0)
这似乎微不足道,但在编写installutill参数时请仔细检查,因为您可能会将服务的exe文件与引用项目(没有服务安装程序)的编译生成的另一个exe文件混淆并制作它失败。