Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.250.1] |
|
Сообщ.
#1
,
|
|
|
Наверное, с этой задачей многие сталкиваются.
Есть моя программа. Ей для работы нужен MSSQL. Для его установки на клиентской машине я скачал MSDE - движок MSSQL, специально предназначенный для клиентской установки. Для его установки нужно отключить пару сервисов, потом запустить setup.exe, подождать (он никаких окон не выводит), и запустить снова сервисы. (кстати, кто-нибудь пробовал это делать?) А вот как это сделать? Я так понимаю, нужно дождаться окончания установки. Тогда дистрибутив сервера будет уже скопирован. После этого вызвать setup. Но если он облажается? Я то это определю, а вот можно ли будет отменить установку??? |
Сообщ.
#3
,
|
|
|
Вопрос мутировал: Как отменить установку (и соответственно откатить) из скрипта?
|
Сообщ.
#4
,
|
|
|
Цитата Testudo @ Вопрос мутировал: Как отменить установку (и соответственно откатить) из скрипта? Хм, вроде бы Inno Setup сам делает отмену установки: Что именно происходит, если пользователь нажмет Cancel в процессе установки? При нажатии Cancel инсталятор отменяет изменения, сделанные им в ходе установки, почти как деинсталятор при удалении программы. Поэтому частично установленное приложение не останется в системе пользователя. Но это скорее всего касаеться только скрипта вне секции Code. Что точно, так это то, что можно использовать: procedure DeInitializeSetup(); |
Сообщ.
#5
,
|
|
|
А вот если я пишу обработчик AfterInstall какого-то файла и в нем сделаю RaiseException, установка отменится?
|
Сообщ.
#6
,
|
|
|
Цитата Testudo @ А вот если я пишу обработчик AfterInstall какого-то файла и в нем сделаю RaiseException, установка отменится? Не знаю, не пробывал, но DeInitializeSetup вызываеться именно тогда, когда юзер нажал cancel! |
Сообщ.
#7
,
|
|
|
Цитата Profi @ Щас попробую... Не знаю, не пробывал Добавлено Нет, не откатывается... Пробую DeInitializeSetup Добавлено Говорит, нет такой функции. В примерах нашел такую ее реализацию: procedure DeinitializeSetup(); var FileName: String; ResultCode: Integer; begin if FinishedInstall then begin if MsgBox('DeinitializeSetup:' #13#13 'The [Code] scripting demo has finished. Do you want to uninstall My Program now?', mbConfirmation, MB_YESNO) = idYes then begin FileName := ExpandConstant('{uninstallexe}'); if not Exec(FileName, '', '', SW_SHOWNORMAL, ewNoWait, ResultCode) then MsgBox('DeinitializeSetup:' #13#13 'Execution of ''' + FileName + ''' failed. ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK); end else MsgBox('DeinitializeSetup:' #13#13 'Ok, bye bye.', mbInformation, MB_OK); end; end; Добавлено Кстати, он ее вызывает при любом исходе установки... Выходит, ею нельзя пользоваться для отмены. Тогда чем? |
Сообщ.
#8
,
|
|
|
Придумал!!!
Написал WizardForm.CancelButton.OnClick(WizardForm.CancelButton); |