是什么启动了Windows Service Installer的安装?

时间:2018-04-11 14:34:03

标签: c# .net windows-services

我使用Microsoft's walkthrough创建了一项服务。

有效。但我不明白怎么做。 root user方法似乎没有调用Main()构造函数(看起来像是安装服务的东西)。实际上,ProjectInstaller未在解决方案中的任何位置引用(我使用 Shift + F12 进行了检查。)

那么它是如何执行的?

修改

我没有使用 installutil ProjectInstaller Program来电Main()

1 个答案:

答案 0 :(得分:4)

用于安装该服务的程序(installutil.exe)检查您的程序集并运行安装程序。正如其documentation中所述:

  

Installutil.exe使用反射来检查指定的程序集   并找到具有的所有安装程序类型   System.ComponentModel.RunInstallerAttribute属性设置为true。

     

在   然后工具执行Installer.Install或   安装程序类型的每个实例上的Installer.Uninstall方法。   Installutil.exe以事务方式执行安装;那   是,如果其中一个程序集无法安装,它会回滚   安装所有其他组件。卸载不是事务性的。

更新:您说您不使用installutil而是使用ManagedInstallerClass.InstallHelper。阅读本课程的文档:

  

此API支持产品基础架构,但并非如此   直接从您的代码中使用。

     

处理Installutil.exe(安装程序工具)的功能。

首先你不应该使用它,其次 - 它与installutil相同(因此与此问题相关 - 使用反射检查程序集并运行安装程序)。我想installutil工具实际上只是调用这个方法。请注意,您必须在args的{​​{1}}中将路径传递给程序集,这就是它如何知道要使用反射检查哪个程序集并运行安装程序。