Get MSI table data from within CA
I'm working on a CA that needs the list of services I am installing. Currently I'm attempting this using PowerShell. It's used for uninstall and upgrade only right now, so I have it working where I use a pattern to get the list of my services with a wildcard (e.g. "MyServices-*"). I'm just wondering if there's a better way to get this so if I change the services to "SomeServices-*" the CA will automatically get the correct list, I won't have to find everywhere I used patterns to find my services.
I was hoping I might be able to pull it in using Get-Property, but the services we install don't appear to be listed there. I did find the services in the MSI table; in Additional Tools > Direct Editor I can scroll down to Tables > ServiceInstall and I get the list I'd like. If I could call something that would read Tables > ServiceInstall > * and get the values of the Name column, this would be great!
I'm finding articles on how to pull this from the MSI file, but I'm curious if there's a way to query the MSI that called the CA, like how I can Get-Property, or Trace-Info. Otherwise it looks like I might need to find where the MSI is extracted and read the database that way.
Yes this is possible. I've never needed this, but I have an old book from InstallShield Press (2003) with an example in cpp how to read a table from within a custom action.
I'm not sure if it is allowed to post this here (copyright), but if this is in principle what you are looking for, I can try to write a "similiar" example and post it here.
Or someone from InstallShield give permission to post here.