Wix: Запланируйте пользовательское действие для запуска после следующей перезагрузки - PullRequest
2 голосов
/ 16 ноября 2011

Можно ли запланировать настраиваемое действие после перезагрузки? Вот мое затруднение.

У меня есть продукт для удаления и переустановки, но некоторые файлы используются другим приложением во время переустановки. Это вызывает проблемы при удалении, потому что файлы используются, поэтому я использую настраиваемое действие, которое запускает командный файл для переименования используемых файлов. Это что-то вроде хака, но заставляет удалять и переустанавливать не жалуется на используемые файлы и заменяет нужные мне файлы.

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

У этого есть побочный эффект связки файлов, которые я переименовал с префиксом toDelete_fileX.dll вместе с новым fileX.dll в папке.

У меня есть другое настраиваемое действие для удаления этих файлов, которое работает нормально, но я не могу запустить его в конце установки, потому что другое приложение все еще имеет дескриптор этих переименованных файлов с префиксом "toDelete_".

В какой-то момент в будущем система будет перезагружена, и именно здесь я хотел бы запустить настраиваемое действие для удаления файлов с префиксом "toDelete_".

Спасибо. Neil

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Взгляните на это свойство MSIRESTARTMANAGERCONTROL , вы можете использовать это, чтобы запретить использование файлов в диалоге, комбинируя это с / qn для msiexec, вы сможете сделать это без вывода сообщений.Когда дело доходит до установщиков, если вы запускаете командные файлы во время транзакции установки, вы действительно одиноки, так как установщик Windows не может отследить это.Если нет действительно веских оснований для развертывания вашего собственного центра сертификации, я бы держался подальше.

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

1 голос
/ 17 ноября 2011

Вы можете запланировать действия после перезагрузки, используя раздел реестра RunOnce:

Тем не менее, я думаю, что вы идете не так с этим. Если вы можете предложить более подробную информацию о том, что вам нужно сделать (дизайн или концепция), возможно, я могу предложить лучшую альтернативу.

...