如果我在安静模式下使用 MSIExec 启动安装程序,我可以通过检查退出代码是否为 3010 来检测是否需要重新启动才能完成安装。但我希望能够以可编程形式做的是测试是否在我启动实际安装程序之前,MSI 的安装需要重新启动才能完成。
我查看了 MSI API:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa369426(v=vs.85).aspx
我确实认为我可以:
- 调用 MsiOpenPackage 让安装程序准备好运行
- 使用以下命令调用 MsiDoAction:CostInitialize、FileCost、CostFinalize、InstallValidate
- 从 FilesInUse 表中读取记录(MSDN 上的以下文档建议此表是在运行 CostFinalize/InstallValidate 后创建的:
http://msdn.microsoft.com/en-us/library/aa369546(VS.85).aspx
但是,当我在安装过程中查询它时,该表实际上并不存在。是否有其他方法可以检查是否需要重新启动?