Inno Setup (создание инсталяционных пакетов). Часть 1

Статус
В этой теме нельзя размещать новые ответы.

Atari

Новичок
На панели у меня все отображается нормально, кроме самодельных кнопок, они вообще не отображаются. Как это исправить?
 

GVS276

Старожил
Проверенный
Atari, Название твоей кнопки.Parent:= Название твоей панели
P.S.: Если я правельно понял вопроса..
 

LexBell

Борода
Супер модератор
Atari,
Это панель и три таймера.
У меня два вышло :) может и в одном можно сделать, но я решил не усложнять :)
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*Code]
var
  SettingPanel: TPanel;
  SettingPanel_m_Timer,SettingPanel_p_Timer: TTimer;
  PanelTop:Integer;
  
  
procedure NewButton1Click(Sender: TObject);
begin
  case PanelTop of
  -275:  SettingPanel_p_Timer.Enabled:=True;
    40:  SettingPanel_m_Timer.Enabled:=True;
  end;
end;

procedure PanelTop_p_Timer(Sender: TObject);
begin
  PanelTop:=PanelTop+5;
  SettingPanel.Top:=ScaleY(PanelTop);
  if PanelTop=40 then
  SettingPanel_p_Timer.Enabled:=False;
end;

procedure PanelTop_m_Timer(Sender: TObject);
begin
  PanelTop:=PanelTop-5;
  SettingPanel.Top:=ScaleY(PanelTop);         
  if PanelTop=- 275 then
  SettingPanel_m_Timer.Enabled:=False;
end;

procedure InitializeWizard();
begin
PanelTop:= - 275;
  SettingPanel_p_Timer := TTimer.Create(WizardForm);
  with SettingPanel_p_Timer do
  begin
    Interval := 10;
    Enabled:=False;
    OnTimer := @PanelTop_p_Timer;
  end;

  SettingPanel_m_Timer := TTimer.Create(WizardForm);
  with SettingPanel_m_Timer do
  begin
    Interval := 10;
    Enabled:=False;
    OnTimer := @PanelTop_m_Timer;
  end;

  SettingPanel := TPanel.Create(WizardForm);
  with SettingPanel do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(56),ScaleY(PanelTop),ScaleX(385),ScaleY(273))
    ParentBackground := False;
  end;

  with TNewButton.Create(WizardForm) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY(25))
    Caption := 'Íàñòðîéêè';
    OnClick := @NewButton1Click;
  end;
end;
 

Atari

Новичок
VinTagE, вопрос не в этом, а в том, что кнопка ("самодельная") не хочет отображаться. И еще, такой вопрос: при попытке дважды использовать данный код:
Код:
ExtractTemporaryFile('1.bmp'); 
Img := TBitmapImage.Create(WizardForm); 
With Img do 
begin 
  ... 
  Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); 
end;
Получается ошибка: Cannot open file 1.bmp Код использую для разных картинок.
НО, если использовать код дважды для одной картинки, то ошибки нет. Вообщем: Как можно расположить на форме изоображение (без использования ботвы)?
 

LexBell

Борода
Супер модератор
Получается ошибка: Cannot open file 1.bmp Код использую для разных картинок.
Вот так:

Код:
procedure InitializeWizard();
begin
  ExtractTemporaryFile('1.bmp');
  [B]Img[/B] := TBitmapImage.Create(WizardForm);
  With Img do
  begin
    ...
    [B]Bitmap[/B].LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
  end;
  Img1 := TBitmapImage.Create(WizardForm);
  With Img1 do
  begin
    ...
    Bitmap:=[B]Img.Bitmap[/B];
  end;
end;
 

LexBell

Борода
Супер модератор
Проц грузить будет при нажатии на кнопку под каллбек надо переделывать
Не факт. Одновременно работает только один, и тот недолго. В код вчитайся.

Добавлено через 1 минуту
под каллбек надо переделывать
ИМХО это без разницы. и то и то, вроде как отделяет поток в примитивном виде :) Но кому нужно - можно и переделать.
 

KorwiN

Новичок
Добрый вечер всем!!!
Вот такой вопрос назрел...
При установке проценты на прогресс баре переваливают за сотню, т.е. в зависимости от количства архивов 1,2,3,4,5 и т.д. идет до 100,200,300,400,500% и т.д.
Знаю что на рубоарде это обсуждалось, но искал и не смог почему-то найти.
Помогите пожалуйста, если знаете решение проблемки)
Буду очень благодарен!


Спасибо, разборался сам!!!
Вот решение, может кому нибудь пригодится:
При автоматической расстановке необходим тестовый проход для определения времени выполнения каждой операции относительно других.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов нулями.
Краткая инструкция:
а) первым делом убедитесь, что в начале скрипта закомментирована строка

#define records
(т.е. необходимо поставить точку с запятой в начале этой строки);
б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!
в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:

#define records

Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:

#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
г) снова откомпилить проект.
После этого инсталлер готов к работе.
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.
 
Последнее редактирование:

Snoopak96

Старожил
KorwiN,
IsDone юзаешь так пологаю? так там тестовый прогон надо сделать, после появится records.inf рядом с setup.exe и в скрипте потом раскомментировать #define records и скомпилировать заново - это всё к стати в справке написано к isdone.
 

Tixo

Новичок
Здравствуйте, использую скрипт от шепарда.
Ошибка состоит в том, что распаковка файлов доходит до конца, но потом выползает ошибка:не найдено ни одного файла указанного для isarcextract
http://rghost.ru/33755811
 

Snoopak96

Старожил
Tixo,
Архивы лучше в zip`ах выкладывать, т.к. у некоторых свой arc.ini в Freearc.
 

ACtivity

Новичок
Tixo,
1) не надо лить 11 метров на хостинг, не каждому захочется его скачать.
2) значит ты пользуешься библиотекой ISDon'e => в файле ISDone.iss
строки с распаковкой меняй под себя,
Если одни .arc архивы, значит так -->
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.arc '), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
Остальное под себя.
 
  • Like
Реакции: Tixo

Atari

Новичок
Возможно создать новую страницу перед страницей удаления?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху