【问题标题】:WiX installer taking up too much disk space. How can I avoid disk sprawl with my installersWiX 安装程序占用太多磁盘空间。如何避免安装程序导致磁盘蔓延
【发布时间】:2014-02-18 03:08:19
【问题描述】:

几年来,我一直在研究一组安装程序,并且开始遇到安装软件包时使用的磁盘空间量的问题。安装程序运行良好,但在此过程中安装/复制了一些冗余文件集。我承认我的一些假设可能不正确,但这是基于我对 MSI 流程的最佳理解。让我解释一下……

1.) 自解压文件 - 创建第一组冗余文件的用户下载压缩的 MSI、相关的引导程序包和 setup.exe 文件。没什么大不了的,因为安装后很容易删除。

2.) Extracted Files 文件夹 - 运行 EXE 后,文件被提取到启动引导程序的静态位置。这现在已经在硬盘驱动器上创建了第二组未压缩的冗余文件。这些文件对于能够根据需要重新安装调试安装很有用,但在安装完成后可能不需要。我一直不清楚补丁安装是依赖于这些文件还是仅依赖于存储在 C:\Windows\Installer 中的文件。假设是后者。

3.) TEMP 文件夹 - 当安装程序从提取的位置运行时,它会将文件复制到 TEMP 文件夹并从该位置运行文件。这将创建第三组冗余文件。同样,不清楚这些文件是否可以在安装后删除,或者 MSI 是否有一个自动化过程来实现这一点。

4.) Windows\Installer 文件夹 - 如果我理解正确的话,这是存储管理修补功能的某种剥离文件集的位置。所以这是第四组文件,可能小于或可能不小于某些提取的文件集。这个不需要删除,所以补丁可以工作。

5.) 安装文件夹 - 软件的最终安装位置。这是安装到我的计算机上的第 5 组文件,当然也是所需的文件组。

我想更好地了解这个过程,以便改进我分发软件的方式,从而避免或解决我遇到的一些需要许多不同文件集的问题。我对可能存在但我没有观察到的任何最佳实践持开放态度。感谢您的帮助。

【问题讨论】:

    标签: wix windows-installer disk


    【解决方案1】:

    我无法准确说出您正在使用的引导程序,但您可能会调查使用 WiX v3.8 中的 Burn 引导程序来创建软件包捆绑包。我知道它是如何工作的细节,它会减少你现在所经历的副本数量。

    1. 自解压文件 - 一个捆绑包,它可以包含单个可执行文件中的所有文件,也可以根据需要从 Internet 下载它们。在后一种情况下,自解压文件可能约为 250K。

      当然,安装完成后就可以删除了。

    2. 包缓存 - 刻录引擎会小心地将文件下载到 TEMP 位置,验证它们的完整性并将它们移动到众所周知的包缓存中,而不会创建任何其他副本。包缓存很重要,因为 Windows Installer 可能会遇到需要原始源文件的情况。如果该位置位于已删除的 TEMP 位置,则用户将很难提供原始源文件。包缓存还提高了安装的可靠性。最后,它是一个缓存,因此它*可以*被删除(尽管不推荐),并且下次执行 Bundle 会将必要的包放回缓存中。

      此外,此内容是原始源媒体,仍然可以压缩。

    3. Windows\Installer 文件夹 - Windows Installer 将缓存 .msi 文件。如果您没有在 .msi 文件中嵌入cabinet 文件(使用Bundle 时不需要这样做,因为Bundle 可以根据需要嵌入所有文件),那么缓存的.msi 文件应该小于几兆字节。

    4. 安装文件夹 - 这是您的应用程序,您可能需要这些文件。 :)

    因此,最终使用 Burn 引擎时,您最终应该得到一份未压缩的副本(应用程序本身)、一份压缩的副本(包缓存),以及缓存的 .msi 文件的一点点开销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多