使用C#代码安装 Windows 服务(不使用InstallUtil) (转帖)

 转自大豆男生

 

using
 System;

using
 System.Collections.Generic;

using
 System.ServiceProcess;

using
 System.Configuration.Install;


static
 
class
 Program
{
    

///
 
<summary>

    

///
 应用程序的主入口点。
    

///
 
</summary>


    [STAThread]
    

static
 
void
 Main(
string
[] args)
    {
        

//
 运行服务


        
if
 (args.Length 
==
 
0
)
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun 

=
 
new
 ServiceBase[] { 
new
 MyService1() };
            ServiceBase.Run(ServicesToRun);
        }
        

//
 安装服务


        
else
 
if
 (args[
0
].ToLower() 
==
 

/i

 
||
 args[
0
].ToLower() 
==
 

-i

)
        {
            

try

            {
                

string
[] cmdline 
=
 { };
                

string
 serviceFileName 
=
 System.Reflection.Assembly.GetExecutingAssembly().Location;

                TransactedInstaller transactedInstaller 
=
 
new
 TransactedInstaller();
                AssemblyInstaller assemblyInstaller 

=
 
new
 AssemblyInstaller(serviceFileName, cmdline);
                transactedInstaller.Installers.Add(assemblyInstaller);
                transactedInstaller.Install(

new
 System.Collections.Hashtable());
            }
            

catch
 (Exception ex)
            {
                

string
 msg 
=
 ex.Message;
            }
        }
        

//
 删除服务


        
else
 
if
 (args[
0
].ToLower() 
==
 

/u

 
||
 args[
0
].ToLower() 
==
 

-u

)
        {
            

try

            {
                

string
[] cmdline 
=
 { };
                

string
 serviceFileName 
=
 System.Reflection.Assembly.GetExecutingAssembly().Location;

                TransactedInstaller transactedInstaller 
=
 
new
 TransactedInstaller();
                AssemblyInstaller assemblyInstaller 

=
 
new
 AssemblyInstaller(serviceFileName, cmdline);
                transactedInstaller.Installers.Add(assemblyInstaller);
                transactedInstaller.Uninstall(

null
);
            }
            

catch
 (Exception ex)
            {
                

string
 msg 
=
 ex.Message;
            }
        }
    }
}


版权声明:本文为pojianbing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。