zoukankan      html  css  js  c++  java
  • windows安装

    using System;
    using System.Collections.Generic;
    using System.Configuration.Install;
    using System.IO;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using Shumi.DataStats.Tasks;

    namespace Shumi.DataStats.TaskCenter
    {
     static class Program
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      static void Main(params string[] args)
      {
       if (args.Length != 0)
       {
        RunCommands(args);
       }
       else
       {
        RunServices();
       }
      }

      static void RunCommands(String[] args)
      {
       String firstArg = args[0].ToLower();
       if (firstArg == "/i")
       {
        Installer installer = GetInstaller();
        Dictionary<Object, Object> stateSaver = new Dictionary<Object, Object>();
        installer.Install(stateSaver);
        foreach (var kv in stateSaver)
        {
         Print(stateSaver, 0);
        }
       }
       else if (firstArg == "/u")
       {
        Installer installer = GetInstaller();
        installer.Uninstall(null);
       }
       else if (firstArg == "/start")
       {
        try
        {
         ServiceController sc = new ServiceController("Shumi.DataStats.TaskCenter");
         if (sc.Status == ServiceControllerStatus.Stopped)
         {
          sc.Start();
          TraceUtility.Write("服务启动成功。");
         }
         else
         {
          Console.WriteLine("已经启动或无法启动。");
         }
        }
        catch (Exception ex)
        {
         Console.WriteLine(ex.Message);
        }
       }
       else if (firstArg == "/stop")
       {
        try
        {
         ServiceController sc = new ServiceController("Shumi.DataStats.TaskCenter");
         if (sc.Status == ServiceControllerStatus.Running)
         {
          sc.Stop();
          TraceUtility.Write("服务停止成功。");
         }
         else
         {
          Console.WriteLine("已经停止或无法停止。");
         }
        }
        catch (Exception ex)
        {
         Console.WriteLine(ex.Message);
        }
       }
       else if (firstArg == "/c" || firstArg == "/console")
       {
        ServiceMain.RunBusiness();
       }
       else if (firstArg == "/m")
       {
        TaskStatusMonitor();
       }
       else
       {
        Console.WriteLine("参数不正确:" + firstArg);
       }
      }

      static void RunServices()
      {
       ServiceBase[] ServicesToRun;
       ServicesToRun = new ServiceBase[]
        {
         new ServiceMain()
        };
       ServiceBase.Run(ServicesToRun);
      }

      static Installer GetInstaller()
      {
       ProjectInstaller installer = new ProjectInstaller();
       installer.BeforeInstall += new InstallEventHandler((obj, state) => { Console.WriteLine("服务正在安装......"); });
       installer.AfterInstall += new InstallEventHandler((obj, state) => { Console.WriteLine("服务安装完成!"); });
       installer.BeforeUninstall += new InstallEventHandler((obj, state) => { Console.WriteLine("服务正在卸载......"); });
       installer.AfterUninstall += new InstallEventHandler((obj, state) => { Console.WriteLine("服务卸载完成!"); });


       string logFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "installer.log");
       string path = string.Format("/assemblypath={0}", System.Reflection.Assembly.GetExecutingAssembly().Location);
       string[] cmd = { path };
       InstallContext context = new InstallContext(logFile, cmd);
       installer.Context = context;

       return installer;
      }

      static void Print(IDictionary<Object, Object> stateSaver, int tabIndent)
      {
       foreach (var kv in stateSaver)
       {
        if (kv.Value is IDictionary<Object, Object> && tabIndent < 5)
        {
         Print(kv.Value as IDictionary<Object, Object>, tabIndent + 1);
        }
        else
        {
         var tabs = "";
         while (tabIndent-- > 0)
         {
          tabs += "\t";
         }
         Console.WriteLine(tabs + kv.Key + "===" + kv.Value);
        }
       }
      }

      static void TaskStatusMonitor()
      {
       TaskControlClient taskControlClient = new TaskControlClient();
       Console.WriteLine("任务状态监视工具!\r\n");

       PrintTaskStatus(taskControlClient);

       while (true)
       {
        Console.WriteLine();
        String cmd = Console.ReadLine().ToLower();
        String[] args = cmd.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        String firstArg = "";
        if (args.Length != 0)
        {
         firstArg = args[0];
        }
        if (firstArg == "list" || firstArg == "")
        {
         PrintTaskStatus(taskControlClient);
        }
        else if (firstArg == "start" && args.Length > 1)
        {
         String name = args[1];
         TaskInfo taskInfo = taskControlClient.GetTaskInfo(name);
         if (taskInfo == null)
         {
          Console.WriteLine("对应的名称的任务不存在。");
         }
         taskControlClient.StartTask(name);
        }
        else if (firstArg == "stop" && args.Length > 1)
        {
         String name = args[1];
         TaskInfo taskInfo = taskControlClient.GetTaskInfo(name);
         if (taskInfo == null)
         {
          Console.WriteLine("对应的名称的任务不存在。");
         }
         taskControlClient.StopTask(name);
        }
        Console.WriteLine();
       }
      }

      static void PrintTaskStatus(TaskControlClient taskControlClient)
      {
       var list = taskControlClient.GetAllTaskInfos();
       Console.WriteLine("{0}\n\t\t{1,-8}{2,-10}{3,-24}{4,-24}",
            "Name",
            "Status",
            "Interval",
            "LastRunStartTime",
            "LastRunEndTime");
       foreach (var item in list)
       {
        String format = "{0}\n\t\t{1,-5}{2,-10}{3,-24}{4,-24}";
        Console.WriteLine(format,
             item.Name,
             item.Status,
             item.Interval,
             item.LastRunStartTime.ToString("yyyy-MM-dd HH:mm:ss"),
             item.LastRunEndTime.ToString("yyyy-MM-dd HH:mm:ss"));
       }
      }
     }
    }

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/mylife_001/p/2219200.html
Copyright © 2011-2022 走看看