C# - 如何捕获程序安装/卸载的确切时刻

时间:2013-11-18 02:49:56

标签: c# windows-installer wmi

我正在开发一个应用程序( A ),当系统上安装了特定程序( B )时,该应用程序必须做出反应并执行某些操作。

我已经看到很多关于listing programs already installed using the registry keysmonitor status changes on programs and services using WMI的代码的例子。

我想我可以用这些组合做我想做的事,说:

1。当我的应用程序( A )启动时,检查注册表是否安装了我的程序( B )(初始条件)。

2. 然后,从我的应用程序( A )监视本地计算机上的服务更改。

3。每次状态更改报告来自服务“msiserver”时,请重新检查我的程序( B )是否已安装/卸载(初始化)条件已经改变),做某事,如果是这样。

这听起来像我正试图在这里重新发明轮子,我想知道是否有人知道是否有一种更“自然”或“直接”的方式来捕捉特定程序的时刻/事件安装在系统上......或不安装:/

其他注意事项:可以安装程序( B )的默认位置是可变的,因此对文件夹(如C:\ Program Files)的监控不是选项。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道任何允许您订阅OnInstalled类型事件的机制。您必须循环并检测安装状态更改。也许使用Microsoft.Deployment.WindowsInstaller(DTF)库来枚举产品和/或组件。不要使用WMI ... Win32_Product类非常慢并且查询它会导致重新安装应用程序。 (不要问......它很糟糕)。