Windows Installer que usa una unidad usb para fines temporales

14

Al instalar aplicaciones que se basan en Windows Installer, parece que a menudo usa mi disco duro externo usb (cuando está conectado) como la ubicación temporal mientras se expande e instala la aplicación (crea una carpeta fuera de la raíz con un nombre guid) . ¿Hay alguna forma de cambiar esto para que siempre se ajuste por defecto a una unidad específica?

Este parece ser el caso en Windows Vista y 7, no estoy seguro acerca de las versiones anteriores.

EDITAR: Las variables de entorno actuales se ven así:

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

EDITAR: Tengo la extraña sospecha de que está usando el disco con el mayor espacio libre disponible.

Douglas Anderson
fuente
No sé si hay una manera de cambiarlo o no, pero te diré por qué sucede esto. Utiliza la unidad que tiene más espacio libre para generar el directorio temporal con los archivos y, como usted dice, su nombre será único.
Xandy el
2
Creo que está haciendo algo con la edición "uso del espacio libre más grande disponible". Mi experiencia es totalmente anecdótica, pero agregué un disco duro de terabyte a mi caja de Windows 7 poco después de instalar el sistema operativo. Al día siguiente ejecutó las actualizaciones de Windows. Todavía no había puesto ningún archivo en el nuevo disco y después del reinicio encontré un montón de archivos temporales escondidos allí.
TechParadox

Respuestas:

14

Creo que Windows Installer usa la %TMP%variable de entorno. Es posible que desee verificar este valor y ver si está apuntando a la letra de su unidad HD externa.

ACTUALIZAR

Extraño ... esto parece ser una "característica" de Windows Installer (para usar la unidad con la mayor cantidad de espacio libre). No puedo encontrar una opción para deshabilitarlo. Me pregunto si puede bloquear el sistema mediante permisos / indicador de solo lectura o algo similar. Me molesta que Microsoft no te dé una opción para desactivar esto.

2da ACTUALIZACIÓN

Ok, entonces encontré este artículo sobre la propiedad ROOTDRIVE . De particular interés:

Si ROOTDRIVE no se establece en una línea de comando o se crea en la tabla de propiedades, el instalador establece esta propiedad. Durante una instalación administrativa, el instalador establece ROOTDRIVE en la primera unidad de red conectada que encuentra en la que se puede escribir. Si no es una instalación administrativa, o si el instalador no puede encontrar unidades de red, el instalador configura ROOTDRIVE en la unidad local que se puede escribir para tener el mayor espacio libre.

Andrew Flanagan
fuente
No lo creo. Mis variables% TEMP% y% TMP% apuntan a mi unidad C: y los instaladores a menudo copian archivos en mi unidad R:
Snark
TEMP y TMP están configurados en: C: \ Users \ <me> \ AppData \ Local \ Temp
Douglas Anderson el
Me encontré con una situación similar. No estoy seguro de cuál es el remedio.
Vivek
Entiendo que si la propiedad ROOTDRIVE no está establecida, los archivos temporales van al disco con la mayor cantidad de espacio libre. Pero la pregunta más interesante es ¿por qué estos archivos temporales (!) No se eliminan automáticamente cuando finaliza la instalación?
Erik
3

Tuve este problema con un HDD externo que se usaba exclusivamente para fotos personales y videos caseros. Deshabilité los permisos de 'eliminación' para todos los usuarios para evitar que se pierdan datos. Sin embargo, la unidad comenzó a llenarse con archivos MSI tmp. Se rechazó cualquier eliminación automática al igual que cualquier herramienta de limpieza porque (como mencioné) había rechazado los permisos de eliminación. Mi solución fue desactivar todos los permisos en la unidad de destino para todos los usuarios (con la excepción de los privilegios de 'escritura' para un usuario), evitando que el sistema operativo escriba en la unidad en primer lugar. Espero que esto ayude.

aguja
fuente