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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 4]

Аватара для El Sanchez

Ветеран


Contributor


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


Конфигурация

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для R.i.m.s.k.y.

Ветеран


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

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


Johny777, балин, камрад, я дал тебе готовую строчку чтобы увидеть что ты там склеиваешь, нафига мне твое обломись?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 20:16, 04-05-2012 | #1831



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Johny777

Ветеран


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

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


R.i.m.s.k.y.,
Ты "секретные материалы" (Малдеры, Скали всякие) смотрел?
вот две строки
if not (FileCopy(ExpandConstant('{tmp}\saved.exe'), ExpandConstant('{userdesktop}\saved.exe'), True)) then
//if not (FileCopy(ExpandConstant('{tmp}\saved.exe'),'C:\saved.exe', True)) then
при первой архив копируется на рабочий стол, а при второй в C:\ нет (констант нет. Прямой путь)
Как это понимать?
Самое натуральная аномалия. Скрипт живёт своей жизнью!


Касательно твоего месседж бокса.Хотел с ним потестить. С ошибкой синтаксиса вылетает (исправить не смог).
Пока что тупик как не крути.

Последний раз редактировалось Johny777, 05-05-2012 в 02:36.


Отправлено: 02:14, 05-05-2012 | #1832


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Johny777,
тебя ничего не смущает?

Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var
  Res: Integer;
  s1, s2, s3, s4, s5: string;

begin
  if CurStep = ssPostInstall then
    begin
    if Zip_CheckBox.Checked = true then
    begin

    s2 := Addquotes(Zip_Path_Edit.Text);
    //s2 := Addquotes(ExpandConstant('{tmp}\saved.exe'));
    s3 := Addquotes(ExpandConstant('{tmp}\{#Save_Folder}'));
    MsgBox('Пути архивации' + #13#10 + 'a -sfx7z.sfx -mx3' + ' ' + s2 + ' ' + s3, mbInformation, MB_OK);
    
        //s3 := Addquotes(RemoveBackslashUnlessRoot(ExpandConstant('{tmp}\{#Save_Folder}')))+'saved.exe';
      ExtractTemporaryFile('7za.exe');
      ExtractTemporaryFile('7z.sfx');
      Exec(ExpandConstant('{tmp}\7za.exe'), 'a -sfx7z.sfx -mx3' + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);
      if not (FileCopy(ExpandConstant('{tmp}\saved.exe'), ExpandConstant('{userdesktop}\saved.exe'), True)) then
      //if not (FileCopy(ExpandConstant('{tmp}\saved.exe'), 'C:\saved.exe', True)) then
      MsgBox('тут кроется лажа, тк не копируется', mbInformation, MB_OK);
    end;
    end;
end;
второе: для копирования лучше использовать не встроенные функции инно а комстроку
Код: Выделить весь код
procedure copy1file(fromfile, tofile:string);
begin
  Exec('cmd.exe', ' /c copy /Y /V /B ' + AddQuotes(fromfile) + ' ' + AddQuotes(tofile),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;
Вот сейчас твой архив saved.exe скопировался на рабочий стол но инсталлер написал что нет

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 05-05-2012 в 09:39.

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

Отправлено: 09:28, 05-05-2012 | #1833


Аватара для Johny777

Ветеран


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

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


R.i.m.s.k.y.,
спасибо за помощь добрый человек!

всё работает:
читать дальше »
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var
  Res: Integer;
  s1, s2, s3, s4, s5: string;

begin
  if CurStep = ssPostInstall then
    begin
      if Zip_CheckBox.Checked = true then
        begin
          s2 := Addquotes(ExpandConstant('{tmp}\saved'));  /// вот здесь и была лажа,
          s3 := Addquotes(ExpandConstant('{tmp}\{#Save_Folder}'));
          MsgBox('Пути архивации' + #13#10 + 'a -sfx7z.sfx -mx3' + ' ' + s2 + ' ' + s3, mbInformation, MB_OK);
          
          ExtractTemporaryFile('7za.exe');
          ExtractTemporaryFile('7z.sfx');
          Exec(ExpandConstant('{tmp}\7za.exe'), 'a -sfx7z.sfx -mx3' + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);

          Exec('cmd.exe', ' /c copy /Y /V /B ' + AddQuotes(ExpandConstant('{tmp}\saved.exe')) + ' ' + Addquotes(Zip_Path_Edit.Text),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
        end;
    end;
end;


сохраняет куда надо и как надо

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


Отправлено: 12:57, 05-05-2012 | #1834


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата Johny777:
спасибо за помощь добрый человек!
сохраняет куда надо и как надо »
пжлста
Выпей за мое богатство!

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

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

Отправлено: 13:07, 05-05-2012 | #1835


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата R.i.m.s.k.y.:
тебя ничего не смущает? »
R.i.m.s.k.y., а тебя не смущает, что после AddQuotes переменные s2, s3 должны быть уже закавыченными, а MsgBox говорит обратное? У части пользователей ОС >= Vista и у всех пользователей ОС <= XP вызов 7za.exe приведет к ошибке из-за незакавыченных путей. Нужно отказаться от корявой AddQuotes и писать все ручками, и второе - незачем архив сохранять в темпе, а потом героически копировать в другое место (Рабочий стол), создавай сразу там.

Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var
  Res: Integer;
  s3, s2: string;

begin
  if CurStep = ssPostInstall then
    begin
      if Zip_CheckBox.Checked then
        begin
          s2 := ExpandConstant('{userdesktop}\saved.exe'); //разумеется, сюда можно включать необходимые кавычки и отделяющие пробелы
          s3 := ExpandConstant('{tmp}\{#Save_Folder}'); //... и сюда, но напишем их в Exec

          ExtractTemporaryFile('7za.exe');
          ExtractTemporaryFile('7z.sfx');

          Exec(ExpandConstant('{tmp}\7za.exe'), 'a -sfx7z.sfx -mx3 "' + s2 + '" "' + s3 + '"', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);
        end;
    end;
end
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 05-05-2012 | #1836


Аватара для R.i.m.s.k.y.

Ветеран


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

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


El Sanchez Johny777, смутило но я подумал что это особенность msgbox
Спасибо что сказал, переделаю и у себя (хотя никто не жалился еще)
Проще сделать AddQuotes2, а то об эти кавыки в Ехес глаза пообломаешь
Код: Выделить весь код
function AddQuotes2(www : string) : string;
begin
Result := '"' + www + '"';
end;


procedure CurStepChanged(CurStep: TSetupStep);
var
  Res: Integer;
  s3, s2: string;

begin
  if CurStep = ssPostInstall then
    begin
      if Zip_CheckBox.Checked then
        begin
          s2 := ExpandConstant('{userdesktop}\saved.exe'); //разумеется, сюда можно включать необходимые кавычки и отделяющие пробелы
          s3 := ExpandConstant('{tmp}\{#Save_Folder}'); //... и сюда, но напишем их в Exec

          ExtractTemporaryFile('7za.exe');
          ExtractTemporaryFile('7z.sfx');

          Exec(ExpandConstant('{tmp}\7za.exe'), 'a -sfx7z.sfx -mx3' + ' ' + AddQuotes2(s2) + ' ' + AddQuotes2(s3), ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res);
        end;
    end;
end

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 05-05-2012 в 13:27.


Отправлено: 13:16, 05-05-2012 | #1837


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата R.i.m.s.k.y.:
я подумал что это особенность msgbox »
Нет, скорей уж это особенность AddQuotes, принимающей строку от ExpandConstant.
Цитата R.i.m.s.k.y.:
Проще сделать AddQuotes2 »
Чего уж проще, захламить код ненужными функциями
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:28, 05-05-2012 | #1838


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата El Sanchez:
Чего уж проще, захламить код ненужными функциями »
намного проще снизить читабельность кода

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 13:38, 05-05-2012 | #1839


Аватара для Johny777

Ветеран


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

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


Цитата R.i.m.s.k.y.:
пжлста
Выпей за мое богатство! »
нажрусь до поросячьего визга по возможности и тебя вспомню добрым словом, но не сейчас!
El Sanchez,
спасибо, что пришёл и поправил!
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
у меня вопрос
с архивацией всё отлично
Вот код на сами сохранения (поиск по расширению в отдельных папках и сравнения размеров файлов - всё работает), но меня смущает, то что без этого инсталл не запускается
Код: Выделить весь код
function InitializeSetup(): Boolean;
begin
 Result:=True; /// вот этого
end;
Также если рядом есть файлы которые он ищет, то окно появляется тут же, а если нет, то с тормозами через пару секунд
Скажите пожалуйста где я опять накосячил при укорачивании и адаптации под свои нужды "поиск по расширению" их шапки?
читать дальше »
Код: Выделить весь код
#define MyAppName "Backup"
#define Save_Folder "saved"

[Setup]
SourceDir=.
OutputDir=Source Engine 15\uninstall
AppName={#MyAppName}
AppVerName={#MyAppName}
AppVersion={#MyAppName}
//CreateAppDir=false
DefaultDirName={userdesktop}\{#Save_Folder}
OutputBaseFilename={#MyAppName}
Uninstallable=false
ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage

DisableWelcomePage=yes
DisableReadyPage=yes


[Files]
Source: {src}\..\common\half-life 2\bin\stats.bin; DestDir: {app}\common\half-life 2\bin; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_A_hl2
Source: {src}\..\common\half-life 2 episode one\bin\stats.bin; DestDir: {app}\common\half-life 2 episode one\bin; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_A_ep1
Source: {src}\..\common\half-life 2 episode two\bin\stats.bin; DestDir: {app}\common\half-life 2 episode two\bin; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_A_ep2
Source: {src}\..\common\portal\bin\stats.bin; DestDir: {app}\common\portal\bin; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_A_portal
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Source: {src}\..\common\half-life 2\hl2\SAVE\*; DestDir: {app}\common\half-life 2\hl2\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_SAVES_hl2
Source: {src}\..\common\half-life 2 episode one\episodic\SAVE\*; DestDir: {app}\common\half-life 2 episode one\episodic\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_SAVES_ep1
Source: {src}\..\common\half-life 2 episode two\ep2\SAVE\*; DestDir: {app}\common\half-life 2 episode two\ep2\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_SAVES_ep2
Source: {src}\..\common\portal\portal\SAVE\*; DestDir: {app}\common\portal\portal\SAVE; Flags: external ignoreversion recursesubdirs createallsubdirs; Check: save_SAVES_portal


[   Code]
/////////////////////////////////////////
var
  hl2_A_CheckBox: TNewCheckBox;
  ep1_A_CheckBox: TNewCheckBox;
  ep2_A_CheckBox: TNewCheckBox;
  portal_A_CheckBox: TNewCheckBox;
  
  hl2_SAVE_CheckBox: TNewCheckBox;
  ep1_SAVE_CheckBox: TNewCheckBox;
  ep2_SAVE_CheckBox: TNewCheckBox;
  portal_SAVE_CheckBox: TNewCheckBox;
/////////////////////////////////////////
function save_A_hl2: Boolean;
  begin
    Result:=hl2_A_CheckBox.Checked;
     end;
     
function save_A_ep1: Boolean;
  begin
    Result:=ep1_A_CheckBox.Checked;
     end;
     
function save_A_ep2: Boolean;
  begin
    Result:=ep2_A_CheckBox.Checked;
     end;
     
function save_A_portal: Boolean;
  begin
    Result:=portal_A_CheckBox.Checked;
     end;
///////////////////////////////////////
function save_SAVES_hl2: Boolean;
  begin
    Result:=hl2_SAVE_CheckBox.Checked;
     end;
     
function save_SAVES_ep1: Boolean;
  begin
    Result:=ep1_SAVE_CheckBox.Checked;
     end;
     
function save_SAVES_ep2: Boolean;
  begin
    Result:=ep2_SAVE_CheckBox.Checked;
     end;
     
function save_SAVES_portal: Boolean;
  begin
    Result:=portal_SAVE_CheckBox.Checked;
     end;

  
////////////////////////// поиск фала по маске  //// начало
var
  // задаём переменную глобально, для всего скрипта
  Mask: string;


function FindFile(Path: string): Boolean;
var
  FSR: TFindRec;
  FindResult: Boolean;

begin
  Result:= False;
  if Path[Length(Path)] <> '\' then Path:= Path + '\';
  FindResult:= FindFirst(Path + Mask, FSR);
  try
    while FindResult do
      begin
        if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          begin
            Result:= True;
            Exit;
          end;
        FindResult:= FindNext(FSR);
      end;
  finally
    FindClose(FSR);
  end;
end;

function InitializeSetup(): Boolean;
begin
 Result:=True;
end;
/////////  конец


procedure Enable(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := hl2_A_CheckBox.Checked or ep1_A_CheckBox.Checked or ep2_A_CheckBox.Checked or portal_A_CheckBox.Checked or hl2_SAVE_CheckBox.Checked or ep1_SAVE_CheckBox.Checked or ep2_SAVE_CheckBox.Checked or portal_SAVE_CheckBox.Checked;
end;



procedure InitializeWizard;
var
  Size: Integer;
  i: Integer;
  ArrayOfMask: TArrayOfString;
  StartFolder, StartFolder2, StartFolder3, StartFolder4: string;
  
begin
  with WizardForm do 
  begin
    MainPanel.Visible := false;
    Bevel1.Visible := false;
    Bevel.Visible := false;
    InnerNotebook.Width := WizardForm.Width;
    InnerNotebook.Height := WizardForm.Height;
    OuterNotebook.Width := WizardForm.Width;
    OuterNotebook.Height := WizardForm.Height;
    CancelButton.BringToFront;
    NextButton.BringToFront;
    BackButton.BringToFront;
    SelectDirBitmapImage.Visible := False;
    DiskSpaceLabel.Visible := False;
    SelectDirBrowseLabel.Visible := False;
    Caption := '';
    SelectDirLabel.Visible := false;
    DirEdit.Top := ScaleY(220);
    DirBrowseButton.Top := WizardForm.DirEdit.Top;
  end;
  //////////////////////////////////////////////////  чекбоксы достижений
  hl2_A_CheckBox := TNewCheckBox.Create(WizardForm);
    with hl2_A_CheckBox do
      begin
        Name := 'hl2_A_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(150);
        Top := ScaleY(132);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'достижения hl2';
        Enabled := False;
        OnClick :=@Enable;
      end;
        if FileSize(ExpandConstant('{src}\..\common\half-life 2\bin\stats.bin'), size) then
          if Size > 1078 then
            hl2_A_Checkbox.Enabled:=true;

  ep1_A_CheckBox := TNewCheckBox.Create(WizardForm);
    with ep1_A_CheckBox do
      begin
        Name := 'ep1_A_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(150);
        Top := ScaleY(70);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'достижения ep1';
        Enabled := False;
        OnClick :=@Enable;
      end;
        if FileSize(ExpandConstant('{src}\..\common\half-life 2 episode one\bin\stats.bin'), size) then
          if Size > 517 then
            ep1_A_CheckBox.Enabled:=true;
            
  ep2_A_CheckBox := TNewCheckBox.Create(WizardForm);
    with ep2_A_CheckBox do
      begin
        Name := 'ep2_A_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(150);
        Top := ScaleY(40);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'достижения ep2';
        Enabled := False;
        OnClick :=@Enable;
      end;
        if FileSize(ExpandConstant('{src}\..\common\half-life 2 episode two\bin\stats.bin'), size) then
          if Size > 759 then
            ep2_A_CheckBox.Enabled:=true;
            
  portal_A_CheckBox := TNewCheckBox.Create(WizardForm);
    with portal_A_CheckBox do
      begin
        Name := 'portal_A_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(150);
        Top := ScaleY(10);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'достижения portal';
        Enabled := False;
        OnClick :=@Enable;
      end;
        if FileSize(ExpandConstant('{src}\..\common\portal\bin\stats.bin'), size) then
          if Size > 550 then
            portal_A_CheckBox.Enabled:=true;
  ////////////////////////////////////////////////////  чекбоксы сохранений
  hl2_SAVE_CheckBox := TNewCheckBox.Create(WizardForm);
    with hl2_SAVE_CheckBox do
      begin
        Name := 'hl2_SAVE_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(8);
        Top := ScaleY(132);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'сохранения hl2';
        Enabled := False;
        OnClick :=@Enable;
      end;
  ep1_SAVE_CheckBox := TNewCheckBox.Create(WizardForm);
    with ep1_SAVE_CheckBox do
      begin
        Name := 'ep1_SAVE_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(8);
        Top := ScaleY(70);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'сохранения ep1';
        Enabled := False;
        OnClick :=@Enable;
      end;
  ep2_SAVE_CheckBox := TNewCheckBox.Create(WizardForm);
    with ep2_SAVE_CheckBox do
      begin
        Name := 'ep2_SAVE_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(8);
        Top := ScaleY(40);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'сохранения ep2';
        Enabled := False;
        OnClick :=@Enable;
      end;
  portal_SAVE_CheckBox := TNewCheckBox.Create(WizardForm);
    with portal_SAVE_CheckBox do
      begin
        Name := 'portal_SAVE_CheckBox';
        Parent := WizardForm.SelectDirPage;
        Left := ScaleX(8);
        Top := ScaleY(10);
        Width := ScaleX(97);
        Height := ScaleY(17);
        Caption := 'сохранения portal';
        Enabled := False;
        OnClick :=@Enable;
      end;
  /////////////////////////////////////////////
  StartFolder:= ExpandConstant('{src}\..\common\half-life 2\hl2\SAVE'); // задаём папку откуда начинать поиск
  StartFolder2:= ExpandConstant('{src}\..\common\half-life 2 episode one\episodic\SAVE'); // задаём папку откуда начинать поиск
  StartFolder3:= ExpandConstant('{src}\..\common\half-life 2 episode two\ep2\SAVE'); // задаём папку откуда начинать поиск
  StartFolder4:= ExpandConstant('{src}\..\common\portal\portal\SAVE'); // задаём папку откуда начинать поиск
  ArrayOfMask:= ['*.sav']; // заполняем массив масок для поиска
  for i:= 0 to GetArrayLength(ArrayOfMask)-1 do // перебираем весь масив масок
    begin
      Mask:= ArrayOfMask[i];
      if FindFile(StartFolder) then hl2_SAVE_Checkbox.Enabled := true;
      if FindFile(StartFolder2) then ep1_SAVE_CheckBox.Enabled := true;
      if FindFile(StartFolder3) then ep2_SAVE_CheckBox.Enabled := true;
      if FindFile(StartFolder4) then portal_SAVE_CheckBox.Enabled := true;
    end;
    


end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then
  begin
    WizardForm.NextButton.Enabled := false;
  end;
end;


или архив с файлами
http://sendfile.su/586804

Отправлено: 16:33, 05-05-2012 | #1840



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход