我如何引用烧伤重启待定属性(维克斯)(How do I reference the Reboot P

2019-06-25 03:56发布

如何引用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使用的财产,我怎么回事,会确保我的应用程序不会试图安装时,重新引导挂起?

Answer 1:

因为它操作的安装事务外烧伤不使用MSI的MsiSystemRebootPending。 因此,刻录采用ISystemInformation :: RebootRequired代替。 有没有保证,MSI和ISystemInformation :: RebootRequired有关于是否需要重新启动了同样的想法,因为MSI不会记录与MsiSystemRebootPending反映。



Answer 2:

对于一些总体思路看工具WhyReboot 。 下面是它的作用:

审查了重启后的文件拷贝文件的注册表位置/重命名/删除操作。

审查了“运行一次”应用程序文件的位置注册表全部:这些将在下次启动时运行一次,并可能使用由安装程序执行重启后的文件清理和其他操作,如注册表操作。

在Win9x检查Wininit.ini的/ ME平台挂起的文件重命名/删除操作。



Answer 3:

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 StatusCCMClientSDK.IsHardRebootPendingCCMClientSDK.RebootPending 。 检查获取-PendingReboot查询脚本 。



Answer 4:

我不知道是否有帮助,但它说这里是RebootPending值

将反映在首次请求可变系统的重启状态



文章来源: How do I reference the Reboot Pending Property in Burn (WiX)