我使用InstallShield创建了一个安装程序。在升级或卸载期间,在安装验证过程后,我会收到一个警告对话框,其中包含以下消息:
安装程序必须更新在系统运行时无法更新的文件或服务。如果选择继续,则需要重新启动才能完成安装。
我在MSI日志文件中发现以下内容:
MSI(4C:78)[18:17:52:182]:重启经理:检测到ID为4、友好名称为“System”、类型为RmCritical且状态为1的应用程序正在使用文件。MSI(4C:78)[18:17:52:182]:重启经理:已检测到关键应用程序正在使用文件[ % s],因此需要重新启动。MSI(% s)(4C:78)[18:17:52:182]:注:1:1610
我想知道为什么我得到这个消息,以及如何避免这种情况。
(我已经检查了以下注册表项,它有oldmsedge.exe,我不认为它与此问题有关)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\FileRenameOperations
3条答案
按热度按时间shyt4zoc1#
可以设置以下属性:
REBOOT=ReallySuppress MSIRESTARTMANAGECONTROL =Disable
5anewei62#
挂起文件重命名:
FileRenameOperations
键保存了等待在重新引导/重新启动时更新(和/或重命名)的文件和资源的列表。这确实会触发您看到的警告。安装程序发现了您的安装程序试图替换的正在使用的文件,因此希望重新启动计算机,以便在释放所有锁定(通过重新启动)后将新文件版本放置到位。Windows服务:有很多事情会阻止文件被替换。一个常见的问题是,在尝试替换服务正在使用的文件之前,您没有在安装程序中正确关闭正在运行的服务。修复此问题以通过setup.There are mechanisms in MSI to do so关闭有问题的服务(假设服务正常工作-根本无法保证)。
运行应用程序:通常建议您在安装安装程序时关闭所有正在运行的常规Windows应用程序(不仅仅是服务)。这是为了释放类似的文件和资源锁,这些锁会导致文件覆盖或注册表更新失败。
其他锁:文件也可以被其他机制锁定,例如恶意软件扫描程序,防病毒或类似的安全进程。或者其他一些东西,例如备份机制,用户手动打开的临时锁定文件(如果应用程序实际锁定文件),ACL权限问题,以及最糟糕的是:真实的的恶意软件。还有一些更进一步的技术细节。
重新启动管理器:Windows有重启管理器功能来处理这个问题-文件和资源被锁定,无法更新。它本质上是一种应用程序以标准化的方式关闭自己的方法-通过API(方法调用)-以便安装程序和系统进程可以指示有问题的应用程序:
"shut yourself down"
-然后系统将在适当的时候重新启动应用程序。技术说明:Advanced Installer-领先的部署软件制造商-提供making your application support the Restart Manager feature技术方面的入门知识。还有:more on RestartManager here .
友情链接:
jgovgodb3#
这可能不适用于你的情况,但在我的情况下,系统在我的安装中占用了字体文件,我能够通过将字体嵌入为Qt资源而不是将它们安装为文件来解决它。要检查是什么文件导致了问题,请在重启管理器提示符显示时访问regedit中的以下键(技巧发现here):
看看
RegFiles0000
里面有什么,有时候也会有Session0001
,RegFiles0001
等等。然后询问Handle或Process Explorer哪些进程持有什么。由于涉及到系统,您可能需要管理员权限,否则Handle将无法找到任何内容。