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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для Ivan_009

Ветеран


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

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


Покажите пожалуйста пример как пользоваться Inno Setup Unpacker 0.37 как распаковать инсталлятор...

Отправлено: 08:05, 08-08-2012 | #551



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

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


Аватара для alert30

Ветеран


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

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


Ivan_009, UnPacker распаковывает только инсталляторы, которые компилировались на стандартном компиляторе; а вот если использовать UnPacker, т.е. распаковать инсталляторы, которые компилровались на расширенном китайском компиляторе, выдает ошибку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:15, 08-08-2012 | #552


Аватара для Johny777

Ветеран


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

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


Serega,
спасибо за функцию. Она быстрее прощупывает папки с большим количеством файлов
только вот вылетала
ошибка
читать дальше »

---------------------------
Ошибка запуска
---------------------------
Строка 1179:

Out Of String Range.
---------------------------
ОК
---------------------------

на строке:
Код: Выделить весь код
  if dir[Length(dir)] <> '\' then
    Insert('\', dir, Length(dir)+1);
а именно при нажатии на кнопку отмена на маленькой форме
форма появляется при таком вот условии
if (GetFileCount(S_UPD, '*_update.exe') > 1) and (GetFileCount(ExpandConstant('{src}\outer\update'), '*_update.exe') > 0) and (S_UPD <> ExpandConstant('{src}\outer\update')) then
те если в пути указываемом в TFolderTreeView файлов больше одного, а в директории по умолчанию - папка Outer рядом с инсталлом - есть хоть один файл
после появления формы при нажатии на кнопку отмена директория TFolderTreeView сбрасывается:
TFolderTreeView(Sender).Directory := ExpandConstant('{src}\outer\update');
вот тут-то и вылетала ошибка
исправил (выделил зелёным):
читать дальше »
Код: Выделить весь код
function GetFileCount(dir, mask: string): Integer;
var
  FindFiles: TFindRec;
begin
  Result := 0;
  if FindFirst(dir +'\' + mask, FindFiles) then
    begin
      repeat
        if FindFiles.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          case FindFiles.Name of
            {#FNames}: Result := Result + 1;
          end;
      until not FindNext(FindFiles);
      FindClose(FindFiles);
    end;
end;

надеюсь этим как обычно не накосячил (может стоило воспользоваться встроенной AddBackslash ?), хотя вроде по тестам всё в порядке

============================================================================ другой вопрос/просьба
вот процедура рассчёта свободного места

читать дальше »
Код: Выделить весь код
/// свободное место /// начало
var
  Size_Form_Exist: boolean;
  Size_Form: TSetupForm;
  NeedSizeLabel, FreeSizeLabel: TLabel;
  No_Space: boolean;
  One_Game_Selected: boolean;

  half_life_2_russian_gcf: boolean;                  // 1
  half_life_2_buka_russian_gcf: boolean;             // 2
  half_life_2_2007_base_content_gcf: boolean;        // 3
  half_life_2_content_gcf: boolean;                  // 4
 // half_life_2_game_dialog_gcf: boolean;              // 5
  episode_one_2007_content_gcf: boolean;             // 6
  half_life_2_episode_one_gcf: boolean;              // 7
  episodic_2007_shared_gcf: boolean;                 // 8
  episode_1_shared_gcf: boolean;                     // 9
  half_life_2_episode_two_english_gcf: boolean;      // 10
  episode_two_content_gcf: boolean;                  // 11
  episode_two_maps_gcf: boolean;                     // 12
  episode_two_materials_gcf: boolean;                // 13
  portal_english_gcf: boolean;                       // 14
  portal_content_gcf: boolean;                       // 15
  source_2007_binaries_2_gcf: boolean;               // 16
  source_2007_shared_materials_gcf: boolean;         // 17
  source_2007_shared_models_gcf: boolean;            // 18
  source_2007_shared_sounds_gcf: boolean;            // 19
  source_materials_gcf: boolean;                     // 20
  source_models_gcf: boolean;                        // 21
  source_sounds_gcf: boolean;                        // 22
  half_life_2_episode_one_russian_gcf: boolean;      // 23
  half_life_2_episode_two_russian_gcf: boolean;      // 24
  portal_russian_gcf: boolean;                       // 25

procedure Calculate;
var
  NeedSize: Integer;
  iCore_All, iCoreEpisodes: Integer;
  ihl2_Size, ihl2_russian_Size, ihl2_russian_buka_Size: Integer;
  ihl2_ep1_Size, ihl2_ep1_russian_Size: Integer;
  ihl2_ep2_Size, ihl2_ep2_russian_Size, ihl2_ep2_english_Size: Integer;
  iPortal_Size, iPortal_russian_Size, iPortal_english_Size: Integer;
  ihl2_Dir_Size, iep1_Dir_Size, iep2_Dir_Size, iportal_Dir_Size: Integer;

  One_Episode_Selected: boolean;

  i_half_life_2_russian_gcf: Integer;                  // 1
  i_half_life_2_buka_russian_gcf: Integer;             // 2
  i_half_life_2_2007_base_content_gcf: Integer;        // 3
  i_half_life_2_content_gcf: Integer;                  // 4
 // i_half_life_2_game_dialog_gcf: Integer;              // 5
  i_episode_one_2007_content_gcf: Integer;             // 6
  i_half_life_2_episode_one_gcf: Integer;              // 7
  i_episodic_2007_shared_gcf: Integer;                 // 8
  i_episode_1_shared_gcf: Integer;                     // 9
  i_half_life_2_episode_two_english_gcf: Integer;      // 10
  i_episode_two_content_gcf: Integer;                  // 11
  i_episode_two_maps_gcf: Integer;                     // 12
  i_episode_two_materials_gcf: Integer;                // 13
  i_portal_english_gcf: Integer;                       // 14
  i_portal_content_gcf: Integer;                       // 15
  i_source_2007_binaries_2_gcf: Integer;               // 16
  i_source_2007_shared_materials_gcf: Integer;         // 17
  i_source_2007_shared_models_gcf: Integer;            // 18
  i_source_2007_shared_sounds_gcf: Integer;            // 19
  i_source_materials_gcf: Integer;                     // 20
  i_source_models_gcf: Integer;                        // 21
  i_source_sounds_gcf: Integer;                        // 22
  i_half_life_2_episode_one_russian_gcf: Integer;      // 23
  i_half_life_2_episode_two_russian_gcf: Integer;      // 24
  i_portal_russian_gcf: Integer;                       // 25

begin
  if not Size_Form_Exist then
  begin
    if not Param and not Game_From_INI_Selected then
    begin
      half_life_2_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2_russian.gcf');
      half_life_2_buka_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 buka russian.gcf');
      half_life_2_2007_base_content_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 2007 base content.gcf');
      half_life_2_content_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 content.gcf');
    // half_life_2_game_dialog_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 game dialog.gcf');
      episode_one_2007_content_gcf := FileExists(WizardForm.DirEdit.Text + '\episode one 2007 content.gcf');
      half_life_2_episode_one_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 episode one.gcf');
      episodic_2007_shared_gcf := FileExists(WizardForm.DirEdit.Text + '\episodic 2007 shared.gcf');
      episode_1_shared_gcf := FileExists(WizardForm.DirEdit.Text + '\episode 1 shared.gcf');
      half_life_2_episode_two_english_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 episode two english.gcf');
      episode_two_content_gcf := FileExists(WizardForm.DirEdit.Text + '\episode two content.gcf');
      episode_two_maps_gcf := FileExists(WizardForm.DirEdit.Text + '\episode two maps.gcf');
      episode_two_materials_gcf := FileExists(WizardForm.DirEdit.Text + '\episode two materials.gcf');
      portal_english_gcf := FileExists(WizardForm.DirEdit.Text + '\portal english.gcf');
      portal_content_gcf := FileExists(WizardForm.DirEdit.Text + '\portal content.gcf');
      source_2007_binaries_2_gcf := FileExists(WizardForm.DirEdit.Text + '\source 2007 binaries 2.gcf');
      source_2007_shared_materials_gcf := FileExists(WizardForm.DirEdit.Text + '\source 2007 shared materials.gcf');
      source_2007_shared_models_gcf := FileExists(WizardForm.DirEdit.Text + '\source 2007 shared models.gcf');
      source_2007_shared_sounds_gcf := FileExists(WizardForm.DirEdit.Text + '\source 2007 shared sounds.gcf');
      source_materials_gcf := FileExists(WizardForm.DirEdit.Text + '\source materials.gcf');
      source_models_gcf := FileExists(WizardForm.DirEdit.Text + '\source models.gcf');
      source_sounds_gcf := FileExists(WizardForm.DirEdit.Text + '\source sounds.gcf');
      half_life_2_episode_one_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 episode one russian.gcf');
      half_life_2_episode_two_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2 episode two russian.gcf');
      portal_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\portal russian.gcf');
    end;
    
    Size_Form := CreateCustomForm();
    with Size_Form do
    begin
      ClientWidth := ScaleX(187);
      ClientHeight := ScaleY(54);
      BorderIcons := [];
      Caption := ExpandConstant('{cm:SFormCaption}');
      Left := WizardForm.Left + ScaleX(346);
      Top := WizardForm.Top - ScaleY(87);
      DeleteMenu(GetSystemMenu(Size_Form.Handle,False), $F060,0); /// сделать кнопку "закрыть" неактивной
      SetClassLong(Size_Form.Handle, -26, GetClassLong(Size_Form.Handle, -26) or $200); /// блокировка комбинации alt + f4
      if not No_Backgr_Pic then FormStyle := fsStayOnTop;

      NeedSizeLabel := TLabel.Create(nil)
      with NeedSizeLabel do
      begin
        Parent := Size_Form;
        SetBounds(ScaleX(7), ScaleY(1), ScaleX(50), ScaleY(13));
        Caption := ExpandConstant('{cm:Count}');
      end;

      FreeSizeLabel := TLabel.Create(nil)
      with FreeSizeLabel do
      begin
        Parent := Size_Form;
        SetBounds(ScaleX(7), ScaleY(23), ScaleX(50), ScaleY(13));
        Caption := ExpandConstant('{cm:Analyze}');
      end;

      GetSpaceOnDisk(ExtractFileDrive(WizardForm.DirEdit.Text), True, FreeMB, TotalMB);
      FreeSizeLabel.Caption := ExpandConstant('{cm:Free_Space} ') + FloatToStr(round(FreeMB/1024*100)/100) + ExpandConstant(' {cm:Gb}');

      Show;
      Repaint;
      Size_Form_Exist := True;
    end;
    SendMessage(WizardForm.Handle,$0112,$F012,0); // нажимаем на окно, чтоб стало активным
  end;
  ////////////////////////////////////////////

  One_Episode_Selected := (hl2_ru_RadioButton.Checked and hl2_ru_RadioButton.Enabled) or (hl2_ep1_ru_RadioButton.Checked and hl2_ep1_ru_RadioButton.Enabled) or (hl2_ep2_ru_RadioButton.Checked and hl2_ep2_ru_RadioButton.Enabled);



  //  half_life_2_game_dialog_gcf
  if hl2_CheckBox.Checked and hl2_CheckBox.Enabled then /// эксклюзивные  файлы халфы 2
  begin
    if not DirExists(WizardForm.DirEdit.Text + '\common\half-life 2') then ihl2_Dir_Size := 1903 else ihl2_Dir_Size := 0;
    if not half_life_2_buka_russian_gcf then i_half_life_2_buka_russian_gcf := 428 else i_half_life_2_buka_russian_gcf := 0; 
    if not half_life_2_2007_base_content_gcf then i_half_life_2_2007_base_content_gcf := 498 else i_half_life_2_2007_base_content_gcf := 0;
    if not half_life_2_content_gcf then i_half_life_2_content_gcf := 841 else i_half_life_2_content_gcf := 0; /// точно

    if (hl2_buka_CheckBox.Checked and hl2_buka_CheckBox.Enabled) then  ihl2_russian_buka_Size := i_half_life_2_buka_russian_gcf else  ihl2_russian_buka_Size := 0; /// бука

    ihl2_Size := i_half_life_2_2007_base_content_gcf + i_half_life_2_content_gcf + ihl2_Dir_Size // где 1844 это размер папки с файлами
  end;



  if hl2_ep1_CheckBox.Checked and hl2_ep1_CheckBox.Enabled then /// эксклюзивные файлы эпизода 1
  begin
    if not DirExists(WizardForm.DirEdit.Text + '\common\half-life 2 episode one') then iep1_Dir_Size := 142 else iep1_Dir_Size := 0;
    if not episode_one_2007_content_gcf then i_episode_one_2007_content_gcf := 246 else i_episode_one_2007_content_gcf := 0; /// точно
    if not half_life_2_episode_one_gcf then i_half_life_2_episode_one_gcf := 606 else i_half_life_2_episode_one_gcf := 0; /// точно

    ihl2_ep1_Size := i_episode_one_2007_content_gcf + i_half_life_2_episode_one_gcf + iep1_Dir_Size
  end;



  if hl2_ep2_CheckBox.Checked and hl2_ep2_CheckBox.Enabled then /// зксклюзивные файлы эпизода 2
  begin
    if not DirExists(WizardForm.DirEdit.Text + '\common\half-life 2 episode two') then iep2_Dir_Size := 332 else iep2_Dir_Size := 0;
    if not half_life_2_episode_two_russian_gcf then i_half_life_2_episode_two_russian_gcf := 303 else i_half_life_2_episode_two_russian_gcf := 0;
    if not half_life_2_episode_two_english_gcf then i_half_life_2_episode_two_english_gcf := 500 else i_half_life_2_episode_two_english_gcf := 0; 
    if not episode_two_content_gcf then i_episode_two_content_gcf := 1442 else i_episode_two_content_gcf := 0;
    if not episode_two_maps_gcf then i_episode_two_maps_gcf := 675 else i_episode_two_maps_gcf := 0;
    if not episode_two_materials_gcf then i_episode_two_materials_gcf := 670 else i_episode_two_materials_gcf := 0;

    if (hl2_ep2_ru_RadioButton.Checked and hl2_ep2_ru_RadioButton.Enabled) then ihl2_ep2_russian_Size := i_half_life_2_episode_two_russian_gcf else ihl2_ep2_russian_Size := 0; /// русская озвучка относится только ко второму эпизоду
    if (hl2_ep2_en_RadioButton.Checked and hl2_ep2_en_RadioButton.Enabled) or (hl2_ep2_ru_en_RadioButton.Checked and hl2_ep2_ru_en_RadioButton.Enabled) then ihl2_ep2_english_Size := i_half_life_2_episode_two_english_gcf else  ihl2_ep2_english_Size := 0

    ihl2_ep2_Size := i_episode_two_content_gcf + i_episode_two_maps_gcf + i_episode_two_materials_gcf + iep2_Dir_Size
  end;



  if portal_CheckBox.Checked and portal_CheckBox.Enabled then // экссклюзив файлы Портала
  begin
    if not DirExists(WizardForm.DirEdit.Text + '\common\portal') then iportal_Dir_Size := 121 else iportal_Dir_Size := 0;
    if not portal_russian_gcf then i_portal_russian_gcf := 111 else i_portal_russian_gcf := 0; /// точно
    if not portal_english_gcf then i_portal_english_gcf := 160 else i_portal_english_gcf := 0; /// точно
    if not portal_content_gcf then i_portal_content_gcf := 1049 else i_portal_content_gcf := 0; /// точно

    if (portal_ru_RadioButton.Checked and portal_ru_RadioButton.Enabled) then iPortal_russian_Size := i_portal_russian_gcf else  iPortal_russian_Size := 0;
    if (portal_en_RadioButton.Checked and portal_en_RadioButton.Enabled) or (portal_ru_en_RadioButton.Checked and portal_ru_en_RadioButton.Enabled) then iPortal_english_Size := i_portal_english_gcf else iPortal_english_Size := 0;

    iPortal_Size := i_portal_content_gcf + iportal_Dir_Size
  end;


  /// ядро ресурсов всех 4-х игр
  if One_Game_Selected then
  begin
    if not source_2007_binaries_2_gcf then i_source_2007_binaries_2_gcf := 135 else i_source_2007_binaries_2_gcf := 0; /// точно
    if not source_2007_shared_materials_gcf then i_source_2007_shared_materials_gcf := 985 else i_source_2007_shared_materials_gcf := 0; /// точно
    if not source_2007_shared_models_gcf then i_source_2007_shared_models_gcf := 148 else i_source_2007_shared_models_gcf := 0;  /// точно
    if not source_2007_shared_sounds_gcf then i_source_2007_shared_sounds_gcf := 2 else i_source_2007_shared_sounds_gcf := 0; /// точно
    if not source_materials_gcf then i_source_materials_gcf := 1047 else i_source_materials_gcf := 0;  /// точно
    if not source_models_gcf then i_source_models_gcf := 449 else i_source_models_gcf := 0;  /// точно
    if not source_sounds_gcf then i_source_sounds_gcf := 975 else i_source_sounds_gcf := 0;  /// точно

    iCore_All := i_source_2007_binaries_2_gcf + i_source_2007_shared_materials_gcf + i_source_2007_shared_models_gcf + i_source_2007_shared_sounds_gcf + i_source_materials_gcf + i_source_models_gcf + i_source_sounds_gcf;
  end;



  if ((hl2_ep1_CheckBox.Checked and hl2_ep1_CheckBox.Enabled) or (hl2_ep2_CheckBox.Checked and hl2_ep2_CheckBox.Enabled)) then /// ядро ресурсов эпизодов и только их
  begin
    if not episodic_2007_shared_gcf then i_episodic_2007_shared_gcf := 273 else i_episodic_2007_shared_gcf := 0; 
    if not episode_1_shared_gcf then i_episode_1_shared_gcf := 1229 else i_episode_1_shared_gcf := 0;

    iCoreEpisodes := i_episode_1_shared_gcf + i_episodic_2007_shared_gcf
  end;



  if One_Episode_Selected then  /// файл hl2_russian.gcf относится ко всем 3-м играм
  begin
    if not half_life_2_russian_gcf then i_half_life_2_russian_gcf := 784 else i_half_life_2_russian_gcf := 0; 

    ihl2_russian_Size := i_half_life_2_russian_gcf;
  end;



  if (hl2_ep1_ru_RadioButton.Checked and hl2_ep1_ru_RadioButton.Enabled) or (hl2_ep2_ru_RadioButton.Checked and hl2_ep2_ru_RadioButton.Enabled) then /// half-life 2 episode one russian.gcf относится к 2-м эпизодам
  begin
    if not half_life_2_episode_one_russian_gcf then i_half_life_2_episode_one_russian_gcf := 539 else i_half_life_2_episode_one_russian_gcf := 0; /// точно

    ihl2_ep1_russian_Size := i_half_life_2_episode_one_russian_gcf
  end;



  NeedSize := iCore_All + iCoreEpisodes + ihl2_Size + ihl2_russian_Size + ihl2_russian_buka_Size + ihl2_ep1_Size + ihl2_ep1_russian_Size + ihl2_ep2_Size + ihl2_ep2_russian_Size + ihl2_ep2_english_Size + iPortal_russian_Size + iPortal_english_Size + iPortal_Size;


  if FreeMB < NeedSize then
  begin
    if WizardForm.CurPageID = wpSelectDir then WizardForm.NextButton.Enabled := False;

    NeedSizeLabel.Font.Color := $48c1ca;

    No_Space := True;
  end
  else
  begin
    if WizardForm.CurPageID = wpSelectDir then WizardForm.NextButton.Enabled := not IsStringCyrillic(WizardForm.DirEdit.Text);

    NeedSizeLabel.Font.Color := clWindowText;

    No_Space := False;
  end;

  NeedSizeLabel.Caption := ExpandConstant('{cm:Needed_Size} ') + FloatToStr(round(NeedSize/1024*100)/100) + ExpandConstant(' {cm:Gb}'); // + IntToStr(NeedSize) + ' Mb';
end;
/// конец


где Param(чекбокс отмечен через параметр запуска) и Game_From_INI_Selected(чекбокс отмечен из ключа рядом лежащего ини) это булев переменные
если одна из них True, то длинный рассчёт
...
half_life_2_russian_gcf := FileExists(WizardForm.DirEdit.Text + '\half-life 2_russian.gcf');
...
обрабатывается в InitializeWizard и в WizardFormDirEditOnChange
укоротил и упростил эту процедуру как мог

если есть ещё способы по ускорению скорости её работы, то скажите пожалуйста

Последний раз редактировалось Johny777, 08-08-2012 в 12:59.

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

Отправлено: 12:28, 08-08-2012 | #553


Новый участник


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

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


Johny777,
твой скрипт работает замечательно. детает то что мне нужно
но при попытке соединить его с моим вылетает ошибка:

Compiling [code] section
Error on line 2084 in d:\setup\sbis-setup\setup-eo.iss: Column 4:
Duplicate identifier 'TSHFileOpStruct'
Compile aborted.

на строке
Код: Выделить весь код
  
type  // это сторока 2084
   TSHFileOpStruct=record
     Wnd: HWND;
     wFunc: UINT;
     pFrom: PChar;
     pTo: PChar;
     fFlags: Word;
     fAnyOperationsAborted: BOOL;
     hNameMappings: HWND;
     lpszProgressTitle: PChar;
   end;
вот где дублируется, не понимаю. поиск по файлам не находит повторений(

вот все мои скрипты и файлы для сборки
http://wtrns.fr/fs097Jn71d0RQUwgkj

Последний раз редактировалось Leka_651, 08-08-2012 в 14:33.


Отправлено: 13:58, 08-08-2012 | #554


Аватара для Johny777

Ветеран


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

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


Leka_651,
скачай отсюда http://forum.oszone.net/showthread.p...99#post1201499
или отсюда (проще установка) http://innoultra.ru/?page_id=18
расширенную версию Inno
установи расширенный компилятор ANSI
попробуй скомпилировать

ели будет ошибка закомментируй так (возможно инно уже знает этот тип, те он уже встроен заводом):
читать дальше »
Код: Выделить весь код
{type  // это сторока 2084
   TSHFileOpStruct=record
     Wnd: HWND;
     wFunc: UINT;
     pFrom: PChar;
     pTo: PChar;
     fFlags: Word;
     fAnyOperationsAborted: BOOL;
     hNameMappings: HWND;
     lpszProgressTitle: PChar;
   end;}

ещё раз попробуй

Цитата Leka_651:
где дублируется, не понимаю »
может в модуле, если ты ими пользуешься

Цитата Leka_651:
твой скрипт работает замечательно. детает то что мне нужно »
наконец-то я хоть что-то путное собрал. Радует
_______________________--
по ссылке на твой архив пишет, что файл устарел и больше не доступен

Последний раз редактировалось Johny777, 08-08-2012 в 16:15.

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

Отправлено: 15:53, 08-08-2012 | #555


Новый участник


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

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


Johny777,
спасибо. пойду попробую

Johny777,
ошибка осталась
до этого у меня стояла версия 5.5.0 и твой скрипт работал. ошибка похоже у меня

Цитата Johny777:
может в модуле, если ты ими пользуешься »
я не знаю что такое модули в inno setup


вот новая ссылка. теперь должно качаться
http://download.sbis.ru/files/setup.zip

Отправлено: 16:03, 08-08-2012 | #556


Новый участник


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

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


упс... как-то у меня два сообщения в одно слились

Отправлено: 16:22, 08-08-2012 | #557


Аватара для Johny777

Ветеран


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

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


Leka_651, ну и тяжёлый же у тебя скрипт. Запутался
Цитата Leka_651:
я не знаю что такое модули »
например этот
#include "SHFileOperation.iss"
которого рядом нет
но если ты его подключаешь, то и будет вылетать с ошибкой, тк эта же функция используется и для этой версии копирования (бэкапа)
function SHFileOperation(const lpFileOp: TSHFileOpStruct):integer; external 'SHFileOperation@shell32.dll stdcall';

попробую другую функцию копирования использовать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:20, 08-08-2012 | #558


Новый участник


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

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


Johny777,
это не все скрипты. я лишнее убрала

я могу обойтись без этого модуля
#include "SHFileOperation.iss"

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

Отправлено: 17:34, 08-08-2012 | #559


Новый участник


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

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


Johny777,
не хочет работать.

буду сейчас разбираться где косяк.

Отправлено: 17:49, 08-08-2012 | #560



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход