2011-03-23 105 views
0

Right,进入服务卸载程序(c#)

所以我有用C#编写的Windows服务。我已经找到了'ProjectInstaller.cs',在那里我做了一些事情,比如安装时设置依赖关系和服务名称。

我没有找到的是如何挂钩到服务器的卸载过程。

虽然我知道有在这里和那里的小变通方法,比如刚刚捣毁从注册表的关键,我想考虑用户(具有本地管理员权限)与scinstallutil.exe卸载服务 - 从本质上讲,我只是想要服务写一个声明到数据库说:“嘿,我正在卸载bobsmith”

可能吗?可行?

更新 - 这是我在我的ProjectInstaller.cs - 不工作...

namespace blahblah 
{ 
[RunInstaller(true)] 
public partial class ProjectInstaller : Installer 
{ 
    public ProjectInstaller() 
    { 
     InitializeComponent(); 
     BeforeUninstall += new InstallEventHandler(ProjectInstaller_BeforeUninstall); 
    } 

    private void ProjectInstaller_BeforeUninstall(object sender, InstallEventArgs e) 
    { 
    /// do stuff... 
    } 

回答

1

在你的设计师添加ServiceInstaller对象(如果其中一个已不存在),并订阅BeforeUninstall事件

+0

因此,这似乎并没有被称为在卸载过程中(使用installutil.exe) - 我正在更新与代码的问题... – dotalchemy 2011-03-28 17:47:14

+0

我移动的东西,并手动创建安装程序类。似乎现在正在工作。奇怪的是,它没有用通用的ProjectInstaller调用VS让你添加... – dotalchemy 2011-03-30 16:28:14