在安装基于 Windows Installer 构建的应用程序时,它似乎经常使用我的外部 USB 硬盘(连接时)作为临时位置,同时展开并安装应用程序(在根目录中创建一个具有 guid 名称的文件夹)。有没有办法更改它,使其始终默认为特定驱动器?
这似乎是 Windows Vista 和 Windows 7 的情况,不确定以前的版本是否也是如此。
编辑:当前环境变量如下所示:
TEMP=C:\Users\<me>\AppData\Local\Temp
TMP=C:\Users\<me>\AppData\Local\Temp
编辑:我有一种奇怪的怀疑,它正在使用具有最大可用空间的驱动器。
答案1
我相信 Windows 安装程序使用%TMP%
环境变量。您可能需要检查此值,看看它是否恰好指向您的外部 HD 驱动器号。
更新
奇怪……这似乎是 Windows Installer 的一项“功能”(使用可用空间最多的驱动器)。我找不到禁用它的选项。我想知道您是否可以通过权限/只读标志或类似的东西锁定系统。微软不提供关闭此功能的选项,这让我很烦。
第二次更新
好的——所以我找到了这篇关于 ROOTDRIVE 属性的文章. 特别值得注意的是:
如果命令行中未设置 ROOTDRIVE 或未在属性表中编写 ROOTDRIVE,则安装程序会设置此属性。在管理员安装期间,安装程序会将 ROOTDRIVE 设置为它找到的第一个可以写入的连接网络驱动器。如果不是管理员安装,或者安装程序找不到网络驱动器,则安装程序会将 ROOTDRIVE 设置为可以写入的本地驱动器 拥有最多的自由空间。
答案2
我在专门用于存储个人照片和家庭视频的外置硬盘上遇到了这个问题。我禁用了所有用户的“删除”权限,以防止数据丢失。然而,驱动器开始被 MSI 临时文件填满。任何自动删除都被拒绝,任何清理工具也是如此,因为(正如我提到的)我拒绝了删除权限。我的解决方案是关闭所有用户对目标驱动器的所有权限(但“写入”权限除外一用户),从而阻止操作系统首先写入驱动器。希望这能有所帮助。