Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

Как удалить запись в реестре при установке программы (InnoSetup)?   Найти похожие ветки 

 
DrAndrew   (2007-06-22 10:53) [0]

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

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


 
tesseract ©   (2007-06-22 11:49) [1]

в скрипте :

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

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


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

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


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

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


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

Мастера, почему так:
[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;

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


 
ЮЮ ©   (2007-06-22 12:24) [5]

then begin
 procedure InitializeWizard();


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


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

Хорошо, прописал так:
[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:39) [7]

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

И что, что-то изменилось? как был маразм
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:44) [8]

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


 
ЮЮ ©   (2007-06-22 12:48) [9]

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1186909904
loeg
2007-08-12 13:11
2007.09.02
Два вопроса


2-1186495868
SLesya
2007-08-07 18:11
2007.09.02
dll/bpl + отладчик


15-1186427988
Kostafey
2007-08-06 23:19
2007.09.02
Установка кодировки


2-1186934620
Arx
2007-08-12 20:03
2007.09.02
Вопрос по ООП


15-1186046769
Kolan
2007-08-02 13:26
2007.09.02
Нарушаете ли вы инкапсуляцию намерянно?