安装一个自开发的 Windows 服务

9 浏览
0 Comments

安装一个自开发的 Windows 服务

我正在尝试部署我写的一个服务。这是InstallLog文件:

正在安装程序集 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'。
受影响的参数是:
   logtoconsole = 
   assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
   logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
正在安装服务TweetLinkService...
在应用程序日志中创建EventLog源TweetLinkService...
正在回滚程序集 'c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe'。
受影响的参数是:
   logtoconsole = 
   assemblypath = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.exe
   logfile = c:\Users\brwatson\Development\Projects\TweetLinks\TweetLinkQueue\bin\Debug\TweetLinkQueue.InstallLog
为源TweetLinkService恢复事件日志到先前状态。
在System.Diagnostics.EventLogInstaller安装程序的回滚阶段发生了异常。
System.Security.SecurityException:找不到源,但无法搜索部分或所有事件日志。无法访问的日志:Security。
在安装的回滚阶段发生了异常。此异常将被忽略,回滚将继续进行。但是,回滚完成后,机器可能无法完全恢复到初始状态。

如您所见,它不起作用。我不确定该如何继续,Bing和Google也无法解决。我已将serviceProcessInstaller1的帐户设置为LocalSystem。代码编译没有问题,但现在我想运行它...有什么想法吗?我是我的电脑上的管理员,并且在VS2008管理控制台中运行以下命令:

InstallUtil TweetLinkQueue.exe

更新后添加/ShowCallStack选项

调用堆栈

在安装阶段发生异常。
System.Security.SecurityException:找不到源,但无法搜索部分或所有事件日志。无法访问的日志:Security。
   在System.Diagnostics.EventLog.FindSourceRegistration(String source, String m
achineName, Boolean readOnly)
   在System.Diagnostics.EventLog.SourceExists(String source, String machineName
)
   在System.Diagnostics.EventLogInstaller.Install(IDictionary stateSaver)
   在System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   在System.ServiceProcess.ServiceInstaller.Install(IDictionary stateSaver)
   在System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   在System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   在System.Configuration.Install.AssemblyInstaller.Install(IDictionary savedSt
ate)
   在System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   在System.Configuration.Install.TransactedInstaller.Install(IDictionary saved
State)

这是构造函数:

public TweetLinkService()
{
    InitializeComponent();
    if (!EventLog.SourceExists("TweetLinkQueue"))
    {
        EventLog.CreateEventSource("TweetLinkQueue", "Log");
        TweetLinksLog.Source = "TweetLinkQueue";
        TweetLinksLog.Log = "Log";
        TweetLinksLog.WriteEntry("Log Created!");
    }
}

更新后添加入口点:

namespace TweetLinkQueue
{
    static class Program
    {
        /// 
        /// 程序的主入口点。
        /// 
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new TweetLinkService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

0