Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )


> Написание скрипта для инсталлятора
Гость_Kindly_*
сообщение 17:03:2005, 16:05
Цитата Ответить 





Инопланетный гость






    


(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru
Подняться вверх 
 
Сообщение #1
10 страниц V  « < 3 4 5 6 7 > »   
Новая тема 
Ответов (120 - 149)
zubr
Вставить ник
сообщение 4:08:2005, 03:52
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
как привязать заранее известные размеры устанавливаемых в один каталог программ к описанию в диалоге "Установка и удаление программ"?

Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно, проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог.
Подняться вверх 
 
Сообщение #121
Гость_Dim_*
сообщение 4:08:2005, 09:32
Цитата Ответить 





Инопланетный гость






    


У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос:
Я создал свою страничку с выбором директории и проверкой пути.
Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру).
т.е. как из раздела [code] переопределить {app}?
Подняться вверх 
 
Сообщение #122
Гость_Guest_*
сообщение 4:08:2005, 12:26
Цитата Ответить 





Инопланетный гость






    


To Zubr:
Цитата
проще в вашей программе установки контролировать, чтобы программа устанавливалась в отдельный каталог.

Видимо, да...
Цитата
Windows данные о размере программы берет из размера каталога в котором размещена программа, а не из реестра, так что обмануть ее тут трудно

На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить...
Подняться вверх 
 
Сообщение #123
Гость_Dim_*
сообщение 4:08:2005, 12:38
Цитата Ответить 





Инопланетный гость






    


Цитата(Dim @ 4:08:2005, 11:32 )
У меня вроде маленький, не сложный вопрос, но найти ответ в хелпе не удалось. Собственно вопрос:
Я создал свою страничку с выбором директории и проверкой пути. 
Возможно ли в дальнейшем использовать этот путь вместо константы {app} (при создании ярлыков к примеру).
т.е. как из раздела [code] переопределить {app}?
*


Сам разобрался smile.gif строчка в справке была не по глазам...
В разеделе [code] была вставлена функция:
__________
function GetDir(tmp: string): String;
begin
Result := Page.Values[0];
end;
__________
А вместо {app} используем {code:GetDir} smile.gif
Подняться вверх 
 
Сообщение #124
zubr
Вставить ник
сообщение 4:08:2005, 19:37
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
На самом деле данные о размере программы берутся виндой из каталога, который в конечном итоге мы сами и можем задать. Запихнув в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram в значение InstallLocation путь к директории, мы тем самым принуждаем Windows обсчитать на предмет размера именно тот каталог, размер которого мы хотим отобразить...

Ну так и я о том же rolleyes.gif
Подняться вверх 
 
Сообщение #125
Гость_Guest_Юрий_*_*
сообщение 5:08:2005, 07:53
Цитата Ответить 





Инопланетный гость






    


Существует ли способ убрать слово "Setup" в пункте Описание в свойствах файла инсталлятора?
К примеру, для инсталлятора с таким кусочком кода
[Setup]
AppName=My Program
в свойствах написано "My Program Setup"...
Подняться вверх 
 
Сообщение #126
zubr
Вставить ник
сообщение 6:08:2005, 05:44
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Убрать можно подменив ресурс, как обсуждалось ]]>выше]]>
Подняться вверх 
 
Сообщение #127
Гость_Kindly_*
сообщение 6:08:2005, 12:16
Цитата Ответить 





Инопланетный гость






    


Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить?
Подняться вверх 
 
Сообщение #128
zubr
Вставить ник
сообщение 7:08:2005, 06:19
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
Вопрос немного не по теме, но знать хочется: Почему минимальный размер инсталлятора NSIS 50 kb, а Inno Setup 300 kb и можно ли вообще его уменьшить?

Аналогия минимальный размер exe-файла скомпилированный в Delphi 300 kB, а в VC 20 kB. Скорее всего Inno Setup создавался в среде типа Delphi. Уменьшить не получится, проще написать свой инсталлятор. Кстати, в VC Net очень неплохой Wizard на проект инсталлятора.
Подняться вверх 
 
Сообщение #129
Гость_Kindly_*
сообщение 12:08:2005, 07:11
Цитата Ответить 





Инопланетный гость






    


Известно, что при нажатии кнопки "Отмена" при установке, создается откат действий. Вопрос следующий: возможно ли создать откат при деинсталляции?
Подняться вверх 
 
Сообщение #130
zubr
Вставить ник
сообщение 14:08:2005, 04:18
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Откат деинсталляции можно сделать до процесса удаления файлов, что в принципе деинсталлятор и предлагает. Если вам нужны еще какие то события деинсталлятора, то можете попробовать юзать функции:
function InitializeUninstall(): Boolean;
procedure DeinitializeUninstall();
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
Подняться вверх 
 
Сообщение #131
Гость_Kindly_*
сообщение 14:08:2005, 06:57
Цитата Ответить 





Инопланетный гость






    


Zubr, спасибо - буду пробовать.
Вот какой инструмент я нашел для Inno Setup 5 (3.7М).
]]>http://www.hisoft2000.de/sm5/ScriptMaker5_full.exe]]>
Генератор скриптов в общем говоря (бесплатный). Включает дополнительный модуль для различных наворотов, а именно: сплеш-заставка, измение изображений для каждой страницы в отдельности, проигрывание wave и midi в фоновом режиме, продвинутая деинсталляция (с восстановлением и модификацией) и многое другое. Рекомендую всем.
Подняться вверх 
 
Сообщение #132
Гость_Kindly_*
сообщение 26:08:2005, 06:03
Цитата Ответить 





Инопланетный гость






    


У меня появилась такая проблемка: при упаковке одной игрушки, которая занимает несколько CD, программа разбивает архивы на три диска, но даже при использовании максимального метода сжатия (lzma/ultra), она "отводит" оставшиеся 20 MB для четвертого CD. Это мне абсолютно не нужно. Но создав автономный самораспаковывающийся модуль 7Z, мне удалось уместить игру на 3 CD. Этот ехе-архив запускать при установке с последующим удалением не проблема, проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться.
Подняться вверх 
 
Сообщение #133
Гость_Snаке_*
сообщение 27:08:2005, 21:54
Цитата Ответить 





Инопланетный гость






    


[QUOTE]
...проблема в том, как запустить его так, чтобы началось сразу его выполнение, т.е. извлечение файлов. Насколько мне подсказывавает собственная интуиция, провернуть это можно с помощью параметров командной строки, вот только пока с ней не подружился, поэтому если возникала у кого-нибудь подобная ситуация, просьба помочь мне в ней разобраться.

Извиняюсь, если что-то не так понял. Я делал инсталлятор, в котором сначала я копировал на жесткий sfx-архив, а затем запускал его с параметрами коммандной строки "-e -ao -y", где е-распаковка в текущую папку, ао-перезапись существующих файлов, чтобы не появилось окна с вопросом о перезаписи файла, y-пропуск начального диалога (появится сразу окно прогресса).
Подняться вверх 
 
Сообщение #134
Гость_Snаке_*
сообщение 27:08:2005, 21:54
Цитата Ответить 





Инопланетный гость






    


Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию [Code], вообще реально восстановить код инсталлятора, хотя бы частично?
Подняться вверх 
 
Сообщение #135
Гость_Kindly_*
сообщение 28:08:2005, 07:05
Цитата Ответить 





Инопланетный гость






    


Snаке, спасибо большое, буду пробовать.
Цитата
Не подскажет ли кто, есть ли программка наподобии Inno Unpacker, но чтобы можно было востаноить секцию Code, вообще реально восстановить код инсталлятора, хотя бы частично?

В смысле получается закриптованный файл CompiledCode.bin, да? Есть смысл написать распаковщик/конвертер в TXT (но это уже не по моей специальности cool.gif ). Есть какой-то распаковщик здесь:
]]>http://prdownloads.sourceforge.net/innounp/ifps3_disasm.rar]]>
Но он очень кривой и не дружит с пятой версией, да и к тому же извлекает в АСМе - жуть blink.gif .
Подняться вверх 
 
Сообщение #136
Гость_Snаке_*
сообщение 28:08:2005, 22:11
Цитата Ответить 





Инопланетный гость






    


Подскажите, пожалуйста, кто-нибудь ответ по такому вопросу. На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался?
Подняться вверх 
 
Сообщение #137
Гость_Snаке_*
сообщение 28:08:2005, 22:14
Цитата Ответить 





Инопланетный гость






    


Спасибо Kindly за программку, обязательно попробую. Может еще сам что-нибудь найду.
Подняться вверх 
 
Сообщение #138
Гость_Snаке_*
сообщение 28:08:2005, 22:27
Цитата Ответить 





Инопланетный гость






    


Чтобы тебе, Kindly, самому не возиться, выкладываю скрипт для распаковки 7Z архиваwink.gif. Кстати, только увидел, что ошибся - вместо неправильной команды "ао" напиши "аоа" как показано ниже.

[Files]
Source: "sfx.exe"; DestDir: "{app}"; AfterInstall: MyAfterInstall; Flags: ignoreversion deleteafterinstall

[Code]
procedure MyAfterInstall();
var
ResultCode: Integer;
begin
begin
 Exec(ExpandConstant('{app}\sfx.exe'), '-e -aoa -y', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
end
end;
Подняться вверх 
 
Сообщение #139
Гость_Kindly_*
сообщение 29:08:2005, 07:00
Цитата Ответить 





Инопланетный гость






    


Snаке, у меня все прекрасно работает с установленным параметром '-y'. Я архив в самом 7z архиваторе создавал, поэтому остальные команды не нужны. Запускаю вообще-то я архив из секции [Run], но предложенный способ тоже не хуже smile.gif.
Цитата
На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения? Также при отмене установки родной progress-bar скрывается и как сделать, чтобы мой тоже скрывался?

Есть пример прогресс-бара (его выполнение и скорость выполнения) в одном из скриптов в папке с примерами.
Подняться вверх 
 
Сообщение #140
Гость_fiot_*
сообщение 31:08:2005, 07:09
Цитата Ответить 





Инопланетный гость






    


ни кто не знает,
 CheckListBox := TNewCheckListBox.Create(Page);
 CheckListBox.Width := Page.SurfaceWidth;
 CheckListBox.Height := Page.SurfaceHeight;
 CheckListBox.Flat := True;
 CheckListBox.Parent := Page.Surface;
 CheckListBox.AddCheckBox('GUI', '', 0, True, True, False, True, nil);
   CheckListBox.AddCheckBox('       Windows Explorer', '', 1, False, True, False, True, nil);
   CheckListBox.AddCheckBox('       Outlook',          '', 1, True,  True, False, True, nil);
   CheckListBox.AddCheckBox('       Web Interface',    '', 1, True,  True, False, True, nil);
 CheckListBox.AddCheckBox('Server', '', 0, True, True, False, True, nil);
   CheckListBox.AddCheckBox('cFolders', '', 1, False, True, False, True, nil);
   CheckListBox.AddCheckBox('DMS',      '', 1, True,  True, False, True, nil);
   CheckListBox.AddCheckBox('CRM',      '', 1, True,  True, False, True, nil);

 webInterfaceName := ExpandConstant('{tmp}\web.interface.bmp');
 ExtractTemporaryFile(ExtractFileName(webInterfaceName));

 webInterface := TBitmapImage.Create(Page);
 webInterface.AutoSize := True;
 webInterface.Bitmap.LoadFromFile(webInterfaceName);
 webInterface.Parent := MainForm;
 webInterface.left := 42;
 webInterface.top := 48;

не коректно отображается битмап ?
Подняться вверх 
 
Сообщение #141
Гость_Kindly_*
сообщение 1:09:2005, 06:15
Цитата Ответить 





Инопланетный гость






    


Цитата
Как заставить его двигаться и изменять скорость его движения?

Хм... Действительно - как задать выполнение нового прогресс-бара?
Один из скриптов в примерах описывает выполнение новой страницы прогресса, а не прогресс-бара в отдельности.
Делаем новую полосу прогресса (ну уж как смог).
var
 ProgressBar: TNewProgressBar;

procedure CurPageChanged(CurPageID: Integer);
var
i:Integer;
begin
If CurPageID=wpInstalling
then
begin
 ProgressBar := TNewProgressBar.Create(WizardForm);
 ProgressBar.Left := ScaleY(40);
 ProgressBar.Top := ScaleX(180);
 ProgressBar.Width := ScaleY(415);
 ProgressBar.Height := ScaleX(18);
 ProgressBar.Parent := WizardForm;
 ProgressBar.Position := 0; //указывает количество заполняемых секторов
end;
begin
If CurPageID=wpFinished
then
ProgressBar.Hide
end;
end;


Мне кажется, что выполнение прогресс-бара должно осуществляться как-то по-другому, наверное, должна быть какая-то функция, которая бы заполняла полосу прогресса, например, от 0 до 100 (от начала до конца) в определенный промежуток времени, но вот теперешние способности у меня позволяют только предполагать.

Способ скрытия второго прогресс-бара при нажатии на кнопку Отмена в процессе установки.
В этом примере один недостаток - при нажатии на кнопку Отмена, не будет выведено уведомление о подтверждении Отмены. Может будут у кого варианты, как все проделать без отключения сообщения?

procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
 begin
 Cancel:=True;
If CurPage=wpInstalling
then
 begin
 Confirm:=False;
 ProgressBar.Hide
end;
end;
Подняться вверх 
 
Сообщение #142
Гость_Snаke_*
сообщение 3:09:2005, 17:21
Цитата Ответить 





Инопланетный гость






    


Здраствуйте. Я хочу задать вам, Zubr, целых три вопроса:

1. Мне интересно, что это за процедура ShowAboutBox и как ее использовать. Сам я ответ в Help'е не нашел;
2. Можно ли аналогично инсталлатору как нибудь изменить окно деинсталляции. Конкретно меня интересует, как можно убрать в левом верхнем углу изображение иконки инсталлятора. В отличии от WizardForm(и прочее) компонент UninstProgressForm вроде не поддерживается, но хотелось бы узнать мнение знающего человека;
3. Самый гиморный вопрос. Может объясню немного путанно, но постараюсь. На второй странице форума вы написали скрипт создания фонового рисунка на MainForm, но у него есть один недостаток. Когда запускаешь инсталлятор, одновременно появляются MainForm и WizardForm, а через некоторое время на MainForm создается рисунок, но в этот промежуток времени виден отвратительный синий(или какой-либо другой) фоновый цвет MainForm. Я видел всего два инсталлятора(игра DOOM 3 и программа Quest3D 2.0b), в которых реализован какой-то другой принцип - MainForm и фоновый рисунок на ней появляются ОДНОВРЕМЕННО, а через какое-то мгновение появляется окно WizardForm, т.е. фоновый синий цвет не виден. Подскажите, пожалуйста как это сделано, а то я сам провозился наверное с середины лета, но так и не разобрался.

Буду очень благодарен если вы поможете мне с их решением!
Отдельное большое спасибо Kindly за помощь!
Подняться вверх 
 
Сообщение #143
Гость_Snаke_*
сообщение 3:09:2005, 18:02
Цитата Ответить 





Инопланетный гость






    


Цитата(fiot @ 31:08:2005, 09:09 )
ни кто не знает,
...
webInterface := TBitmapImage.Create(Page);
webInterface.AutoSize := True;
webInterface.Bitmap.LoadFromFile(webInterfaceName);
webInterface.Parent := MainForm;
webInterface.left := 42;
webInterface.top := 48;

не коректно отображается битмап ?
*


Немного непонятна эта часть скрипта. Напиши, на какой форме ты хочешь создать рисунок!
Подняться вверх 
 
Сообщение #144
Гость_Snаke_*
сообщение 3:09:2005, 18:24
Цитата Ответить 





Инопланетный гость






    


Чуть не забыл. Если ты, fiot, хочешь создать рисунок на странице инсталлятора, также опиши где конкретно должен располагаться рисунок и его размеры. Возможно я знаю ответ на твой вопрос.
Подняться вверх 
 
Сообщение #145
Гость_Snаke_*
сообщение 3:09:2005, 23:59
Цитата Ответить 





Инопланетный гость






    


Позволю себе, Kindly, чуть подправить твой скрипт с progress-bar'ом. Попробуй мой скрипт(небольшая переделка под Wise Installation Wizard), думаю понравится. Также я решил проблему со скрытием progress-bar'а. Сначала у меня получалось, что progress-bar скрывался при нажатии "Отмена", но при нажатии в месаге(Выход из программы установки) на "Нет" скрытый progress-bar уже появлялся. Как изменить стандартную месагу я не понял и скрыл ее, и затем просто сделал свою.
[Code]
var
Progress: TNewProgressBar;
CurentFile: TNewStatictext;

procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
If MsgBox('Установка не завершена. Если вы выйдете, программа не будет установлена.' #13#10#13#10 'Вы сможете завершить установку, запустив программу установки позже.' #13#10#13#10 'Выйти из программы установки?', mbConfirmation, mb_YesNo)=IdYes then
 begin
  Cancel:=True;
  Progress.Hide;
  CurentFile.Hide
 end else begin
  Cancel:=False;
 end
end;

procedure InitializeWizard();
var
Cancel: Boolean;
Confirm: Boolean;
Page: TWizardPage;
InfoText: TNewStatictext;
AllFiles: TNewStatictext;
begin
  Page:=PageFromID(wpInstalling);
  AllFiles:=TNewStaticText.Create(Page);
  AllFiles.Caption:='Состояние:';
  AllFiles.Parent:=Page.Surface;
  WizardForm.StatusLabel.Top:=ScaleY(20);
  WizardForm.ProgressGauge.Top:=ScaleY(40);
  CurentFile:=TNewStaticText.Create(Page);
  CurentFile.Caption:='Копируется файл:';
  CurentFile.Top:=ScaleY(90);
  CurentFile.Parent:=Page.Surface;
  WizardForm.FileNameLabel.Top:=ScaleY(110);
  Progress:=TNewProgressBar.Create(Page);
  Progress.Top:=ScaleY(130);
  Progress.Width:=Page.SurfaceWidth;
  Progress.Height:=WizardForm.ProgressGauge.Height;
  Progress.Min:=0;
  Progress.Max:=100;
  Progress.Show;
  Progress.Parent:=Page.Surface;
end;


К слову, стало гораздо проще заменить тип сообщения(mbInformation, mbConfirmation и т.д.), если конечно захочешь.
Теперь осталось только решить проблему с движением progress-bar'а.
Подняться вверх 
 
Сообщение #146
zubr
Вставить ник
сообщение 4:09:2005, 08:58
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Snаke
Цитата
1. Мне интересно, что это за процедура ShowAboutBox и как ее использовать. Сам я ответ в Help'е не нашел;

Эта процедура вызывает информационное окно об авторстве и версии Inno Setup.
procedure InitializeWizard();
begin
MainForm.ShowAboutBox;
end;

Вам это надо?

Цитата
2. Можно ли аналогично инсталлатору как нибудь изменить окно деинсталляции. Конкретно меня интересует, как можно убрать в левом верхнем углу изображение иконки инсталлятора. В отличии от WizardForm(и прочее) компонент UninstProgressForm вроде не поддерживается, но хотелось бы узнать мнение знающего человека;

Похоже, что такой возможности нет.

Цитата
3. Самый гиморный вопрос. Может объясню немного путанно, но постараюсь. На второй странице форума вы написали скрипт создания фонового рисунка на MainForm, но у него есть один недостаток. Когда запускаешь инсталлятор, одновременно появляются MainForm и WizardForm, а через некоторое время на MainForm создается рисунок, но в этот промежуток времени виден отвратительный синий(или какой-либо другой) фоновый цвет MainForm. Я видел всего два инсталлятора(игра DOOM 3 и программа Quest3D 2.0b), в которых реализован какой-то другой принцип - MainForm и фоновый рисунок на ней появляются ОДНОВРЕМЕННО, а через какое-то мгновение появляется окно WizardForm, т.е. фоновый синий цвет не виден. Подскажите, пожалуйста как это сделано, а то я сам провозился наверное с середины лета, но так и не разобрался.

[Setup]
WindowVisible=no

[code]

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
var
 BackgroundBitmapImage: TBitmapImage;
 s:string;
 width, height:Integer;
begin
 MainForm.BORDERSTYLE:=bsNone;
 width:=GetSystemMetrics(61);
 height:=GetSystemMetrics(62);
 MainForm.Width:=width;
 MainForm.Height:=height;
 width:=MainForm.ClientWidth;
 height:=MainForm.ClientHeight;
 ExtractTemporaryFile('mostkorol2_1024.bmp');
 s:=ExpandConstant('{tmp}')+'\mostkorol2_1024.bmp';
 BackgroundBitmapImage := TBitmapImage.Create(MainForm);
 BackgroundBitmapImage.Bitmap.LoadFromFile(s);
 BackgroundBitmapImage.Left := 0;
 BackgroundBitmapImage.Top := 0;
 BackgroundBitmapImage.Width:=width;
 BackgroundBitmapImage.Height:=height;
 BackgroundBitmapImage.Parent := MainForm;
 BackgroundBitmapImage.Stretch:=True;
 MainForm.Visible:=True;
end;


Цитата
Подскажите, пожалуйста, кто-нибудь ответ по такому вопросу. На странице wpInstalling я создал второй progress-bar (просто так, для вида) и его движение ни от чего не должно зависить. Как заставить его двигаться и изменять скорость его движения?

Чтобы ваш progress-bar корректно двигался, надо двигать его в отдельном потоке, то есть создать процедуру потока:
procedure prgbar_emulate;
var
 i:Integer;
begin
For i:=1 to 100 do
begin
 Sleep(100);
 prbar.Position:=i;
end;
end;

Запускается поток с помощью функции API CreateThread, которая находится в Kernel32.dll. Как выдрать функцию из dll смотрите пример выше (с функцией GetSystemMetrics), а также в примерах к Inno Setup (CodeDll.iss). Полный код писать нет времени.
Подняться вверх 
 
Сообщение #147
Гость_Snаke_*
сообщение 4:09:2005, 14:26
Цитата Ответить 





Инопланетный гость






    


Спасибо, zubr, за скрипт с рисунком. С progress-bar'ом еще предстоит разобраться. Но возникает другой маленький вопросик. Вкратце поясните, что означают эти размеры: width:=GetSystemMetrics(61) и height:=GetSystemMetrics(62).
При использовании размеров 61х62 была видна Панель задач, заменив их на 61х60, получил Fullscreen.
Подняться вверх 
 
Сообщение #148
zubr
Вставить ник
сообщение 4:09:2005, 15:00
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Функция API GetSystemMetrics возвращает информацию о рабочей среде Windows. С параметрами SM_CXMAXIMIZED = 61 и SM_CYMAXIMIZED = 62 функция возвращает размеры развернутого окна по умолчанию. 60 - это вы применили параметр SM_CYMAXTRACK - максимальный размер Y при ручном масштабировании. Если вы хотите, чтобы фоновое окно закрывало и панель задач, корректнее было бы применить параметры SM_CXSCREEN=0, SM_CYSCREEN=1.
Подняться вверх 
 
Сообщение #149
Гость_Snаke_*