【问题标题】:Why does MSI installer succeed when chosen component was not installed?为什么未安装所选组件时 MSI 安装程序会成功?
【发布时间】:2019-08-14 22:28:03
【问题描述】:

我有一个 MSI 安装程序包,它强制用户从可能要安装的组件列表中进行选择,例如“2018 版”/“2019 版”/“2020 版”。所选组件将自行安装在“ProgramData”内的文件夹中,该文件夹通常可由系统上的每个管理员帐户写入。但是,在最近的客户支持中,此文件夹是由 SYSTEM 帐户创建的。可能是客户的 IT 安装了具有 SYSTEM 权限的环境。

当安装程序尝试将文件放入此文件夹时,它显然失败了。问题是安装程序注意到缺少权限,但仍然成功。

当无法安装用户选择的组件(或任何其他重要组件)时,是否有任何方法可以强制 MSI 安装程序中止/抛出错误?

【问题讨论】:

  • 我不确定您的诊断是否正确。你能在测试系统上重现这个问题吗?如果有,请出示相关日志。
  • 我们需要一个极简的可重现示例和日志文件。

标签: permissions wix windows-installer acl


【解决方案1】:

您想要的应该是 WiX / MSI 的默认行为,如下所述。没有日志文件很难说发生了什么。

看看 WiX File@Vital 属性:https://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html

如果文件很重要,则安装无法继续,除非该文件 安装成功。用户将无法忽略 安装此文件时出错。如果发生错误,他们只能重试 安装文件或中止安装。默认为“是” 除非 -sfdvital 开关 (candle.exe) 或 SuppressFileDefaultVital 使用属性 (.wixproj)。

它在 Windows Installer 文件表中设置基础 msidbFileAttributesVital 位掩码,如下所述:

https://docs.microsoft.com/en-us/windows/win32/msi/file-table

该文件对于组件的准确操作至关重要 它属于。如果安装一个文件带有 msidbFileAttributesVital 属性失败,安装停止并 被回滚。在这种情况下,安装程序会显示一个对话框 没有忽略按钮。如果未设置此属性,则 文件安装失败,安装程序显示一个对话框 带有忽略按钮。在这种情况下,用户可以选择忽略 无法安装文件并继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多