проверка запуска Windows Update или инсталлятора инсталлятора перед запуском моего инсталлятора (java) - PullRequest
2 голосов
/ 03 февраля 2012

хочу проверить мой установщик перед началом установки, если какая-либо другая установка выполняется заранее.Как и я хочу проверить, запущено ли обновление Windows или любой другой установщик, я не буду запускать мой установщик.

Я планирую проверить, запущен ли какой-либо экземпляр msiexec до этого.Есть ли лучший подход, и это будет то же самое для проверки обновления Windows.К вашему сведению, мой установщик в java

Ответы [ 4 ]

3 голосов
/ 03 февраля 2012

Вы должны знать, что msiexec.exe все еще будет работать в течение нескольких минут после завершения установки.Это стандартное поведение в ОС, оно поддерживает процесс в течение нескольких минут, в случае, если пользователь запустит другую установку, чтобы сэкономить время на повторный запуск.Поэтому проверка процесса может дать вам неверные данные.

Кроме того, если у вас есть установщик, написанный на Java, не могли бы вы объяснить, почему вам нужно проверять процессы msiexec.exe?

1 голос
/ 06 февраля 2012

Для проверки ОС на наличие выполняемых установок вы можете использовать следующую запись реестра:

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ InProgress

Обратите внимание, что установщик Windows не допускает одновременного выполнения нескольких InstallExecuteSequence, однако вы можете запустить несколько интерфейсов установки из разных пакетов. Пакет входит в InstallExecuteSequence, как правило, в тот момент, когда вы нажимаете «Установить» и предоставляете все разрешения для запуска изменений системы (создание реестра, копирование файлов и т. Д.).

Здесь вы можете найти больше информации о InstallUISequence и InstallExecuteSequence: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372404(v=vs.85).aspx

1 голос
/ 05 февраля 2012

Поскольку ваш установщик находится на Java, я не вижу причин проверять, работают ли другие установщики, более того, нет надежного способа сделать это.

Пытается ли ваш установщик заменить системные файлы?Не должно.
Ваш установщик пытается обновить используемый файл?Это должно сделать это изящно.И попросить пользователя закрыть оскорбительное приложение;если это невозможно или пользователь не хочет сразу же закрывать приложение, ваш установщик просит пользователя перезагрузить систему после завершения установки.

Слишком много забот, без запуска других установщиков.Вот почему разумнее использовать специализированный инструмент для установки.

0 голосов
/ 12 февраля 2012

Спасибо вам, ребята, за ваши предложения, в конце концов я решил пойти с созданием Windows родной DLL для проверки состояния WindowsInstaller. Служба установщика Windows в настоящий момент работает, если значение возвращаемого элемента dwControlsAccepted структуры SERVICE_STATUS_PROCESS равно SERVICE_ACCEPT_SHUTDOWN. Затем использовал JNI для вызова из моего класса Java.

...