Why do msi installations use slower drives over faster ones in windows 7?

I have noticed that the slowest drive in my system is used most during an msi installation. I mainly notice this when running windows updates but it seems to be msi installs in general.

The setup I last saw this occur on was running Windows 7 with the following drives:
Sata:
240GB SSD NTFS ~515MB/s Operating system drive
1TB NTFS ~110MB/s
Firewire:
4TB ExFAT ~80MB/s

I would think that windows would choose the fastest drive with available space for temporary files. But it will instead choose the external drive with the slowest transfer speed. I could also understand choosing the 1TB for not being an ssd in an attempt to preserve the longevity of the ssd write capacity. Why does this happen? Is there a way to force these installations to use the OS drive or a specific drive?


When a MSI executes it sees if the variable ROOTDRIVE is defined internally in the MSI. If it is not defined in the msi for a normal install it will set it to the local drive with the largest free space (and normally larger drives are slower).

If you are performing a Administrative install (Administrative is usually only used for installing using Group policy) it adds another step to the previously described process. It will use the first available network drive that is writable instead of the largest local drive first, then if there are none, it will then attempt to use the largest local drive.

You can set the ROOTDRIVE parameter by running your msi using the following command

msiexec /i package.msi ROOTDRIVE="C:\"

However if inside the msi the author of the msi set the path of ROOTDRIVE in the install script that change will override the setting you set on the command line.