Inno Setup - Отмена регистрации общей DLL во время установки - PullRequest
0 голосов
/ 12 ноября 2018

Смотри также:

Удаление и отмена регистрации файлов DLL во время установки с использованием Inno Setup

Inno Setup: Как автоматически удалить предыдущую установленную версию?

В разделе [Files] моего скрипта Inno Setup есть строка:

Source: {#InstallSource}\OldDll.dll; DestDir: {sys}; Flags: sharedfile regserver

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

Самый простой способ сделать это - попросить пользователей удалить предыдущую версию приложения перед обновлением, но это будет означать, что различные параметры конфигурации также будут удалены, и пользователям придется заново вводить их вручную. Можно ли автоматизировать процесс отмены регистрации / удаления DLL?

1 Ответ

0 голосов
/ 12 ноября 2018

Хотя вы можете сделать это, чтобы отменить регистрацию и удалить DLL:

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

Пример: если ваша DLL совместно используется вашим приложением и одна другая - 2 ссылки.Вы запускаете свое обновление, которое уменьшает счетчик до 1. Затем вы удаляете свое приложение, которое уменьшает счетчик до 0 и удаляет DLL => Другие приложения ломаются.


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

См. Inno Setup: Как автоматически удалить предыдущую установленную версию?

Вы можете сделать это толькоусловно, когда общий файл все еще существует.


Тем не менее, оказалось, что вам на самом деле не нужно удалять общую DLL новой версией установщика.Вы только боялись, что когда новый установщик больше не устанавливает общую DLL, его деинсталлятор также не удалит ее правильно.Но это произойдет именно по причинам, указанным в первом разделе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...