InstallValidate作
InstallValidate作验证已将 成本 的所有 卷 是否具有足够的空间用于安装。 如果任何卷磁盘空间不足,InstallValidate作将结束安装,并出现严重错误。
InstallValidate作还会通知用户是否当前正在使用活动进程覆盖或删除一个或多个文件。 有关详细信息,请参阅 系统重启。
序列限制
CostFinalize作以及允许用户修改选择状态和/或目录的任何 UI 对话框序列应在 InstallValidate作之前进行排序。
自定义作 在 InstallValidate作之前必须对更改功能或组件的安装状态进行排序。
ActionData 消息
没有 ActionData 消息。
言论
通常,当用户尝试启动文件复制时,早期 UI 对话框序列应执行与 InstallValidate作相同的验证。 如果所选卷没有足够的空间进行安装,此 UI 对话框序列应显示 磁盘空间不足 对话框。 如果磁盘空间不足,则应编写 UI 对话框,以防止用户继续安装。 对于静默安装,没有用户界面,如果磁盘空间不足,InstallValidate作将终止安装。 如果启用了日志记录,则会在日志文件中记录过早终止的原因。
如果在文件 成本期间,任何文件被打开以供执行或修改,则会将条目添加到内部 FilesInUse 表中。 FilesInUse 表包含文件的名称和完整路径的列。 执行 InstallValidate作时,安装程序会查询 FilesInUse 表以获取条目,并使用该文件确定进程的名称。 InstallValidate作将一条记录添加到 ListBox 用户界面表,该查询标识的每个唯一进程。 记录在每个列中包含以下值:
属性:FileInUseProcess
值:进程名称
文本:进程主窗口标题中包含的 文本
然后,InstallValidate作会显示“使用 ”对话框中 文件。 此对话框显示必须关闭的进程,以避免重启系统以替换正在使用的文件。
InstallValidate作使用保留名称 FilesInUse 对话框查询创作对话框的 对话框 表,并显示该对话框。 此对话框必须包含绑定到名为 FileInUseProcess 的属性的 ListBox 控件。 按照约定,此对话框具有 退出、重试或 忽略 按钮,但由 UI 作者决定。 每个按钮都应绑定到 ControlEvent 表中的 EndDialog ControlEvent。 InstallValidate作按如下方式响应由 DoAction ControlEvent 返回的值,如以下 EndDialog 参数之一所决定:与用户按下的按钮关联的参数之一:
重试:清除添加到 ListBox 表的所有值,并重复整个文件 成本 过程,重新检查仍在使用的文件。 如果仍将一个或多个进程标识为使用要覆盖或删除的文件,则该过程将重复;否则,InstallValidate 将控制权返回到状态为 msiDoActionStatusSuccess 的安装程序。
Exit:InstallValidate作立即将控制权返回到状态为 msiDoActionStatusUserExit 的安装程序。 这会终止安装。
任何其他返回值:InstallValidate作会立即返回具有 msiDoActionStatusSuccess 状态的安装程序的控制。 在这种情况下,由于一个或多个文件仍在使用中,后续的 InstallFiles 和/或 InstallAdminPackage作必须计划重新启动系统时替换或删除正在使用的文件(s)。
如果数据库中没有 ListBox 表,InstallValidate 会以无提示方式退出,而不会出错。
分号是转换、源和修补程序的列表分隔符,不应在这些文件名或路径中使用。
安装程序永远不会考虑在只读位置中标记为只读的文件。
如果用户界面级别基本,则会向用户显示包含 中止 和 重试 按钮的默认 磁盘空间不足 对话框。