Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.205.84] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Установленная программа создает файл конфигурации(INI), так вот при удалении как сделать так чтобы у пользователя спрашивалось удалять этот файл настроек или оставить?
И еще вопрос, если я ставлю новую версию программы, а старая в это время запущенна и работает.. как сделать так чтобы старая программа заменилась на новую? скорей всего это надо через перезапуск компьютера, как так сделать чтобы после перезапуска записалась новая версия файла программы? и собственно как тогда осуществить сам перезапуск? |
Сообщ.
#2
,
|
|
|
Цитата Dmitry_177 @ Установленная программа создает файл конфигурации(INI), так вот при удалении как сделать так чтобы у пользователя спрашивалось удалять этот файл настроек или оставить? [UninstallDelete] Name: {app}\My Dir\My ini.ini; Type: files; Check: DelOrNo [Code] Function DelOrNo:boolean; begin Result:=MsgBox('Удалить Ini-файл?',mbConfirmation,MB_YESNO)=IDYES; end; Цитата Dmitry_177 @ И еще вопрос, если я ставлю новую версию программы, а старая в это время запущенна и работает.. как сделать так чтобы старая программа заменилась на новую? скорей всего это надо через перезапуск компьютера, как так сделать чтобы после перезапуска записалась новая версия файла программы? и собственно как тогда осуществить сам перезапуск? Вот тут подробнее? Что если просто закрыть программу, установить новую и запустить её? Зачем перезагружать компьютер? |
Сообщ.
#3
,
|
|
|
Дело в том что она работает как сервис.. т.е. не имеет своего окна даже.. вот можноли такую программу остановить в InnoSetup?
|
Сообщ.
#4
,
|
|
|
Цитата Dmitry_177 @ Дело в том что она работает как сервис.. т.е. не имеет своего окна даже.. вот можноли такую программу остановить в InnoSetup? Пишется dll с функцией, которая завершает процесс, и подключается к инсталлятору. |
Сообщ.
#5
,
|
|
|
По поводу удаления Ini-файла.. Можно ли сделать так, чтобы было это не в виде MessageBox-а, а в виде окна, и там чтоб был CheckBox с выбором удалить настройки или нет.. Так просто в основном делается на сколько я знаю..
|
Сообщ.
#6
,
|
|
|
Цитата Dmitry_177 @ По поводу удаления Ini-файла.. Можно ли сделать так, чтобы было это не в виде MessageBox-а, а в виде окна, и там чтоб был CheckBox с выбором удалить настройки или нет.. Так просто в основном делается на сколько я знаю.. Хм, судя по всему нет! Как вставить свою страницу в Uninstall, ровно, как и использовать для данных целей встроенные возможности, я не нашел. |
Сообщ.
#7
,
|
|
|
Может если присмотреть к демкам, в часности к CodeClasses.iss , то что нить прояснится? ;-)
|
Сообщ.
#8
,
|
|
|
Цитата jack128 @ Может если присмотреть к демкам, в часности к CodeClasses.iss , то что нить прояснится? ;-) В Install'е я могу создать все что угодно, а вот в Uninstall'е - нет! Данный пример ничего нового мне не сказал. |
Сообщ.
#9
,
|
|
|
Цитата Profi @ Данный пример ничего нового мне не сказал. А если очень внимательно присмотреться к procedure FormButtonOnClick(Sender: TObject); ? ;-) |
Сообщ.
#10
,
|
|
|
Цитата jack128 @ А если очень внимательно присмотреться к procedure FormButtonOnClick(Sender: TObject); ? ;-) Угу. Ну, если исключить строку: Form.CenterInsideControl(WizardForm, False); |
Сообщ.
#11
,
|
|
|
Цитата Пишется dll с функцией, которая завершает процесс, и подключается к инсталлятору. написал DLL, пеодключил к инсталлятору: [Code] procedure TerminateService; external 'TerminateService@files:Setup.dll stdcall'; Эта процедура делает сигнальным определенное событие, которое ожидает сам сервис, по которому завершает свою работу.. Вот как мне в при удалении программы(чтобы его остановить перед тем как удалить исполняемый файл сервиса) и при переустановки более новой версии запускать эту процедуру? |
Сообщ.
#12
,
|
|
|
procedure CurStepChanged(CurStep: TSetupStep); CurStep=ssInstall; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); CurUninstallStep=usUninstall; |
Сообщ.
#13
,
|
|
|
Что-то я не очень понял.. а как их в самой инсталляции вызывать? Ведь если сделать так:
[UninstallDelete] Name: {app}\My Dir\KLServer.exe; Type: files; Check: TerminateService где TerminateService процедура, т.е. никакого значения не возвращает, то при компиляции инсталлятора вызывается какая-то ошибка.. Сделал TerminateService как функцию, которая возвращает значение типа boolean, о оно всегда true, т.е. так: [Code] function TerminateServer: boolean; external 'TerminateServer@files:Setup.dll stdcall'; то сам то инсталлятор компилируется, но при самой инсталляции почемуто выскакивает ошибка: "Внутренняя ошибка: Expression error 'Script error: Could not call proc.'" |
Сообщ.
#14
,
|
|
|
Сделай так:
[UninstallDelete] Name: {app}\My Dir\KLServer.exe; Type: files; Check: TermService [Code] Function TermService:boolean; begin Result:=TerminateServer; end; |
Сообщ.
#15
,
|
|
|
а может это быть из-за того что у меня библиотека, в которой содержится эта функция в инсталляторе как:
[Files] Source: "E:\Klient.RU\Setup\Setup.dll"; Components: KLServer; Flags: dontcopy |