【问题标题】:What is the condition for iexpress restartiexpress重启的条件是什么
【发布时间】:2015-10-01 07:18:38
【问题描述】:

我使用 iexpress.exe 快速创建基于批处理文件的简单安装程序。 IExpress 向导提供“仅在需要时重新启动”选项。

但是我如何从批处理文件中得知需要重新启动?我尝试在 Windows 更新中使用退出代码 3016。但这不起作用。

顺便说一句:我用

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

my.bat 的内容:

exit /b 3010

【问题讨论】:

    标签: iexpress


    【解决方案1】:

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

    exit 3010
    

    [否/b——我们想从cmd返回退出代码,而不是设置errorlevel]。

    但它不起作用,这让我想知道 IExpress 是否甚至会费心检查。


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

    如果您不熟悉,PendingFileRenameOperations 注册表值是在下次系统启动时要移动或删除的文件列表。

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

    movefile.exe -accepteula foo bar
    

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

    请注意,您需要为此运行提升权限(以管理员身份运行)。

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

    【讨论】:

    • 感谢您的调查。不幸的是,当我遇到IExpress MaxDiskSize problem 时,我终于使用 7z 创建了一个 SFX 安装程序。无论如何,我会将您的答案标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2017-01-14
    • 2015-12-13
    • 2014-01-25
    • 2010-10-28
    • 2015-09-13
    相关资源
    最近更新 更多