Por que as instalações do msi usam unidades mais lentas sobre as mais rápidas no Windows 7?

7

Tenho notado que a unidade mais lenta no meu sistema é mais usada durante a instalação do msi. Eu principalmente percebo isso ao executar as atualizações do Windows, mas parece ser msi instala em geral.

A configuração que eu vi pela última vez isso acontecer foi executando o Windows 7 com as seguintes unidades:
Sata:
240GB SSD NTFS ~ 515MB / s Unidade do sistema operacional
1TB NTFS ~ 110MB / s
Firewire:
4TB ExFAT ~ 80MB / s

Eu acho que o Windows escolheria a unidade mais rápida com espaço disponível para arquivos temporários. Mas, em vez disso, escolherá a unidade externa com a velocidade de transferência mais lenta. Eu também poderia entender a escolha do 1TB por não ser um ssd em uma tentativa de preservar a longevidade da capacidade de gravação do ssd. Por que isso acontece? Existe uma maneira de forçar essas instalações a usar a unidade do sistema operacional ou uma unidade específica?

Joshua C
fonte
2
O Windows usa a unidade do sistema, a menos que você altere os locais de seus arquivos temporários.
Tamara Wijsman
4
Acho que o Windows escolhe o disco com mais espaço livre, independentemente de qualquer outra coisa. Você pode confirmar que a unidade de 1 TB é aquela com mais espaço livre disponível?
fmanco
@TomWijsman: Os locais dos arquivos temporários não foram alterados. Neste caso, estava executando atualizações do Windows em uma nova instalação.
Joshua C
@criziot: Isso está correto, o externo tem a maior quantidade de espaço.
Joshua C

Respostas:

11

Quando um MSI é executado, ele vê se a variável ROOTDRIVE está definida internamente no MSI. Se não estiver definido no msi para uma instalação normal, ele será configurado para a unidade local com o maior espaço livre (e as unidades normalmente maiores são mais lentas).

Se você estiver executando uma instalação administrativa (a administração geralmente é usada apenas para instalação usando a diretiva de grupo), ela adicionará outra etapa ao processo descrito anteriormente. Ele usará a primeira unidade de rede disponível que é gravável em vez da maior unidade local primeiro e, em seguida, se não houver nenhuma, ela tentará usar a maior unidade local.

Você pode definir o parâmetro ROOTDRIVE executando o seu msi usando o seguinte comando

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

No entanto, se dentro do msi, o autor do msi definir o caminho do ROOTDRIVE no script de instalação que será alterado, substituirá a configuração que você definiu na linha de comando.

Scott Chamberlain
fonte
If ROOTDRIVE is not defined it uses the first network drive it can find that is writable.Fonte? É muito estranho usar a rede para instalações ...
Tamara Wijsman
1
@TomWijsman - O link que ele forneceu é prova suficiente. Vou citá-lo para você "Durante uma instalação administrativa, o instalador define ROOTDRIVE para a primeira unidade de rede conectada que pode ser gravada. Se não for uma instalação administrativa ou se o instalador não encontrar unidades de rede, o instalador definirá ROOTDRIVE para a unidade local que pode ser escrita para ter mais espaço livre ". Espero mais de alguém com sua reputação.
Ramhound
@TomWijsman A razão para isso é para instalações administrativas que você normalmente está instalando na rede em massa de qualquer maneira e não saberia com certeza se há espaço para extrair os arquivos temporários no computador de destino. Eu acredito que essa é a lógica dessa política. Eu duvido que Joshaua esteja fazendo uma instalação administrativa, eu reformulei minha resposta para deixar isso mais claro.
Scott Chamberlain
@Ramhound: Eu não esperava mais nada de alguém com seu nome / idade. Eu só estou procurando uma explicação / raciocínio para tal escolha, não há nada de errado aqui. Pare de escolher os mais jovens, obrigado ...
Tamara Wijsman
@ScottChamberlain: Obrigado, faz sentido a partir de um ponto de vista do ServerFault ... :)
Tamara Wijsman