command-line - 无 UI 的 WiX 命令行选项 '/quiet' 会终止正在运行的进程

标签 command-line wix installation windows-installer

我已经使用 Wix 为我的应用程序(此处称为“XYZ”)创建了一个没有 UI 的安装包。

如果我在 XYZ.exe 运行时双击 MSI,它会通知我进程正在锁定文件:我可以选择终止锁定进程或中止安装。 这很好:作为用户,我可以决定要做什么。

但是当我从命令行运行相同的 MSI 时,

msiexec/i XYZ.msi/quiet/norestart

如果 XYZ.exe 被发现正在运行,它将被终止。这在我的场景中是绝对不能接受的:MSI 应该中止安装并退出。

如果我设置“Mondo”接口(interface)(或任何其他接口(interface)),相同的安装包会按预期工作。

解决方案是什么?

最佳答案

您链接到的文章说重启管理器会关闭正在运行的进程以减轻重启,并且它应该在设置完成后启动该进程。它还提到哪些属性控制与 Restart Manager 的交互:

MSIRMSHUTDOWN当设置为 2 时:

Processes or services that are currently using files affected by the update are shut down only if they have all been registered for a restart. If any process or service has not been registered for a restart, then no processes or services are shut down.

确保MSIDISABLERMRESTART值为 0。在这种情况下,Restart Manager 将重新启动它关闭的所有进程和服务。

另见 MSIRESTARTMANAGERCONTROL


如果您禁止关闭正在运行的进程,安装不会失败:它会成功并且 Windows Installer 将启动系统重新启动以完成更新。您可以使用 /norestart 选项来抑制重启。然而,建议尽快重新启动,因为系统未处于一致状态。

因此,最好教会您的进程与 Restart Manager 通信,以便减轻重启。

关于command-line - 无 UI 的 WiX 命令行选项 '/quiet' 会终止正在运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354767/

相关文章:

windows - 如何使用 Windows 命令提示符删除空文件夹?

mysql - 通过 CentOS 命令行更改 MySQL 上的条目?

Linux命令行视频编辑

windows - 批处理文件中的文件名需要加上 _YYYY_MM 后缀

.net - WiX - 安装 Windows 服务并授予权限

ubuntu - 在 ubuntu 14.04.3 上安装 gcc 时出错

c# - WiX v3 安装项目,无法通过应用和功能卸载

WIX - 从环境变量路径获取源文件

python - 在特定版本的 OpenCV 中使用 python

scripting - 一步安装程序