Я использую Advanced Installer (MSI) , чтобы установить DLL расширения оболочки для контекстного меню проводника. Это работает за исключением удаления пользовательского действия в InstallExecuteSequence. Мне пришлось добавить команду в regsvr32.exe / s / u для отмены регистрации библиотеки DLL.
Проблема, с которой я столкнулся, заключается в том, что при последующих переустановках того же продукта (с другой версией продукта и кодом продукта), так что сначала происходит автоматическое удаление приложения, иногда проводник не освобождает библиотеку DLL, которая вызывает появится окно FilesInUse и предложит убрать Explorer.exe или перезагрузить компьютер.
Поскольку расширение оболочки не содержит ошибок и не нуждается в замене, а также потому, что я не обновлял его номер версии в промежутках между установками, я не хочу переустанавливать его или проверять, используется ли оно, если его версия измененное.
Я попытался добавить Поиск файла в MSI в [APPDIR], но все, что возвращается, это "C: \", хотя файл на самом деле находится где-то еще в папке appdir
Существует ли простой способ пропустить переустановку файла, если он уже существует, и пропустить InstallValidate для FilesInUse?