我使用VS 2012,由于安装项目已从其中删除,因此我必须使用InstallUtil.exe。
我的Windows服务应用程序中没有projectInstaller类。我在命令提示符中运行:
installutil FilesMonitoringService.exe
我得到:
在命令行中运行以下命令进行安装:C:\Program Files\Microsoft Visual Studio 8\VC#>installutil "C:\Program Files\Microsoft Visual Studio 8\VC#\CSharpProjects\MyService\MyService\bin\Release\MyService.exe"。安装过程将会记录在日志文件 C:\Program Files\Microsoft Visual Studio 8\VC#\CSharpProjects\MyService\MyService\bin\Release\MyService.InstallLog 中,其中展示了程序 MyService.exe 的进度。安装成功后,Commit 阶段开始,同样会有进度记录在上述日志文件中。最终,程序的安装完成,并移除 InstallState 文件。好的,看起来一切都已经安装好了。但是!当我去任务管理器的服务页面时,我找不到我的服务。
可能的原因是什么?
提前感谢!
编辑: 我指出我没有projectInstaller类,因为如果我添加它(在设计师->添加安装程序)并运行installutil命令,我会得到:(近似翻译)
正在安装FilesMonitoringService... 在应用程序日志中创建EventLog FilesMonitoringService...
在这个设置阶段发生了异常。
System.Security.SecurityException:源未找到,但无法通过任何或所有日志记录找到。不可用日志:Security。
反冲阶段开始。
// 大量文本
反冲阶段已成功完成
执行设置组操作。 设置失败并执行回退。
因此,如果我将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)
{}
}
我需要在afterInstall方法中添加一些代码吗?我还在“属性”窗口中设置了以下属性:
serviceInstaller1: ServiceName -> FileMonitoringService, StartType -> Automatic
,serviceProcessInstaller1: Account -> LocalSystem
或者可以不使用projectInstaller实现吗?