我使用Microsoft's walkthrough创建了一项服务。
有效。但我不明白怎么做。 root user
方法似乎没有调用Main()
构造函数(看起来像是安装服务的东西)。实际上,ProjectInstaller
未在解决方案中的任何位置引用(我使用 Shift + F12 进行了检查。)
那么它是如何执行的?
修改
我没有使用 installutil 。 ProjectInstaller
Program
来电Main()
。
答案 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}}中将路径传递给程序集,这就是它如何知道要使用反射检查哪个程序集并运行安装程序。