【问题标题】:Add an Optional Buffer to File Costing in Installshield在 Installshield 中向 File Costing 添加可选缓冲区
【发布时间】:2015-11-19 09:22:19
【问题描述】:

我正在为具有相当大的运行时磁盘空间要求(1.5 Gb)的应用程序编写安装程序(Installshield 2013 基本 MSI)。该空间用于记录文件,该文件可以位于用户机器上的任何硬盘驱动器上。在安装时,我希望安装程序:

  • 检查所选驱动器上的录制文件是否有足够的空间。如果不是,请阻止安装并让用户可以更改目标驱动器。 (这行得通)
  • 检查安装后是否至少有剩余空间(一些最小空间,例如 500Mb)。如果不是,建议更改目标驱动器,并让用户可以更改目标驱动器或继续进行。 (这就是我挣扎的地方)

是否有任何方法可以计算出文件成本计算后一个驱动器上会剩余多少空间? Windows 安装程序中的此信息似乎没有任何变量。

示例: 假设录制文件是 1GB,我想要一个 500Mb 的缓冲区。如果有

  1. 不到 1 Gb 可用空间:要求用户更改目标驱动器
  2. 1Gb 和 1.5 之间:警告用户,允许更改目标驱动器或继续
  3. 1.5Gb 以上:继续安装。

我做了什么:我将 ReserveCost 元素与我的录制文件组件相关联,它正确处理了下面的案例 1 和 3。如何处理案例 #2?

【问题讨论】:

    标签: windows-installer installshield


    【解决方案1】:

    这就是 Windows Installer 的 ReserveCost Table 的用途。 MSI 会自动计算成本,但您可以通过此表为其赋予额外的权重。要在 InstallShield 中访问此表,请使用直接编辑器。

    这是一个半生不熟的想法,您或许可以对其进行扩展。也许您可以创建一个可选的“功能”,除了保留 500mb 空间的组件之外,它什么都不做。然后,也许您可​​以制定您的 UI 体验,让您的用户可以轻松地打开和关闭它,以便重新计算成本并继续使用可用空间。

    我不相信我喜欢这种体验,但这是我能想到的最好的体验。

    【讨论】:

    • 这就是我所做的。但是没有办法判断是空间不够(在这种情况下安装会失败,所以我们要阻止用户继续)还是没有足够的缓冲区(在这种情况下用户需要警告,但允许继续)
    • 我可以想出很多方法来做到这一点,但我想我不会。它只会使安装程序更加复杂和脆弱。我只需安装应用程序,然后在应用程序本身中处理数据文件位置和空间要求。
    • 请记住,一旦设置,目录在 Windows Installer 中是不可变的。因此,如果您安装 DATADIR 组件,除非您卸载/重新安装,否则您将被卡住。加入应用程序可以消除这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2020-06-28
    • 2014-11-21
    相关资源
    最近更新 更多