我准备在"Windows安装程序的权威指南"(Phil Wilson - 第14章 - "Bootstrappers和临时文件夹")中,引导程序不应该从临时目录运行MSI,因为"Temp文件夹也可以被删除很容易..然后当您修复或修改产品时文件可能会消失.
这是真的?我认为当MSIEXEC开始安装MSI时,它会在C中的某处复制:所以修改/修复不会使用Temp目录中的原始MSI.你同意,还是不同意我(或菲尔).
嗯,是的它确实复制了......但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已删除/不可用.