Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как удалить запись в реестре при установке программы (InnoSetup)? [D7, WinXP]


DrAndrew ©   (2007-06-22 10:53:00) 

Уважаемые Мастера! Пожалуйста подскажите, Как удалить запись в реестре при установке программы с использованием инсталлятора InnoSetup? Я прописываю в скрипте следующий код:
B>[Registry]
Root: HKCU; Subkey: "Software\My Program"; Flags: deletekey dontcreatekey

но этот код как и с другими флагами не работает. Мне необходимо удалить ключ именно при установке, до первого открытия программы. Как это сделать? Спасибо всем!


DrAndrew   (2007-06-22 12:52:00) [1]

И все таки, Мастера,  есть принципиальная разница разместить секцию [code] после секции [run] или нет? Или необходимо обязательно секцию [code] прописывать до секции [run]? Спасибо!


ЮЮ   (2007-06-22 12:48:00) [2]

> Всем большое спасибо за дискуссию!


Дискуссии не наблюдаю :) Ни с InnoSetup-ом, ни с его скриптом не знаком. Просто бросились в глаза явные несуразности. Поэтому и влез, пока контингент для дискуссии подтяивается :)


DrAndrew   (2007-06-22 12:44:00) [3]

Понял а есть принципиальная разница разместить секцию [code] после секции [run] или нет? Или необходимо обязательно секцию [code] прописывать до секции [run]? Всем большое спасибо за дискуссию!


ЮЮ   (2007-06-22 12:39:00) [4]

> Хорошо, прописал так:

И что, что-то изменилось? как был маразм
then begin
 procedure

так и остался

если [1] работает, почему туда проверку не добавить?

procedure InitializeWizard();
begin
 if RegValueExists(HKEY_CURRENT_USER, 'Software\My Program\LastDir',   DirPath) then
   RegDeleteValue(HKCU, 'Software\My Program\LastDir', DirPath);
end;


DrAndrew   (2007-06-22 12:30:00) [5]

Хорошо, прописал так:
[code]
function MyCheckedRegValue(): Boolean;
begin
 if RegValueExists(HKEY_CURRENT_USER, 'Software\My Program\LastDir',   DirPath) then
 begin
   procedure InitializeWizard();
   begin
      RegDeleteValue(HKCU, 'Software\My Program\LastDir', DirPath);
   end;
  end;
end;

ругаетсяю что нельзя вызывать InitializeWizard(). Что делать?


ЮЮ   (2007-06-22 12:24:00) [6]

then begin
  procedureInitializeWizard();


какой скрипт такую чушь позволит выполнить?


DrAndrew   (2007-06-22 12:17:00) [7]

Мастера, почему так:
[code]
if RegValueExists(HKEY_CURRENT_USER, 'Software\Teach Yourself Pro\LastDir', DirPath) then
begin
  procedure InitializeWizard();
  begin
     RegDeleteValue(HKCU, 'Software\Teach Yourself Pro\LastDir', DirPath);
  end;
end;

выдает ошибку. Что изменить?


DrAndrew   (2007-06-22 11:55:00) [8]

Еще вопрос - а как проверить есть ли такой ключ ('SoftWare\MyProgram') и только потом его удалить, то есть применить процедуру InitializeWizard()?


DrAndrew   (2007-06-22 11:53:00) [9]

Спасибо за подсказку! А в каком месте ставить этот код? Это принципиально? И нужно ли тогда прописывать секцию [Registry]?


tesseract   (2007-06-22 11:49:00) [10]

в скрипте :

[code]
procedure InitializeWizard();
begin
  RegDeleteKeyIncludingSubkeys(HKCU, 'SoftWare\MyProgram');
end;
[/code]

должно помочь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо