Dobry_Doctor
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго всем времени суток. Перед установкой обновления необходимо проверить, установлена ли программа, проверить еще несколько ключей реестра и т.п. Если хотя бы одна проверка не прошла - выйти на wpFinished. Проверки сделал после wpInfoBefore, предварительно объявив флаг проверки. fAbortSetup отрабатывает, при неудачной проверке инсталлятор выходит на wpFinished, но вот файлы из секции [Files] всё равно копируются, чего не нужно. Можно ли как-нибудь обойтись без того чтобы засунуть проверки в InitializeSetup() ? Так хоть инсталлятор говорит что будем устанавливать, показывает информацию о разработчике и пр... Если нужна полностью секция [Setup] - приведу почти дословно. А пока так вот : [Files] Source: MyFile.exe; DestDir: {app}; Flags: ignoreversion Source: MyFile.dll; DestDir: {app}; Flags: ignoreversion [Code] var fAbortSetup: Boolean; function InitializeSetup(): Boolean; begin fAbortSetup := false; Result:=True; end; function NextButtonClick(CurPageID: Integer): Boolean; begin Result := true; case CurPageID of wpInfoBefore: begin if ПРОВЕРКА НЕ ПРОШЛА then fAbortSetup := true; end; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if fAbortSetup then begin case PageID of wpSelectDir,wpSelectProgramGroup,wpSelectTasks,wpReady,wpPreparing,wpInstalling,wpInfoAfter: Result := True; end; if ActiveLanguage = 'English' then WizardForm.FinishedLabel.Caption := 'Update pack installation aborted.'+#10+#13+'Click "Finish" to exit the installation' else if ActiveLanguage = 'Russian' then WizardForm.FinishedLabel.Caption := 'Установка пакета обновления прервана.'+#10+#13+'Нажмите "Завершить" чтобы выйти из программы установки.'; end else wpSelectDir,wpSelectProgramGroup,wpSelectTasks,wpReady,wpPreparing,wpInstalling: Result := false; end; И еще вопрос. В секции [Files] есть файлы, дополняющие существующие в {app}, причем в разных папках внутри {app}. Выглядит это так [Setup] Uninstallable=no UninstallLogMode=append [Files] Source: 001\File1.exe; DestDir: {app}\001; Flags: ignoreversion recursesubdirs Source: 002\File2.exe; DestDir: {app}\002; Flags: ignoreversion recursesubdirs Source: "002\Dat\AAA.dat; DestDir: "{app}\002\DAT"; Flags: ignoreversion recursesubdirs Source: "002\Dat\BBB.dat"; DestDir: "{app}\002\DAT"; Flags: ignoreversion recursesubdirs Основной деинсталлятор должен удалять только File1.exe и File2.exe и удалять папки. Остальное устанавливается в обновлении. Так вот, и при UninstallLogMode=append и UninstallLogMode=overwrite не получается корректно полностью деинсталлировать программу. То есть ставлю основную программу, ставлю на неё обновление, запускаю основной деинсталлятор - в {арр} остаются папка 002 а в ней AAA.dat и BBB.dat. Что не так делаю ? | Всего записей: 5 | Зарегистр. 12-09-2013 | Отправлено: 09:20 04-02-2014 | Исправлено: Dobry_Doctor, 12:28 04-02-2014 |
|