Определить, требует ли MSI перезагрузка перед установкой

Если я запускаю программу установки с MSIExec в тихом режиме, я могу определить, требуется ли перезагрузка для завершения установки, проверив код выхода это 3010.Но то, что я хотел бы сделать в программируемой форме, — это проверить, потребует ли установка MSI перезагрузки для завершения передзапуском фактического установщика.

Я просмотрел API-интерфейсы MSI:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa369426(v=vs.85).aspx

I думал, что смогу:

  1. Вызвать MsiOpenPackage, чтобы подготовить установщик к запуску
  2. Вызвать MsiDoAction со следующим: CostInitialize, FileCost, CostFinalize, InstallValidate
  3. Прочитать записи из таблицы FilesInUse (следующая документация на MSDN предлагает это таблица создается после запуска CostFinalize/InstallValidate:

http://msdn.microsoft.com/en-us/library/aa369546(VS.85).aspx

Однако эта таблица фактически не существует, когда Я запрашиваю его в процессе установки. Есть ли другие способы проверить, потребуется ли перезагрузка?

5
задан Gareth Oakley 28 May 2012 в 21:26
поделиться