Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

batva (17-02-2011 20:42): Inno Setup (создание инсталяционных пакетов)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Shegorat



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
[code]
var
  MyNewPage: TWizardPage;
  MyRadioBtn_1, MyRadioBtn_2: TRadioButton;
 
function KillTaskA(ExeFileName: string): Integer;   //Проверка запущеной программы и завершение, если процесс запущен
external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly';
 
function RunTaskA(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly';
 
procedure GetMyNewPage();   //Новая страница инсталятора с радиобаттонами
begin
  MyNewPage := CreateCustomPage(wpWelcome,
    ExpandConstant('{cm:HeaderLabelPage}'), '');
 
  MyRadioBtn_1 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do
  begin
    Top := ScaleY(50);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_1}');
    Checked := True;
    Parent := MyNewPage.Surface;
  end;
 
  MyRadioBtn_2 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do
  begin
    Top := ScaleY(120);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_2}');
    Parent := MyNewPage.Surface;
  end;
end;
 
procedure InitializeWizard();  //привязка действия к радибаттонам
begin
  GetMyNewPage();
end;
 
function GetRadio_1Checked(): Boolean;
begin
  Result := MyRadioBtn_1.Checked;
end;
 
function GetRadio_2Checked(): Boolean;
begin
  Result := MyRadioBtn_2.Checked;
end;
 
procedure MyFunction(Sender: TObject);  //Запрет установки программы в определенный каталог
var S: String;
begin
  S := ExtractFilePath(WizardForm.DirEdit.Text);
  SetLength(S, Length(S)-1);
  if IsWin64 then
  begin
    if (Pos(ExpandConstant('{pf32}'), S) > 0) then
    begin
      MsgBox('Программу нельзя устанавливать в' + #13#10 + S, mbInformation, MB_OK);
      WizardForm.DirEdit.Text := ExpandConstant('{pf64}');
    end;
    WizardForm.DirEdit.Text := AddBackSlash(WizardForm.DirEdit.Text);
  end
end;
 
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);  //Удаление - проверка папки после удаления, и удаление ее если присутствует
var Res: Integer;
begin
case CurUninstallStep of
    usUninstall: begin
                   UnloadDLL(ExpandConstant('{app}\ISTask.dll'));
                 end;
    usPostUninstall: begin
//Проверяем присутствие папки после удаления
    If DirExists(ExpandConstant('{app}')+'') then
//Создаем диалог с тремя кнопками
      case MsgBox('Папка "'+ExpandConstant('{app}')+'" не пуста.'#13#13 +
       '"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
       '"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
       '"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL)
      of IDYES: begin
                  if not DelTree(ExpandConstant('{app}')+'', True, True, True) then
                  MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
                end;
         IDNO:  begin
                  if not ShellExec('open', ExpandConstant('{app}')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
                  MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
                end;
         IDCANCEL: begin
                   end;
      end;
// Удаление - проверка папки после удаления, и удаление если присутствует - ЕЩЕ РАЗ, но другую папку
// Проверяем присутствие папки после удаления
    If DirExists(ExpandConstant('{userappdata}\User Data')+'') then
//Создаем диалог с тремя кнопками
      case MsgBox('Папка "'+ExpandConstant('{userappdata}\')+'" не пуста.'#13#13 +
       '"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
       '"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
       '"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL)
      of IDYES: begin
                  if not DelTree(ExpandConstant('{userappdata}\')+'', True, True, True) then
                  MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
                end;
         IDNO:  begin
                  if not ShellExec('open', ExpandConstant('{userappdata}\')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
                  MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
                end;
         IDCANCEL: begin
                   end;
      end;
    end;
end;
end;
 
function NextButtonClick(CurPageID: Integer): Boolean;  //Невозможность продолжения установки - без выбора хотя бы одного компонента
begin
  Result := True;
  if (CurPageID = wpSelectComponents) and (IsComponentSelected('d') = False)
  and (IsComponentSelected('d\a') = False) and (IsComponentSelected('d\b') = False)
  and (IsComponentSelected('d\c') = False) and (IsComponentSelected('d\d') = False)
  and (IsComponentSelected('d\e') = False) and (IsComponentSelected('d\f') = False)
  and (IsComponentSelected('d\g') = False) and (IsComponentSelected('d\a') = False) then
  begin
    MsgBox('Не выбрано ни одиного протокола для установки!!!', mbInformation, MB_OK);
    Result := False;
  end;
end;
 
procedure InitializeUninstallProgressForm();
begin
  if RunTaskA('mir.exe', false) then
   if MsgBox(CustomMessage('CloseApp'), mbConfirmation, MB_YESNO) = IDYES then
    KillTaskA('mir.exe')
   else
  Abort;
end;

Всего записей: 695 | Зарегистр. 09-06-2009 | Отправлено: 18:54 26-12-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
batva (17-02-2011 20:42): Inno Setup (создание инсталяционных пакетов)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru