Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Temyraz@fb,
вот самодостаточный пример

читать дальше »
Код: Выделить весь код
[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
только писать "Папка ... существует" не разумно, тк пользователь может поменять её название
Решение
либо просто "Папка существует..." либо "Приложение установлено. Установить туда же?"

Последний раз редактировалось Johny777, 28-04-2012 в 13:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:01, 28-04-2012 | #1700