Temyraz@fb,
вот самодостаточный пример
читать дальше »
Код:
![Выделить весь код](images/misc/selectcode.png)
[Setup]
AppName=Test Mouse Event
AppVersion=1.5
OutputDir=.
AppId=TheBestAppIdEver
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|{pf}\Setup_B}
[ Code]
var
CheckBoxA: TNewCheckBox;
CheckBoxB: TNewCheckBox;
function Run_A: Boolean; begin Result:=CheckBoxA.Checked; end;
function Run_B: Boolean; begin Result:=CheckBoxB.Checked; end;
procedure InitializeWizard;
begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
{ CheckBoxA }
CheckBoxA := TNewCheckBox.Create(WizardForm);
with CheckBoxA do
begin
Name := 'CheckBoxA';
Parent := WizardForm.WelcomePage;
Left := ScaleX(216);
Top := ScaleY(176);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'вариант 1';
end;
{ CheckBoxB }
CheckBoxB := TNewCheckBox.Create(WizardForm);
with CheckBoxB do
begin
Name := 'CheckBoxB';
Parent := WizardForm.WelcomePage;
Left := ScaleX(216);
Top := ScaleY(208);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Вариант 2';
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
begin
////// если отмечен чекбокс А
if CheckBoxA.Checked = true then
begin
WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_A'); //// то путь установки такой
end;
////// если отмечен чекбокс Б
if CheckBoxB.Checked = true then
begin
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1') then /// если есть ключ
begin
if MsgBox('Папка … уже существует. Вы хотите продолжить установку в эту папку?', mbError, MB_YESNO) = idYes /// выводим сообщение /// если ответ ДА
then
begin
WizardForm.DirEdit.Text:=ExpandConstant('{#SetupSetting("DefaultDirName")}'); /// путь через реестр (в скрипте, здесь, через препроцессор берётся строка из секции Setup сверху)
end
else
begin
WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_B'); //// в противном случа *(ответ "нет") - обычный путь для Б
end;
end;
end;
end;
end;
2 чекбокса на странице приветствия
если отмечен первый, то установка в {pf}\Setup_A
если второй {pf}\Setup_B
при повторном запуске инсталла и отмеченном втором чекбоксе при переходе на страницу выбора директории установки
проверяется ключ реестра, который вносится при первой установке
при наличии ключа появится месседж бокс с вопросм "да" "нет"
ответ "да" - путь папке приложения где бы она не находилась (куда установили)
ответ "нет" - стандартный путь {pf}\Setup_B
PS
только писать "Папка ... существует" не разумно, тк пользователь может поменять её название
Решение
либо просто "Папка существует..." либо "Приложение установлено. Установить туда же?"