Initial commit of changes from dblock/msiext 1

Based from
https://github.com/dblock/msiext/commit/29302ce78fafe783a8f9c0049a3cbcf97d2686e3
Initial commit of changes from dblock/msiext 2

based on
https://github.com/dblock/msiext/commit/29302ce78fafe783a8f9c0049a3cbcf97d2686e3