我准备在“Windows安装程序的权威指南”(Phil Wilson - 第14章 - “Bootstrappers和临时文件夹”)中,引导程序不应该从临时目录运行MSI,因为“Temp文件夹可以是很容易删除..然后当您修复或修改产品时文件可能会消失。
这是真的吗?我认为当MSIEXEC开始安装MSI时,它会在C中的某处复制:所以修改/修复不会使用Temp目录中的原始MSI。你同意,或不同意我(或与菲尔)。
答案 0 :(得分:5)
嗯,是的,它确实复制了...但MSI中的任何嵌入式CAB都会在缓存MSI之前被剥离。否则,您所做的每次安装都需要一倍的磁盘空间 - 一次用于已安装的文件,一次用于缓存的文件。
许多引导程序将在"%Windir%\Downloaded Installations"
(或类似)中复制原始MSI并从那里运行安装程序 - 确保任何嵌入式CAB文件仍然可用,如果您以后需要运行修复,卸载期间特定CA需要或嵌入文件。
因此,当您可能能够从临时文件夹中运行MSI时,您仍然会遇到问题。当我将MSI下载到桌面并在安装完成时删除它时,我自己也经历过这种情况。
我发现考虑它的最佳方式是在网络部署的背景下,假设你有一个非常大的压缩MSI文件,其中包含在网络中部署的嵌入式CAB文件 - 它没有意义当Windows Installer可以剥离CAB文件时,缓存MSI 和整个源文件(安装所需的磁盘空间加倍),从而在每台PC上缓存少量的本地数据。
根据您的安装创作方式,您可以在没有原始来源的情况下卸载,但您可能没有。而不是假设最坏的情况,Windows Installer只缓存所需的内容,并假设它可以访问原始源(CD,网络共享,下载的文件等),如果修复或卸载需要原始CAB。
基本上,将MSI放在某处,安装它,删除它,然后尝试卸载。如果你成功了,你就没有问题。如果您被问到源文件,那么您已经遇到了Phil所描述的问题:)
编辑:正如迈克尔在下面的评论中指出的那样,同样值得尝试修复MSI已删除/不可用。