Запланируйте выполнение regsvr32 при перезагрузке

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

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

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

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам