Windows Services的安装部署 三种方法总结


Windows服务的安装方法总结

 

C#创建Windows服务与安装-图解

百度经验:jingyan.baidu.com

一、第一种安装方法

使用.net framework自带的安装服务的程序进行安装

创建项目1

创建windows服务项目

右键点击Service1.cs,查看代码, 用于编写操作逻辑代码


代码中OnStart用于执行服务事件,一般采用线程方式执行方法,便于隔一段事件执行一回

安装服务配置

打开Service1.cs视图界面

在视图内右键-->添加安装程序

项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件

serviceProcessInstaller1

serviceInstaller1


选中serviceProcessInstaller1组件,查看属性,设置accountLocalSystem


选中serviceInstaller1组件,查看属性

设置ServiceName的值, 该值表示在系统服务中的名称

设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动

设置Description,添加服务描述

安装服务1

点击 开始,运行中输入cmd,获取命令提示符

win7需要以管理员的身份启动,否则无法安装


输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319回车

切换当前目录,此处需要注意的是,在C:\Windows\Microsoft.NET\Framework目录下有很多类似版本,具体去哪个目录要看项目的运行环境,例如果是.net framework2.0则需要输入cd C:\Windows\Microsoft.NET\Framework\v2.0.50727


输入InstallUtil.exe E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe回车

说明:E:\TestApp\Winform\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe表示项目生成的windowsservice主输出文件位置

打开服务,就可以看到已经安装的服务了

卸载服务1

卸载很简单,打开cmd, 直接输入 sc delete WinServiceTest便可

 

第二中安装方法

使用windows批处理方法进行安装

 

1.服务项目完成之后,在服务解决方法中建立一个windows批处理文件命名为:InstallService.bat

文件中的内容书写如下:

 

@echooff

 

 

echo--------------------------------------------------------------

echo-          开始安装服务         -

echo--------------------------------------------------------------           

pause

 

 

set appdir=%cd%\SimulateHexiaoWindowsService.exe

 

setAddr=C:\Windows\Microsoft.NET\Framework\v2.0.50727

cd/d %Addr%

installutil.exe %appdir%

 

IFERRORLEVEL 255 GOTO Label255

IFERRORLEVEL 254 GOTO Label254

IFERRORLEVEL 1 GOTO Label1

GOTOLabel0

 

:Label255

echocommands to be executed at errorlevel 255

GOTOEnd

 

:Label1

echocommands to be executed at errorlevel 1

GOTOEnd

 

:Label0

echo--------------------------------------------------------------

echo-          成功安装服务

echo-------------------------------------------------------------- 

pause

 

:End

 

 

 

1.      新建一个卸载服务的windows批处理文件 命名为:

UnInstallService.bat

 


 

 

 

@echooff

 

 

echo--------------------------------------------------------------

echo-         开始卸载服务

echo--------------------------------------------------------------           

pause

 

 

setappdir=%cd%\SimulateHexiaoWindowsService.exe

 

setAddr=C:\Windows\Microsoft.NET\Framework\v2.0.50727

cd/d %Addr%

installutil.exe /u %appdir%

 

IFERRORLEVEL 255 GOTO Label255

IFERRORLEVEL 254 GOTO Label254

IFERRORLEVEL 1 GOTO Label1

GOTOLabel0

 

:Label255

echocommands to be executed at errorlevel 255

GOTOEnd

 

:Label1

echocommands to be executed at errorlevel 1

GOTOEnd

 

:Label0

echo--------------------------------------------------------------

echo-         成功卸载服务

echo-------------------------------------------------------------- 

pause

 

:End

 

注意:此处需要注意的同样如一方法中所说,如果创建的服务项目框架是.Net framework 2.0的则要把批处理文件中的设置改为setAddr=C:\Windows\Microsoft.NET\Framework\v2.0.50727如果是.Netframework 4.0的话,这要修改为set Addr=C:\Windows\Microsoft.NET\Framework\v4.0.30319,本质上该方法和第一种方法是一样的。

 

三、使用vs的安装项目的安装方法来安装

 

     1.创建window服务项目

首先我们建一个window服务项目 :解决方案(右击)——>增加 ——>新建项目——>项目类型选择Windows——>模板选择Windows服务

 

      2.编写Window服务程序

创建后会生成两个文件 Program.csService1.cs,其中 program.cs这个文件不用动,里面已自动生成好了。我们在Service1.cs里增加所要的操作,里面有两个重写方法 OnStart OnStopOnStart方法表示服务启动的操作,OnStop表示服务停止的操作,下面写了一个简单示例 :当服务启动后,调用远程一个WebServiceHello函数,并把返回的值写入到一个文件中。code如下:

/// <summary>
        
/// 服务启动的操作
        
/// </summary>
        
/// <param name="args"></param>
        protected override void OnStart(string
[] args)  
        {
            Start ();
        }

        
/// <summary>

        
/// 服务停止的操作
        
/// </summary>
        protected override void
 OnStop()
        {
            
try

            {
                ThreadHello.Abort();

                Flag = 
false;

                System.Diagnostics.Trace.Write(
"
线程停止"
);
            }
            
catch
 (Exception ex)
            {
                System.Diagnostics.Trace.Write(ex.Message);
            }
        }

        
private
 Thread ThreadHello;

        
private void
 Starto()
        {
            
try

            {
                
// 标准形式
                
                //ThreadStart NewThreadStart = new ThreadStart(VoidName);
                //Thread NewThead = new Thread(NewThreadStart);
                //NewThead.Start();

                ThreadHello = 
new Thread(new ThreadStart(Hello));
                ThreadHello.Start();
                System.Diagnostics.Trace.Write(
"
线程任务开始"
);
            }
            
catch
 (Exception ex)
            {
                System.Diagnostics.Trace.Write(ex.Message);
                
throw
 ex;
            }
        }

        
private void
 Hello()
        {
            
while
 (Flag)
            {
                localhost.AdvService la = 
new
 WindowsService1.localhost.AdvService();
                
try

                {
                    
string helloname = la.Hello("Andy"); // 调用远程WebService中的方法
                    writeInLog(helloname, false);   // 把调用返回的数据写入到文件中
                }
                
catch
 (Exception ex)
                {
                    System.Diagnostics.Trace.Write(ex.Message);
                    
throw
 ex;
                }

                Thread.Sleep(
5000
);
            }
        }

        
/// <summary>

        
/// 写入文件操作
        
/// </summary>
        
/// <param name="msg">写入内容</param>
        
/// <param name="IsAutoDelete">是否删除</param>
        private void writeInLog(string msg, bool
 IsAutoDelete)
        {
            
try

            {
                
string logFileName = @"E:\Sample\PG_Sample\log.txt"// 文件路径
                FileInfo fileinfo = new FileInfo(logFileName);
                
if
 (IsAutoDelete)
                {
                    
if (fileinfo.Exists && fileinfo.Length >= 1024
)
                    {
                        fileinfo.Delete();
                    }
                }
                
using
 (FileStream fs = fileinfo.OpenWrite())
                {
                    StreamWriter sw = 
new
 StreamWriter(fs);
                    sw.BaseStream.Seek(
0
, SeekOrigin.End);
                    sw.WriteLine(
"====================================="
);
                    sw.Write(
"
添加日期为:" + DateTime.Now.ToString() + "\r\n"
);
                    sw.Write(
"
日志内容为:" + msg + "\r\n"
);
                    sw.WriteLine(
"====================================="
);
                    sw.Flush();
                    sw.Close();
                }
            }
            
catch
 (Exception ex)
            {
                ex.ToString();
            }
        }

例子很简单,方便理解,上面通过线程,每5秒执行一次操作,到这里,我们的服务以及服务实现的功能就已经写好了,下面怎么让客户端安装我们的服务呢?这里才是我写这篇文章的目的!先要增加一个安装程序类,切换到视图窗口,右击——>增加安装程序,便会增加一个程序安装类文件ProjectInstaller.cs。

这里serviceProcessInstaller1 serviceInstaller1有几个重要属性要设置,serviceInstaller1中的StartType要设置成Automatic,表示随机启动,ServiceName表示服务名称,Description表示服务的描述, DisplayName表示显示名称。serviceProcessInstaller1中的Account要设置成LocalSystem,表示本地系统帐号


       3.安装程序

       安装程序制作:解决方案(右击)——>增加 ——>新建项目 ——>项目类型选择安装和部署——>  模板选择安装项目  如图 


 

    创建后,安装项目(右击)——>视图 ——>文件系统如图:


 

由于我们是安装服务,就不需要用户桌面和程序菜单了,直接应用程序文件夹(右击)——>增加 ——>项目输出 入图 :

上面有两点需要注意 ,一 项目选择中选择要安装的服务, 二 项目选择下面要选择主输出,选择好后确定,这一步增加了安装程序的文件夹,下一步就是给这个安装程序增加操作,这里我们增加两个基本操作,一个是安装,一个是卸载。安装项目(右击) ——>视图 ——> 自定义操作 如图

上面可以看到有安装,提交,回滚,卸载等操作,我们先增加安装操作,安装(右击)——>增加自定义操作,会弹出一个对话 如图:

选择应用程序文件夹,并选中之前增加的主输出项,确定,这样这个安装程序就增加了安装的操作,同样按照这样的方式增加卸载操作,卸载与安装唯一不同的是需要设置一个命令参数,不可少,如图:

这里 Arguments里输入 /u 表示卸载命令相当于InstallUtil.exe /u 服务路径  ,到这里 ,我们的安装程序就已经制作好了,生成安装程序项目,将会生成 setup.exe setup.msi安装文件,拷贝到客户端,点击setup.exe就像安装其他windows程序一样安装我们的服务

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是安装Windows Server 2022前需要做的准备工作: 1. 确认硬件配置符合Windows Server 2022的要求,例如处理器、内存和存储空间等。 2. 下载Windows Server 2022镜像文件,并将其写入到可启动的USB或DVD中。 3. 在BIOS中将计算机的启动顺序设置为USB或DVD优先,以便从可启动媒体启动计算机。 4. 在安装之前,备份重要的数据和设置,以防意外数据丢失。 接下来是安装步骤: 1. 将可启动的USB或DVD插入计算机,并重新启动计算机。 2. 在Windows安装程序启动后,选择要安装的语言和其他首选项,然后单击“下一步”。 3. 单击“安装”以开始安装过程。 4. 接受许可协议,并选择要安装Windows Server 2022版本和安装类型(例如“自定义”或“升级”)。 5. 选择安装位置并进行分区。如果需要创建新分区,可以在此处执行。 6. 在安装过程中,按照提示输入计算机名称、管理员密码和其他相关信息。 7. 等待安装完成,然后重新启动计算机。 8. 验证Windows Server 2022的安装是否成功,可以登录系统并查看系统信息。 希望这些步骤对您有所帮助。如果您有任何其他问题,请随时问我。 ### 回答2: 要在云平台上部署WDS(Windows Deployment Services)并安装Windows Server 2022,您可以按照以下步骤操作: 首先,确保您已经在云平台上创建了一个Windows Server 2022的虚拟机实例。可以使用云平台提供的控制台或命令行工具来完成这一步骤。 接下来,登录到您的Windows Server 2022虚拟机实例,并确保操作系统已经完全启动。 在Windows Server 2022实例上,打开Server Manager(服务器管理器)工具。您可以在任务栏上找到此工具的图标。 在Server Manager中,点击“管理”标签,然后选择“添加角色和功能”。 在角色和功能安装向导中,选择“下一步”,接受默认的安装类型。 在服务器角色选择页面上,找到“Windows部署服务”选项,勾选它,然后点击“下一步”。 在功能选择页面上,无需进行任何更改,直接点击“下一步”。 在WDS安装页面上,点击“安装”来安装WDS角色服务。 安装完成后,点击“完成”并关闭角色和功能安装向导。 现在,您已经成功在Windows Server 2022虚拟机实例上安装了WDS。 接下来,您可以配置WDS以实现自动化的Windows Server 2022部署。这包括创建和配置映像、设置启动环境等。您可以参考Windows Server 2022的官方文档或其他资源,了解如何进行这些配置。 总结起来,部署WDS并安装Windows Server 2022的步骤包括创建Windows Server 2022虚拟机实例、登录虚拟机实例、打开Server Manager、添加WDS角色、完成安装,并进行进一步的配置以实现自动化部署。 ### 回答3: Windows Deployment Services(WDS)是一种用于远程安装部署Windows操作系统的工具。要在云平台上部署WDS并安装Windows Server 2022,您需要执行以下步骤: 1. 首先,在云平台上创建一个Windows虚拟机实例。确保为该实例选择适当的硬件配置和操作系统类型(Windows Server)。 2. 进入新创建的Windows虚拟机实例,并确保已完成操作系统的基本设置和网络连接设置。确保该实例可以访问Internet。 3. 下载并安装最新版本的Windows Server 2022操作系统映像文件。确保映像文件与虚拟机实例的硬件架构(32位或64位)匹配。 4. 配置WDS服务。在Windows Server 2022中,您可以通过服务器管理器或PowerShell来完成此操作。确保启用PXE(Preboot Execution Environment)资源和DHCP服务,因为它们是WDS的必要组件。 5. 创建基于WDS的操作系统映像。您可以使用WDS控制台或者Windows PowerShell来创建和配置映像。确保选择合适的选项来定义映像的属性,例如版本、语言和组件。 6. 将Windows Server 2022映像添加到WDS库中。确保映像的文件位置正确,并按照WDS控制台或PowerShell的指导进行操作。 7. 配置WDS客户端的引导文件。确保将客户端引导文件复制到TFTP根目录,并将其配置为自动引导。 8. 连接并引导客户端计算机。将新的计算机连接到与WDS服务器相同的网络,并启动计算机。计算机将通过PXE引导,并从WDS服务器获取操作系统映像。 9. 安装Windows Server 2022操作系统。根据WDS服务器的配置,选择相应的操作系统映像,并按照安装向导的指示进行操作。 10. 等到安装完成,并确保成功部署Windows Server 2022操作系统。 通过按照以上步骤操作,您可以在云平台上部署WDS并安装Windows Server 2022。请注意,具体步骤可能会根据云平台和WDS版本的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值