首页 > 解决方案 > 为什么 InstallShield 2015 InstallScript 安装程序在卸载期间要求重新启动?

问题描述

多年来,我们一直在使用使用 InstallShield 2015 SP2 工具创建的 Installscript 安装程序来安装我们的应用程序,但是在处理我们的新版本时,我在此 Installscript 安装程序的卸载过程结束时收到了一个新对话框。它显示卸载完成的消息,并在下面提到的对话框底部提供两个单选按钮选项。

  1. 是的,我现在想重新启动计算机。
  2. 不,我稍后会重新启动计算机。

但是,安装程序的 Installscript 项目中没有添加此类代码,该代码在卸载完成后要求重新启动。我确实在谷歌上搜索过,但没有运气。希望任何人都知道如何在安装程序卸载结束时阻止此对话框出现。

标签: installshieldinstallscriptapplication-restartinstallscript-msiinstallshield-2015

解决方案


简短回答:我的猜测是,一个正在使用的文件(锁定)导致了自动重启提示的调度出现。锁定文件几乎总是导致此类问题的原因,并且提示是 MSI 本身的内置功能。正在使用的文件可能是正确关闭的服务文件(MSI 中的超时或设计错误)。下面的一些细节。You should enable logging to work out what triggered the reboot prompt.


Docs Microsoft重新启动请求的记录。来自日志文件的示例:

Info 1603. The file E:\testdb\Test\CustAct2.dll is being held in use.

Info 1903.Scheduling reboot operation: Deleting file [filename]. Must 
reboot to complete operation.

日志记录:您应该启用日志记录以找出触发重启提示的原因。这是关于日志记录的答案: Enable installation logs for MSI installer without any command line arguments。您可以1)启用日志记录策略,然后您可以找到在 TEMP 文件夹中运行的每个卸载的日志。2)您还可以调用卸载msiexec.exe /x并在命令行中指定日志记录位置。有关详细信息,请参阅链接的答案。


卸载日志:有关卸载日志命令,请参见此处的第 3 节:在不使用 msiexec 的情况下从命令行卸载 MSI 文件

msiexec.exe /x "c:\filename.msi" /QN /L*V "C:\msilog.log" REBOOT=ReallySuppress
msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /QN /L*V "C:\msilog.log" REBOOT=ReallySuppress

重新启动提示原因:很可能导致重新启动提示的原因是文件正在使用,因此无法删除。MSI 具有自动魔术功能,然后触发重新启动以替换或删除文件。重新启动使这成为可能。重新启动提示还有许多其他潜在原因。您可以注册需要重新启动才能正确取消注册的内容。与使用中的文件相同,但它可能涉及系统范围内的各种注册。

服务:使用中的文件的一个特例是服务。你的设置里有吗?很多时候,重新启动提示是由服务未正确关闭引起的。这可能是因为时间问题(停止速度太慢),或者安装程序中没有适当的命令用于卸载场景来停止服务,因为它应该在卸载时停止。


REINSTALLMODE:请注意,将REINSTALLMODE 属性"amus"- 强制覆盖(文件和注册表) - 已表明会导致许多 MSI 软件包在安装时出现更多重新启动提示(也会影响卸载,尽管我不经常看到它设置用于卸载)。


重启管理器:Windows 中有新功能可以处理重启问题。The overall idea is to prefer to shut down applications auto-magically with a restart parameter registered for the application to restart itself after the deployment operation - rather than triggering system reboots. 这里有关于此功能的信息:


推荐阅读