我已经使用Wix为我的应用程序创建了一个没有UI的setupkit(这里称为“XYZ”)。
如果我在运行XYZ.exe时双击MSI,它会通知我进程正在锁定文件:我可以选择终止锁定进程或者我可以中止安装。 这很好:作为用户,我可以决定做什么。
但是当我从命令行运行相同的MSI时,
msiexec / i XYZ.msi / quiet / norestart
如果发现XYZ.exe
正在运行,它将被终止。这在我的场景中是完全不可接受的:MSI应该中止安装并退出。
如果设置“Mondo”接口(或任何其他接口),相同的setupkit将按预期工作。
解决方案是什么?
答案 0 :(得分:6)
您链接的文章说重启管理器会关闭正在运行的进程以缓解重启,并且应该在安装完成后启动该进程。它还提到哪些属性控制与Restart Manager的交互:
设置为2
时
当前正在使用受更新影响的文件的进程或服务仅在已注册重新启动时才会关闭。如果尚未为重新启动注册任何进程或服务,则不会关闭任何进程或服务。
确保MSIDISABLERMRESTART
的值为0
。在这种情况下,Restart Manager将重新启动它关闭的所有进程和服务。
如果禁用关闭正在运行的进程,安装将不会失败:它将成功,Windows Installer将启动系统重新启动以完成更新。您可以使用/norestart
选项来禁止重新启动。但建议尽快重启,因为系统不处于一致状态。
因此,最好教您的进程与Restart Manager进行通信,以便减轻重启。