Initial commit of changes from dblock/msiext 4

based on
https://github.com/dblock/msiext/commit/29302ce78fafe783a8f9c0049a3cbcf97d2686e3
Initial commit of changes from dblock/msiext 5

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