installutil使用

合集下载

Installshield终极使用教程

Installshield终极使用教程

Installshield终极使⽤教程Installshield使⽤1 说明(适⽤范围)1.1IS各⼯程介绍IS将安装⼯程根据⼯程的特点分了⼏⼤类:InstallScript ;Windows Installer;Universal installer。

其中,Universal这个⽐较好理解,⼤概就是⽤来做跨平台的安装程序。

InstallScript 和Windows Installer的区别,我到是⼀直不是很清楚,⼤概意思就是如果你使⽤InstallScript模式是使⽤脚本来驱动安装界⾯,使⽤Windows Installer则主要是使⽤操作系统⾃带的安装服务来驱动安装。

在每个⼤类⾥⾯有划分了不同的⼩类。

这⾥请参考IS帮助中的说明。

2 COMMON篇之InstallScript Porject2.1使⽤向导做⼀个简单的安装包2.1.1了解你要安装的程序⾸先你要清楚,你的程序所需要的运⾏环境要求。

这个安装包例⼦中,我们要打包这样⼀个系统:主程序是LearnQClient.exe,rtcdll.dll,ImageOle.dll,dxmrtp.dll,dsoframer.ocx,config.ini,许可协议.txt;它运⾏时需要读取当前⽬录下的config.ini,由于这个程序是⽤VC开发的,所以还需要运⾏的机器上有vc的运⾏库。

具备了这个环境,LearnQClient.exe程序才能正常运⾏起来。

这就要求我们做好的安装程序安装时要将LearnQClient.exe,rtcdll.dll,ImageOle.dll, dxmrtp.dll,dsoframer.ocx,config.ini拷贝到指定的安装⽬录,也可将ImageOle.dll,dsoframer.ocx拷贝到当前系统的系统⽬录(windows9x中系统⽬录是windows/system;windows 2000/xp的系统⽬录是system32)。

Windows系统使用cmd命令安装和卸载服务

Windows系统使用cmd命令安装和卸载服务

Windows系统中使用cmd命令安装和卸载服务方法如下:
第一种方法:
1. 开始 ->运行 ->cmd
2. cd到C:\WINDOWS\\Framework\v2.0.50727(Framework版本号按IIS配置)
3. 安装服务:运行命令行 InstallUtil.exe E:/test.exe
卸载服务:运行命令行 InstallUtil.exe -u E:/test.exe
这样就能删除了,但如果还是不能删除的话,没关系下面还有一种方法。

第二种方法:
运行-->cmd-->到c:\windows\system32文件夹下-->输入sc delete <服务名称>,然后就可以把服务卸载了
这时候,我们可以用另外一个命令来卸载,如下:
C:\WINDOWS\system32>sc delete MyService
其中的 MyService 是你的服务的名字,比如如下的服务截图,它的卸载命令就可以如下写:
sc delete "服务名"
当然你也可以用这个工具create,start,stop服务。

比如,我们就可以用下面的命令,安装服务,并把服务启动起来。

installutil HongjunGuo.JobsWindowsService.exe
sc start "服务名"。

利用dotNet命令行工具

利用dotNet命令行工具

利用.NET Framework命令行工具Visual Studio .NET 是开发 .NET 应用程序的最流行的方法,.NET 框架提供了非常多的命令工具。

此外,.NET Framework SDK 还提供了更多的命令行工具。

事实上,像Visual Studio 和SharpDevelop 之类的 IDE 通常也都提供这些工具。

下面让我们详细看一下随 .NET Framework 一起安装的这些工具,以及如何在项目中使用它们。

(注意:在这篇文章中我使用的是 .NET Framework 1.1 版本。

)使用 .NET Framework.NET Framework 命令行程序的默认安装目录是:C:\(base Windowsdirectory)\\Framework\(framework version)。

在我的计算机上,由于安装的操作系统是 Windows 2000,所以 .NET Framework 1.1 版本安装在 winnt 目录下,所以其路径是:C:\winnt\\Framework\v1.1.4322这个目录包含无数的 dll,配置文件和可执行文件,等等。

在这篇文章中,我将把重点放在可执行文件上。

下面是这些程序的一个纲要:Al.exe:程序集链接器(Assembly Linker),该工具从一个或多个模块或者资源文件生成一个带有一个程序集清单的文件。

模块是一个没有程序集清单的微软中间语言文件(MSIL)。

所有的 Visual Studio 编译器都生成程序集。

然而,如果你有一个或多个模块(没有清单的元数据),你可以利用 Al.exe 工具使用一个独立文件中的清单创建一个程序集。

Aspnet_regiis.exe:这个工具允许你在 IIS 上安装 。

此外,它还可以简化同时运行的多个 版本的使用。

它允许你为 应用程序更新脚本映射以指向与该工具关联的 ISAPI 版本。

这个工具还可以用来显示所有安装的 版本的状态,注册 版本以及工具,创建客户端脚本目录,完成其它配置操作。

installshield2010学习文档

installshield2010学习文档

Installshield学习资料Installshield是一个制作安装程序的软件,下面以一个实例讲述installshield的简单用法。

1、打开installshield软件,界面如下2、新建一个项目,点击file菜单—》new…,界面如下,选择如下面红色区域,输入项目名字,点击“ok”3、进入下面的界面,下面的那一条,是新建一个安装程序的向导。

4、点击向导的第一步,出现如下界面,输入的相应的信息5、点击向导的第二步6、出现如下界面,点击Yes单选按钮7、如下图,用“New”按钮建立两个features,分别是java和tomcat,用来存放安装文件,8、点击向导的第三步“Application Files”9、出现以下界面,下拉框选中“java”,在左边选中“Application TargetFolder”,点击右下角的“Add Folders”,如第二个图,选中已经准备好的Java安装文件(就是JAVA安装以后的生成的那些文件);点击“确定”出现以下页面点击“Yes”如上设置,点击“OK”.10、选中下拉框选中“tomcat”,方法同上,设置tomcat下的安装文件;再添加一个文件startup.bat,用来做快捷方式时用(在12步时用),注意添加文件时点击“Add Files”按钮。

11、点击向导的第四步:“Application Shortcuts”12、点击“New”选中“startup.bat”,13、修改安装协议:点击“Installation Designer”--- 选择左边的“Behavior and Logic”,如下选择14、新建一个自己的文档,输入协议内容,名字为license.rtf,回到刚才界面,右边的部分如下,将右边的license.rtf删除,在右边的部分右击鼠标,可以选择插入文件,将自己的文件插入即可15、设置默认安装路径:点击“Installation Designer”---→选择左边的“Behavior and Logic”-→”InstallScript”,如下以下界面16、如图选择17、代码做如下更改:18、如图选择19、这只是简单的安装。

Windows Service:SC 和 InstallUtil 区别

Windows Service:SC 和 InstallUtil 区别

就是在部署和卸载Windows Service 的时候,我介绍了两种不同的命令:SC和InstallUtil,为什么在使用SC的时候,内部不需要创建ProjectInstaller,而使用InstallUtil的时候,却一定要创建ProjectInstaller,带着疑问,查阅了一些资料,终于找出了一些线索,不足的地方还请懂的指点一下。

原来以为SC是最底层的命令行,而InstallUtil是调用SC命令来创建的,可惜我犯了个比较低级的错误,所有的一切应该都来源于Windows API,不管是SC,还是InstallUtil。

我们先来看看InstallUtil,MSDN的解释是:安装程序工具使您得以通过在执行指定程序集中的安装程序组件来安装和卸载服务器资源,。

此工具与System.Configuration.Install 命名空间中的类一起工作。

Installutil.exe 使用反射检查指定的程序集并查找将RunInstallerAttribute设置为true的所有Installer类型。

然后此工具在Installer类型的每个实例上执行Install 方法或Uninstall 方法。

Installutil.exe 以事务性方式执行安装;如果有一个程序集未能安装,则Installutil.exe 回滚其他所有程序集的安装。

卸载不是事务性的。

这样一看,InstallUtil应该是调用了我们在Windows Service中添加的ProjectInstaller中的serviceInstaller1和serviceProcessInstaller1,后两者是最终部署和卸载Windows Service 的Installer,那么serviceInstaller1和serviceProcessInstaller1之间又是什么关系呢??用Reflect 查看了下这两者的源码,我目前的结论大概是:serviceProcessInstaller1主要是存储了一些与Account相关的信息,并且在Install的时候检查Account的权限;但是serviceInstaller1则是用来存储与服务相关的信息,比如:服务名称,服务描述,启动模式,等等,并且在Install的时候创建服务;serviceInstaller1在Install的时候做了以下几件事情:1.LogMessage: 记录Install 日志2.CheckEnvironment : 检查安装环境,主要是系统的OS版本和Service环境的OS版本是否一致查找父级Installer(Parent属性)以及父级Installer的子Installer中有没有ServiceProcessInstaller,并将找到的ServiceProcessInstaller赋值给该ServiceInstaller的Parent属性,同时将ServiceProcessInstaller中有关Account的信息给拷贝过来就是在部署和卸载Windows Service 的时候,我介绍了两种不同的命令:SC和InstallUtil,为什么在使用SC的时候,内部不需要创建ProjectInstaller,而使用InstallUtil的时候,却一定要创建ProjectInstaller,带着疑问,查阅了一些资料,终于找出了一些线索,不足的地方还请懂的指点一下。

Windows服务调试

Windows服务调试

Windows服务的调试
Windows服务的调试相对比较困难,因为必须得先安装到操作系统中,这样就脱离了IDE了,所以调试相对麻烦一些。

1.调试前的准备工作,为了能顺利的进行调试,需要启动一个服务“Terminal Services”(注:此服务在WIN7中叫Remote Desktop Services)。

2.将正在编写的Windows服务中的OnStart的方法中,最前面添加一条,让线程休息30秒的语句;在休息的后面的语句上加上断点。

3.重新生成Windows服务工程。

4.使用命令行命令installutil安装Windows服务。

5.打开服务管理器,找到刚才安装的Windows服务。

6.启动这个服务。

7.在IDE中选择“调试”菜单,选择“附加到进程”。

8.在“可用进程”列表中找到刚才启动的服务,附了个加。

9.这是还没有执行到断点的时候的情况。

10.这是命中断点的时候的情况。

到此,咱们的Windows服务就可以进行调试了。

关键点1:Terminal Services必须启动。

关键点2:要调试的服务必须预先安装。

关键点3:必须在OnStart的第一句之前写上让线程休息一段时间,因为一旦服务启动,那么一定调用了OnStart方法,如果这时候再去手忙脚乱的附加到进程,可能等你附加完成,断点的语句早都已经执行过了,所以当服务启动的时候,先休息一会是必要的,这样,我们的调试过程就不会手忙脚乱的了。

install的用法

install的用法
1. “Install”可以表示安装软件或硬件呢,就像你给你的电脑装上一个超酷的游戏,比如“我昨天 install 了一款好玩的游戏,现在随时都能玩啦”。

2. 当你把新家具搬进房间,那不也可以说是 install 新家具嘛,像“他今天把新沙发 install 好了,客厅一下子焕然一新”。

3. 有没有想过给你的生活 install 一些新的习惯呀?比如每天早起锻炼,“她决定 install 这个早起锻炼的习惯,让自己更健康”。

4. 建房子也能用 install 这个词呢,工人把一块块砖 install 起来,变成坚固的房子,“他们慢慢地 install 起了这栋漂亮的大楼”。

5. 学习新知识也像是在心里 install 新的程序呀,“他努力地在脑子里install 各种知识,让自己变得更聪明”。

6. 心灵上也可以 install 积极的信念呢,“我们要在心中 install 相信自己能成功的信念”。

7. 有时候,在团队中 install 良好的合作氛围也是超级重要的呀,“大家一起努力 install 这种积极的合作氛围吧”。

总之,“install”的用法真是多种多样,好好运用它能让我们的表达更丰富呢!。

Windows Service:SC 和 InstallUtil 区别

就是在部署和卸载Windows Service 的时候,我介绍了两种不同的命令:SC和InstallUtil,为什么在使用SC的时候,内部不需要创建ProjectInstaller,而使用InstallUtil的时候,却一定要创建ProjectInstaller,带着疑问,查阅了一些资料,终于找出了一些线索,不足的地方还请懂的指点一下。

原来以为SC是最底层的命令行,而InstallUtil是调用SC命令来创建的,可惜我犯了个比较低级的错误,所有的一切应该都来源于Windows API,不管是SC,还是InstallUtil。

我们先来看看InstallUtil,MSDN的解释是:安装程序工具使您得以通过在执行指定程序集中的安装程序组件来安装和卸载服务器资源,。

此工具与System.Configuration.Install 命名空间中的类一起工作。

Installutil.exe 使用反射检查指定的程序集并查找将RunInstallerAttribute设置为true的所有Installer类型。

然后此工具在Installer类型的每个实例上执行Install 方法或Uninstall 方法。

Installutil.exe 以事务性方式执行安装;如果有一个程序集未能安装,则Installutil.exe 回滚其他所有程序集的安装。

卸载不是事务性的。

这样一看,InstallUtil应该是调用了我们在Windows Service中添加的ProjectInstaller中的serviceInstaller1和serviceProcessInstaller1,后两者是最终部署和卸载Windows Service 的Installer,那么serviceInstaller1和serviceProcessInstaller1之间又是什么关系呢??用Reflect 查看了下这两者的源码,我目前的结论大概是:serviceProcessInstaller1主要是存储了一些与Account相关的信息,并且在Install的时候检查Account的权限;但是serviceInstaller1则是用来存储与服务相关的信息,比如:服务名称,服务描述,启动模式,等等,并且在Install的时候创建服务;serviceInstaller1在Install的时候做了以下几件事情:1.LogMessage: 记录Install 日志2.CheckEnvironment : 检查安装环境,主要是系统的OS版本和Service环境的OS版本是否一致查找父级Installer(Parent属性)以及父级Installer的子Installer中有没有ServiceProcessInstaller,并将找到的ServiceProcessInstaller赋值给该ServiceInstaller的Parent属性,同时将ServiceProcessInstaller中有关Account的信息给拷贝过来就是在部署和卸载Windows Service 的时候,我介绍了两种不同的命令:SC和InstallUtil,为什么在使用SC的时候,内部不需要创建ProjectInstaller,而使用InstallUtil的时候,却一定要创建ProjectInstaller,带着疑问,查阅了一些资料,终于找出了一些线索,不足的地方还请懂的指点一下。

python中对util工具类的引用 -回复

python中对util工具类的引用-回复在Python中,util工具类是一种常用的工具类,它提供了一系列常用函数和方法,以便简化开发过程中的代码编写和问题解决。

在本文中,我将一步一步地解释如何引用和使用Python中的util工具类。

首先,让我们来了解一下何为util工具类。

在软件开发中,util(utility)是指那些比较基础而且通用的功能组件或者类。

这些组件或类在各种项目中都很常见,因此被整合到单个工具包中,供开发人员进行重复使用。

很多编程语言中都有自己的util工具类,而在Python中,我们可以通过引用一些内置的模块或自定义的库来使用这些工具类。

在Python中,util工具类的引用通常需要两个步骤:导入(import)和调用(调用)。

导入是指将需要使用的模块或库加载到当前的Python环境中。

Python 提供了import语句来实现导入功能。

例如,如果我们想引用Python内置的datetime模块中的util工具类,我们可以使用以下代码来进行导入:pythonimport datetime这样,我们就可以在当前的Python程序中使用datetime模块中的util工具类了。

另外一种常见的导入方式是指定模块名称的别名,以便简化代码。

比如,如果我们想使用datetime模块中的util工具类,但是不想每次都输入完整的模块名,我们可以使用以下代码进行导入:pythonimport datetime as dt这样,我们就可以使用dt来代替datetime模块的名称。

例如,调用datetime模块中的datetime类的构造函数可以改为使用dt来引用:pythonnow = dt.datetime.now()另外一种导入方式是只导入需要使用的类或函数。

这种方式可以避免导入整个模块,从而减少内存占用。

例如,如果我们只需要使用datetime模块中的date类,我们可以使用以下代码进行导入:pythonfrom datetime import date这样,我们就可以直接使用date类,而不需要引用完整的模块名。

创建Windows服务(Windows Services)N种方式总结

最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来。

目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志:a.利用.net框架类ServiceBase本方式特点:简单,兼容性好通过继承.net框架类ServiceBase实现第1步: 新建一个Windows服务public partial class Service1 : ServiceBase{readonly Timer _timer;private static readonly string FileName = Path.GetDirectoryName( Assembly.GetExecutingAssembly ( ).Location ) + @"\" + "test.txt";public Service1 ( ){InitializeComponent ( );_timer = new Timer ( 5000 ){AutoReset = true ,Enabled = true};_timer.Elapsed += delegate ( object sender , ElapsedEventArgs e ) {this.witre ( string.Format ( "Run DateTime {0}", DateTime.Now ) ); };}protected override void OnStart ( string [ ] args ){this.witre ( string.Format ( "Start DateTime {0}", DateTime.Now ) ); }protected override void OnStop ( ){this.witre ( string.Format ( "Stop DateTime {0}" , DateTime.Now ) + Environment.NewLine );}void witre ( string context ){StreamWriter sw = File.AppendText ( FileName );sw.WriteLine ( context );sw.Flush ( );sw.Close ( );}}第2步: 添加Installer[RunInstaller ( true )]public partial class Installer1 : System.Configuration.Install.Installer {private ServiceInstaller serviceInstaller;private ServiceProcessInstaller processInstaller;public Installer1 ( ){InitializeComponent ( );processInstaller = new ServiceProcessInstaller ( );serviceInstaller = new ServiceInstaller ( );processInstaller.Account = ServiceAccount.LocalSystem;serviceInstaller.StartType = ServiceStartMode.Automatic;serviceInstaller.ServiceName = "my_WindowsService";serviceInstaller.Description = "WindowsService_Description";serviceInstaller.DisplayName = "WindowsService_DisplayName";Installers.Add ( serviceInstaller );Installers.Add ( processInstaller );}第3步:安装,卸载Cmd命令installutil WindowsService_test.exe (安装Windows服务)installutil /u WindowsService_test.exe (卸载Windows服务)代码下载:/aierong/WindowsService_test.rarb.利用组件Topshelf本方式特点:代码简单,开源组件,Windows服务可运行多个实例Topshelf是一个开源的跨平台的服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务. 官方网站:第1步:引用程序集TopShelf.dll和log4net.dll第2步:创建一个服务类MyClass,里面包含两个方法Start和Stop,还包含一个定时器Timer,每隔5秒往文本文件中写入字符public class MyClass{readonly Timer _timer;private static readonly string FileName = Directory.GetCurrentDirectory ( ) + @"\" + "test.txt";public MyClass ( ){_timer = new Timer ( 5000 ){AutoReset = true ,Enabled = true};_timer.Elapsed += delegate ( object sender , ElapsedEventArgs e ) {this.witre ( string.Format ( "Run DateTime {0}", DateTime.Now ) ); };void witre ( string context ){StreamWriter sw = File.AppendText ( FileName );sw.WriteLine ( context );sw.Flush ( );sw.Close ( );}public void Start ( ){this.witre ( string.Format ( "Start DateTime {0}", DateTime.Now ) ); }public void Stop ( ){this.witre ( string.Format ( "Stop DateTime {0}" , DateTime.Now ) + Environment.NewLine );}}第3步:使用Topshelf宿主我们的服务,主要是Topshelf如何设置我们的服务的配置和启动和停止的时候的方法调用class Program{static void Main ( string [ ] args ){HostFactory.Run ( x =>{x.Service<MyClass> ( ( s ) =>{s.SetServiceName ( "ser" );s.ConstructUsing ( name => new MyClass ( ) );s.WhenStarted ( ( t ) => t.Start ( ) );s.WhenStopped ( ( t ) => t.Stop ( ) );} );x.RunAsLocalSystem ( );//服务的描述x.SetDescription ( "Topshelf_Description" );//服务的显示名称x.SetDisplayName ( "Topshelf_DisplayName" );//服务名称x.SetServiceName ( "Topshelf_ServiceName" );} );}}第4步: cmd命令ConsoleApp_Topshelf.exe install (安装Windows服务)ConsoleApp_Topshelf.exe uninstall (卸载Windows服务)代码下载:/aierong/ConsoleApp_Topshelf.rarc.利用小工具instsrv和srvany本方式特点:代码超级简单,WindowsForm程序即可,并支持程序交互(本人最喜欢的特点),好像不支持win7,支持xp win2003首先介绍2个小工具:instsrv.exe:用以安装和卸载可执行的服务srvany.exe:用于将任何EXE程序作为Windows服务运行这2个工具都是是Microsoft Windows Resource Kits工具集的实用的小工具你可以通过下载并安装Microsoft Windows Resource Kits获得/en-us/download/details.aspx?id=17657第1步: 新建WindowsForm程序public partial class Form1 : Form{Timer _timer;private static readonly string FileName = Application.StartupPath + @"\" + "test.txt";public Form1 ( ){InitializeComponent ( );}private void Form1_Load ( object sender , EventArgs e ){_timer = new Timer ( ){Enabled = true ,Interval = 5000};_timer.Tick += delegate ( object _sender , EventArgs _e ){this.witre ( string.Format ( "Run DateTime {0}", DateTime.Now ) ); };}void _timer_Tick ( object sender , EventArgs e ){throw new NotImplementedException ( );}void witre ( string context ){StreamWriter sw = File.AppendText ( FileName );sw.WriteLine ( context );sw.Flush ( );sw.Close ( );}private void button1_Click ( object sender , EventArgs e ){MessageBox.Show ( "Hello" );}}第2步:安装,卸载服务的安装步骤分5小步:(1)打开CMD,输入以下内容,其中WindowsForms_WindowsService为你要创建的服务名称格式:目录绝对路径\instsrv WindowsForms_WindowsService 目录绝对路径\srvany.exe 例如:D:\TempWork\win\Debug\instsrv.exe WindowsForms_WindowsService D:\TempWor k\win\Debug\srvany.exe(2)regedit打开注册表编辑器,找到以下目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WindowsForms_Window sService(3)鼠标右键单击WindowsForms_WindowsService,创建一个"项",名称为"Parameters"(4)鼠标左键单击"Parameters",在右边点击鼠标右键,创建一个"字符串值"(REG_SZ),名称为"Application",数值数据里填写目录下可执行文件的绝对路径+文件名例如:D:\TempWork\win\Debug\WindowsFormsApplication_Exe.exe(5)打开services.msc服务控制面板,找到WindowsForms_WindowsService服务,鼠标右键-属性-登陆,勾选"允许服务与桌面交互"启动服务,可以看到程序界面卸载服务D:\TempWork\win\Debug\instsrv.exe WindowsForms_WindowsService REMOVE 代码下载:/aierong/WindowsFormsApplication_Exe.rar。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

InstallUtil在windows服务中的使用
1、新建一个Windows Service的方法:
1. 打开Visual Studio 2008新建一个project Solution;
2. 选择Windows->windows Service,修改服务名称:MyFirstService;
3. 在默认窗口Service1中右键Add Install,自动生成两个类。

4. 修改serviceInstaller1的属性:
a)ServiceName =”FirstService”;//设置服务名称
b)StartType = Automatic;//启动的模式有三种:“自动”、“手动”、“禁用”。

事实上,在“我的电脑”的“管理”->“服务”中,还有一种模式:“自动(延迟启动)”
c)Modifiers=public;
还有一些属性,比如DisplayName对应下图中的“显示名称”,ServiceName对应下图中的“服务名称”,而(Name)则对应,这些属性都是可以进行相应的修改的
5. 设置serviceProcessInstaller1组件的属性
1) Account = LocalSystem; //为最大的权限此属性还包括:LocalService、networkService、User(默认状态,如果使用User,则在安装的时候需要提供用户名和密码),如需要详细了解该属性,可以参照:
/zh-cn/system.serviceprocess.serviceprocessinstaller .account(VS.90).aspx
2) Modifiers=public;
6. 生成解决方案:选择release模式右键生成解决方案,则在相应的路径当中就会出现MyFirstService.exe文件。

7.使用installutil安装新建好的MyFirstService,方法如下:
一、打开Visual Studio 2008-> Visual Studio Tools-> Visual Studio 2008 Command Prompt。

二、使用命令:installutil (服务的绝对路径),点击运行,即可安装服务。

以下有几个需要注意的问题:
第一:上述二的“服务绝对路径”犹如:e:\新建文件夹
\test\MyFirstService\MyFirstService\bin\release\MyFirstService.exe,在这个地方需要注意的是:必须选择release下生成solution。

默认是在debug下生成solution。

第二:针对window7用户,在安装的过程中容易出现的几个错误:
∙使用的电脑不是使用系统管理员的账号登录,则会出现下面的错误。

(我已经做过测试),特别是在使用window7的用户特别需要注意,系统默认system账号是“禁用”模式。

∙第二种错误的可能就是服务已经存在,则会出现下面的错误
为了避免这种错误的发生,我们应该在安装服务的时候首先进行第三步(即如果可以的话,首先卸载已存在的服务)。

第三:用命令:installutil /u (服务的绝对路径),点击运行,即可卸载服务。

类似地,“服务的绝对路径”犹如:
e:\新建文件夹\test\MyFirstService\MyFirstService\bin\release\MyFirstService.exe。

在卸载一个服务的时候可能会出现以下两种情况:
∙正常情况:服务存在,而且已经启动,运行卸载,效果如下图:
当然,如果服务存在,但未启动,则在卸载的时候不会出现“试图停止服务”这个命令。

异常情况:服务不存在,或者二次卸载,则会出现以下情况:
2、installutil.exe的介绍。

(这一项在网上会有很多介绍,在这里只是做了一些简单的综述)
如要详细理解installutil的使用,可参照网址:
/en-us/library/50614e95(vs.71).aspx
当然,installutil事实上可以用于安装有.NET开发的所有应用安装程序。

当我们在Visual Studio 2008 Command Prompt中输入命令:installutil /h的时候,会打开installutil的所有帮助文档,如下:
第一个为默认情况下为安装程序所在的绝对路径和安装文件名,类似前面所提到的。

而/LogFile则是说明如果在安装的过程中,需要输出相应的安装日志的时候给定的日志文件的路径和日志文件名。

当然我们最主要的是“安装”和“卸载”命令。

相关文档
最新文档