About Windows Installer, the .NET Framework, and Visual Studio.
There are times when repairing or servicing a product that source media is required. As more product installs move to web-based installs, these prompts for source are harder to solve. In order to replace missing, corrupted, or older files, the source is required because those files have to come from somewhere.
Burn, the bootstrapper application in the Windows Installer XML toolset, aims to solve that by caching setup packages on disk – specifically in %ProgramData% or %LocalAppData% depending on whether a package is installed per-machine or per-user, respectively. Whenever a user repairs a bundle, the cached packages are used to mitigate source prompts. And because this location is registered with Windows Installer, even if Windows Installer package (MSI or MSP) requires source it will be resolved automatically.
For more reasons and examples of why source is required, please read the following links:
Caching packages is optional in Burn, but caching packages does help solve a number of potential issues that may be difficult – and can certainly be annoying – to resolve. And since source resolution cannot prompt during silent installs, caching improves the robustness of deployments.
Starting with Windows Installer 5 (or maybe it was implemented in 4.5) aren't the full packages already cached? When the Burn package cache is registered with Windows Installer, does Windows installer only use the Burn cache for that particular package or does it also still maintain its own package cache for that particular package?
@BryanJ, MSI will cache only the .MSI file in its entirely starting with 5.0 (.MSPs were always cached in their entirety since external CABs are not supported). But Windows Installer will still not consider the .MSI cached file as valid source if source resolution is required. So we need to cache the packages anyway. Most of the packages we ship in VS11 have all external CABs partly for that reason, and also because larger files (typically > 250MB) will often fail digital signature checks (either because of memory exhaustion or corrupted downloads, which increases in chance as the file size increases).
Without external CABs, the MSIs are most often fairly small and would not have a major impact (i.e., if you're that low on disk space that a small .MSI file makes a difference, changes are other, more serious problems will occur like failure to expand the pagefile).
Thanks Heath. I did not realize that the .MSI cached in its entirety wouldn't be considered as valid source. By habit I always used embedded .cabs and never gave it another thought. Loving the work done on Burn btw.
Dose the 'package cache' folder can be removed after installed, it taks so much place in my disk.
@Jonathan Zhou, moving the package cache is not supported.