在继续安装之前应关闭测试执行

Test Execute should be closed before continuing the installation

我正在尝试使用测试 Complete/Test 执行在测试机器上安装第三方安装。我编写了一个 Python 脚本,它调用 PowerShell 脚本并使用 msiexec.

安装位于文件夹中的所有 .msi 文件

我用来调用msiexec的命令:Start-Process -FilePath msiexec.exe -ArgumentList ("/I"$fullPath"", "/qb", "ALLUSERS=TRUE", "/norestart") -Wait

除我的一个安装外,其他所有安装均有效。无法正常工作的那个打开并显示以下消息:

我正在 TestExecute 中执行这些脚本,所以我无法关闭它,因为我的其余测试将无法完成。

我尝试使用的这个安装程序不是我写的,所以我不能用它来编辑任何东西。任何人都知道是什么导致了 .msiTestExecute 之间的冲突,或者知道我可以深入挖掘以确定原因?

文件覆盖:显示此对话框的设置正在尝试替换正在使用的文件,因此您得到此 Restart Manager对话框。这是某些编写不当的服务设置的典型行为(设置应在尝试替换文件之前自行关闭服务),或者安装始终 运行 的应用程序的设置,这样文件就无法被替换绒毛。


基本UI vs 没有UI:你是运行 /qb 选项,表示 Basic UI - 这意味着您会看到简单的进度和错误处理对话框。技术细节在这里:User Interface Levels

FilesInUse Dialog:我不喜欢的一个选项是set the MSIRESTARTMANAGERCONTROL property to Disable as described here(一直在底部).这会禁用 Windows 中较新的 Restart Manager 功能,以支持旧式“FilesInUse Dialog”。我不确定当您 运行 使用 /qb 设置时是否会显示此对话框 - 它可能不会显示它 - 让您的设置看起来完全无声(但事实并非如此)。

适当的静默安装:我会启用 No UI改为使用 /qnmsiexec.exe命令行有几个"aliases"。例如,/quiet 映射到 /qn/passive 大致映射到 /qb!。看起来您正在混合和匹配较新的“标准安装程序命令行选项”和 "real"“msiexec.exe 命令行选项”。前者推出时间晚于后者:

使用什么选项并不重要,但我会始终如一地使用一个或另一个。因此,我会将 /norestart 替换为 REBOOT=ReallySuppress.

所以你可以尝试这样的事情(cmd.exe 版本):

msiexec.exe /I c:\MySetup.msi /qn /L*V "C:\msilog.log" ALLUSERS=1 REBOOT=ReallySuppress

快速参数说明:

/I c:\MySetup.msi = run installation sequence for specified MSI file
/QN = run completely silently
/L*V "C:\msilog.log"= verbose logging 
ALLUSERS=1 = Install per-macine (for all users)
REBOOT=ReallySuppress = do not reboot after install even if reboot is scheduled

WICLB.exe:曾经有一个工具来自 Wise将通过专门用于此目的的 GUI 帮助构建 msiexec.exe 命令行。 I describe it here: WICLB.exe。它随着 Wise 退出市场而消失,但 Wayback Engine 提供了一份副本。


类似问题: