I think this question is a pretty unique one. I have a kernel driver as part of my installation. During the install process a new kernel service is created that targets a .sys file I install. Later, when the product is uninstalled, the service is deleted. However since the kernel service is running and still in memory, the service is only "Marked for deletion" so it is still there until the next reboot.
My issue is during major upgrades. I would like the old version to be able to detect that a new version is removing it and not run the service delete commands. Preferably, this detection can be done in a CA's condition itself. Obviously REMOVE=ALL is not going to work here. For the most part, all the conditions I find on the googles are intended to be defined and used in the new version and the installer that is executing the upgrade.
As a workaround I can see myself authoring a CA that runs by the new version to add some registry key after the old product is detected and before the removeexistingproducts action is run. Then during REMOVE=ALL I would look for this key and either run or not run the service removal steps. This seems more like a hack than a solution. I'd prefer to be able to query a property that Installshield has defined for me but am unable to find one yet.
Do any of you know if there are any such properties?