Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Begin2Fly

Пользователь


Сообщения: 91
Благодарности: 42

Профиль | Отправить PM | Цитировать


Sann-X!, можно попробовать такой вариант:

Код: Выделить весь код
ExecWait 'regsvr32.exe /s /u "$INSTDIR\Sample.dll"' ;Снимаем регистрацию с DLL
Rename "$INSTDIR\Sample.dll" "$INSTDIR\Sample.tmp" ;Переименовываем используемую DLL во временный файл
Delete /REBOOTOK "$INSTDIR\Sample.tmp" ;Пытаемся удалить временный файл и добавляем флаг удаления после перезагрузки
Дальше копируем новую DLL и регистрируем её, с этим проблем не возникнет, т.к. имя уже не занято

Можно вывести на экран сообщение о необходимости перезагрузки, если старая DLL до сих пор используется и удалить её до перезагрузки не получилось:
Код: Выделить весь код
${If} ${FileExists} "$INSTDIR\Sample.tmp"
  MessageBox IDOK "Для завершения установки требуется перезагрузка"
${EndIf}
Эту же перезагрузку можно организовать не через сообщение на экране, а на финишной странице установщика с двумя радиобуттонами, в документации это должно быть описано, по памяти не скажу.

Отправлено: 12:24, 21-11-2014 | #1354