Windows Installer usando a unidade USB para fins temporários

13

Ao instalar aplicativos criados em torno do Windows Installer, parece que ele costuma usar meu disco rígido USB externo (quando conectado) como o local temporário enquanto expande e instala o aplicativo (cria uma pasta fora da raiz com um nome de guia) . Existe alguma maneira de mudar isso, para sempre usar como padrão uma unidade específica?

Esse parece ser o caso no Windows Vista e 7, não tenho certeza sobre as versões anteriores.

EDIT: As variáveis ​​de ambiente atuais são assim:

TEMP=C:\Users\<me>\AppData\Local\Temp
TMP=C:\Users\<me>\AppData\Local\Temp

Edição: Eu tenho uma suspeita engraçada de que ele está usando a unidade com o maior espaço livre disponível.

Douglas Anderson
fonte
Não sei se existe uma maneira de mudar ou não, mas vou lhe dizer por que isso acontece. Ele usa a unidade que possui mais espaço livre para gerar o diretório temporário com os arquivos e, como você diz, seu nome será exclusivo.
Xandy
2
Eu acredito que você está interessado em algo com a edição "usando o maior espaço livre disponível". Minha experiência é totalmente anedótica, mas adicionei um HD de terabyte à minha caixa do Windows 7 logo após a instalação do sistema operacional. No dia seguinte, ele executou as atualizações do Windows. Ainda não havia colocado nenhum arquivo na nova unidade e, após a reinicialização, encontrei um monte de arquivos temporários armazenados ali.
TechParadox

Respostas:

13

Eu acredito que o Windows Installer usa a %TMP%variável de ambiente. Convém verificar esse valor e verificar se está apontando para a letra da sua unidade HD externa.

ATUALIZAR

Estranho ... isso parece ser um "recurso" do Windows Installer (para usar a unidade com mais espaço livre). Não consigo encontrar uma opção para desativá-lo. Gostaria de saber se você pode bloquear o sistema por permissões / sinalizador somente leitura ou algo semelhante. Me incomoda que a Microsoft não lhe dê a opção de desativar isso.

2ª ATUALIZAÇÃO

Ok - então eu encontrei este artigo sobre a propriedade ROOTDRIVE . De nota particular:

Se ROOTDRIVE não estiver definido em uma linha de comandos ou criado na tabela Property, o instalador definirá essa propriedade. Durante uma instalação administrativa, o instalador configura o 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 configurará ROOTDRIVE para a unidade local que pode ser gravada para ter o maior espaço livre.

Andrew Flanagan
fonte
Acho que não. Minhas variáveis% TEMP% e% TMP% apontam para minha unidade C: e os instaladores geralmente copiam arquivos para minha unidade R:.
303 Snark
TEMP e TMP são definidas como: C: \ Users \ <me> \ AppData \ Local \ Temp
Douglas Anderson
Eu me deparei com uma situação semelhante. Não tenho certeza qual é o remédio.
Vivek
Entendo que, se a propriedade ROOTDRIVE não estiver definida, os arquivos temporários vão para o disco com a maior quantidade de espaço livre. Mas a questão mais interessante é por que esses arquivos temporários (!) Não são removidos automaticamente quando a instalação é concluída?
Erik
3

Eu tive esse problema com um disco rígido externo usado exclusivamente para fotos pessoais e vídeos caseiros. Desativei as permissões de 'exclusão' para todos os usuários para evitar a perda de dados. No entanto, a unidade começou a se encher de arquivos tmp MSI. Qualquer remoção automática foi recusada, assim como qualquer ferramenta de limpeza, porque (como eu mencionei) eu havia recusado permissões de exclusão. Minha solução foi desativar todas as permissões na unidade de destino para todos os usuários (com exceção dos privilégios de 'gravação' para um usuário), impedindo o sistema operacional de gravar na unidade em primeiro lugar. Espero que isto ajude.

agulha
fonte