Запланируйте выполнение regsvr32 при перезагрузке - PullRequest
0 голосов
/ 22 июня 2011

Я пишу установщик на NSIS, который регистрирует расширение оболочки.

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

Поэтому я извлекаю новое расширение под другим именем, отмечаю старое расширение для удаления (удаления / обновления) и переименовываю новое расширение в его оригинальное имя (только обновление) через реестр PendingFileRenameOperations ключ.Пока это работает нормально.

Проблема в том, что мне нужно зарегистрировать новый компонент оболочки при запуске, поскольку PendingFileRenameOperations работает только при перезагрузке.Есть ли способ запланировать операцию regsvr32 после перезагрузки?

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

Заранее спасибо.

1 Ответ

0 голосов
/ 22 июня 2011

Самый простой способ, который я нашел, чтобы решить эту проблему, это создать скрипт реестра, который удаляет все связанные ключи и значения реестра. Запустите сценарий реестра в (не) установщике и запланируйте «удаление при загрузке» для библиотек COM. Возможно, есть лучший способ сделать это, но я еще не нашел его.

...