如何引用RebootPending财产在烧伤 (WiX的)引导程序? 我知道属性名称是RebootPending,这实际上是在引用Windows安装程序MsiSystemRebootPending财产。
目前,我想要是这样的:
<bal:Condition Message="There is a restart pending. Please restart your computer before attempting to install !(loc.ProductName).">RebootPending = 0</bal:Condition>
但它总是正确的,即使Windows更新刚刚完成的更新,需要重新启动。
是我的语法错了吗? 如果我的条件有[RebootPending]呢?
在被告知里面烧RebootPending财产可能不完全对应于Windows Installer使用的财产,我怎么回事,会确保我的应用程序不会试图安装时,重新引导挂起?
因为它操作的安装事务外烧伤不使用MSI的MsiSystemRebootPending。 因此,刻录采用ISystemInformation :: RebootRequired代替。 有没有保证,MSI和ISystemInformation :: RebootRequired有关于是否需要重新启动了同样的想法,因为MSI不会记录与MsiSystemRebootPending反映。
对于一些总体思路看工具WhyReboot 。 下面是它的作用:
审查了重启后的文件拷贝文件的注册表位置/重命名/删除操作。
审查了“运行一次”应用程序文件的位置注册表全部:这些将在下次启动时运行一次,并可能使用由安装程序执行重启后的文件清理和其他操作,如注册表操作。
在Win9x检查Wininit.ini的/ ME平台挂起的文件重命名/删除操作。
ISystemInformation :: RebootRequired:有人问了一些示例代码调用ISystemInformation :: RebootRequired在Arnson的答复中提到。
这里是一个Blurb的 - 不完全是伟大的,但也许试试看:
Set autoupdate = CreateObject("Microsoft.Update.AutoUpdate")
autoupdate.Pause()
MsgBox Err.Number & " " & Err.Description
Set sys = CreateObject("Microsoft.Update.SystemInfo")
MsgBox sys.RebootRequired
' autoupdate.Resume() ' Enable to resume AutoUpdate
Set sys = Nothing
Set autoupdate = Nothing
也许只是使用后者部分:
Set sys = CreateObject("Microsoft.Update.SystemInfo")
MsgBox sys.RebootRequired
Set sys = Nothing
我并不真正熟悉的Windows Update代理对象模型 。
重新启动 :有可以参与触发重新启动(警告)许多注册表位置。 GET-PendingReboot查询 。 而类似的PowerShell脚本 。
以下是我已经发现了一些注册表位置是参与在Windows重新启动(绝对不是全部):
-
HKLM\SOFTWARE\Microsoft\Updates : UpdateExeVolatile
-
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager : PendingFileRenameOperations
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer : InProgress
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing : RebootPending
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update : RebootRequired
-
HKLM\SYSTEM\Setup : SystemSetupInProgress
而计算机重命名操作正在进行:
-
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName : ComputerName
-
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName : ComputerName
CCMClientSDK :然后还有一些WMI调用来检查SCCM 2012 Client Reboot Pending Status
。 CCMClientSDK.IsHardRebootPending
和CCMClientSDK.RebootPending
。 检查获取-PendingReboot查询脚本 。
我不知道是否有帮助,但它说这里是RebootPending值
将反映在首次请求可变系统的重启状态