Besides MsiGetProperty on the SourceDir property, there is also the Directory table which stores directory heirarchy information. For more information see:
Q103168 HOWTO: Using the Directory Table
Q105723 HOWTO: Setting a Directory Table Entry At Runtime
Q104462 INFO: Differences Between Directory Table Entries and Path Variables