iexpress重启的条件是什么

What is the condition for iexpress restart

我使用 iexpress.exe 基于批处理文件快速创建一个简单的安装程序。 IExpress 向导提供选项 "Only restart if needed".

但是我如何从批处理文件中判断是否需要重新启动?我尝试在 windows 更新中使用退出代码 3016。但那是行不通的。

顺便说一句:我用

调用批处理文件
cmd.exe /c my.bat

my.bat的内容:

exit /b 3010

我试图让 IExpress 识别 return 代码。不过,我认为您想要 3010,而不是 3016。该命令也将是:

exit 3010

[否 /b – 我们想要 return 来自 cmd 的退出代码,而不是设置 errorlevel]。

但它没有用,这让我想知道 IExpress 是否愿意检查一下。


无论如何,我用 Process Monitor 做了一些调查。在 安装过程 运行 之后,IExpress 似乎立即检查 PendingFileRenameOperations 注册表值以查看文件是否已标记为重命名(或删除)。如果有,它会确定需要重新启动,并采取您在 SED 文件中指定的操作(例如提示用户重新启动;或只是重新启动;或什么都不做)。

In case you’re not familiar with it, the PendingFileRenameOperations registry value is a list of files to be moved or deleted on the next system boot.

您可以使用 Sysinternals MoveFile 来模拟这些计划在下次启动时重命名之一。将 movefile.exe 添加到您的 IExpress 存档中,并在您的批处理文件中添加如下一行:

movefile.exe -accepteula foo bar

实际的文件名并不重要 - 只需使用您确定存在的文件即可。 (只要您没有更改批处理文件中的目录,它仍然是一个文件,例如 %temp%\IXP000.TMP。)

请注意,您需要 运行ning 提升权限(运行 作为管理员)。

在这里工作得很好。每次 运行 后都会弹出 IExpress,提示用户重新启动。