Question

I've successfully got my proof of concept MSI installer creating an xml file, and updating the elements as I wish on a fresh install. I have 6 features, if the feature is selected to be installed I want a node created for that feature and an attribute set based on a property.

If I modify the install and remove a feature previously installed, I want the xml node created for it to persist and I wish to set the attribute I set on install to be updated based on the same property (which now has a different value).

Is it possible to leverage InstallShield's existing functionality to do this? It seems I could, and avoid writing a custom action to update my xml when removing a feature. There doesn't seem to be much documentation on isxmlcfg.dll and the custom actions in it.

the CA ISXmlUnInstall is running when I remove a feature - but it appears all that action does is remove the node or leave it...

Was it helpful?

Solution

The problem you are probably encountering is the fact that although you used the property in something ( say registery, ini or xml ) windows installer doesn't natively persist properties in it's database. You have to do this your self. So if you want to do a repair, change, upgrade or whatever and you want to have that same property data, not only do you have to save it to something ( say xml ) but you also have to have a corrosponding AppSearch ( XmlSearch ) that can pull it back into the property so it has a value to be shown during the UI and or writing back out to XML later.

Also consider supporting a pattern where it get's read into a temp property and assigned to the real property only if the real property doesn't already have a value. That way someone could be doing a silent install ( upgrade ) and pass in the property as an override to what was previously configured. ( No clobbering by the search )

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top