/// Win32 MSI API: /// MsiEnumComponents ///
/// Win32 MSI API: /// MsiEnumComponentsEx ///
/// Win32 MSI API: /// MsiGetProductCode ///
/// Because clients are not ordered, any new component has an arbitrary index. /// This means that the property may return clients in any order. ///
/// Win32 MSI API: /// MsiEnumClients, /// MsiEnumClientsEx ///
/// Win32 MSI API: /// MsiGetComponentPath, /// MsiGetComponentPathEx ///
/// If the component is a registry key, the registry roots are represented numerically. /// For example, a registry path of "HKEY_CURRENT_USER\SOFTWARE\Microsoft" would be returned /// as "01:\SOFTWARE\Microsoft". The registry roots returned are defined as follows: /// HKEY_CLASSES_ROOT=00, HKEY_CURRENT_USER=01, HKEY_LOCAL_MACHINE=02, HKEY_USERS=03, /// HKEY_PERFORMANCE_DATA=04 ///
/// Win32 MSI APIs: /// MsiGetComponentPath, /// MsiGetComponentPathEx, /// MsiLocateComponent ///
/// Because qualifiers are not ordered, any new qualifier has an arbitrary index, /// meaning the function can return qualifiers in any order. ///
/// Win32 MSI API: /// MsiEnumComponentQualifiers ///
/// Win32 MSI API: /// MsiEnumComponentQualifiers ///