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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 898 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 796 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


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

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


С другой стороны, именно по специфике исдона, смотрим процедуру отображения распаковки:
читать дальше »
Код: Выделить весь код
function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
  if OveralPct<=1000 then ImgPBSetPosition(NewPB,OveralPct);// позиция основного прогрессбара
  LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
#ifdef SecondProgressBar
  if CurrentPct<=1000 then ImgPBSetPosition(NewPB2,CurrentPct);// позиция дополнительного прогрессбара
  LabelPct2.Caption := IntToStr(CurrentPct div 10)+'.'+chr(48 + CurrentPct mod 10)+'%';
#endif
  LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
  LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
  LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
  LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
  Result := ISDoneCancel;
end;

Строчка
Код: Выделить весь код
  LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
как раз отвечает за отображение файла, который сейчас распаковывается. Отсюда логически выходит, что достаточно заменить значение Caption на то, что нам нужно:
Код: Выделить весь код
  LabelCurrFileName.Caption:='';// строчка вообще пустая, надписи нет
  LabelCurrFileName.Caption:='наша надпись';// наша надпись
insombia, в общем-то этот пост по твоему вопросу - берешь начальный вариант, и в нем, в функции ProgressCallback меняешь LabelCurrFileName.Caption на один из предложеных вариантов, без лишних гемороев с объединением процедур.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 09-08-2011 в 16:41.

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

Отправлено: 15:14, 09-08-2011 | #2681



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

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


Ветеран


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

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


vint56 ты не понял мне нужно именно на CurStepChanged(CurStep: TSetupStep); похожее сделать но оно не пашет

Отправлено: 15:26, 09-08-2011 | #2682


Старожил


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

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


insombia
procedure CurStepChanged(CurStep: TSetupStep);
begin
CurStepChanged1(CurStep);
CurStepChanged2(CurStep);

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

Отправлено: 15:43, 09-08-2011 | #2683


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


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

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


Вложения
Тип файла: txt install_script.txt
(18.5 Kb, 14 просмотров)

Всем привет. Я тут впервые - зашел по одному вопросу - надеюсь поможете - уже голова кругом. Скрипт уже имеется, а мне необходимо знать какие файлы куда копируются и как происходит регистрация. То есть я хочу сам скопировать и сам с помощью средств виндоус зарегистрировать библиотеки (regsvr32). То есть нужен алгоритм инсталляции человеческим языком)) ну чтобы батничек написать к примеру. (Папка DEMO не интересует).

http://www.fayloobmennik.net/865254 - вот он. что то не крепится к сообщению

Последний раз редактировалось strelyaev, 09-08-2011 в 17:41. Причина: прикрепить файл


Отправлено: 17:38, 09-08-2011 | #2684


Аватара для Gnom_aka_Lexander

Ветеран


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

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


strelyaev,
Source: "{app}\3dvisbtn.dll"; DestDir: "{app}"; Flags: regserver
DestDir: "{app}" - куда копируется.
{app} указываеш в секции [Setup]: DefaultDirName={pf}\3D Active Button Magic.
соответсятвенно в твоем случае это будет папка програм файлс на системном диске\3D Active Button Magic
Flags: regserver - этот флаг запускает команду regsvr применительно к файлу, указанному перед флагом (в твоем случае, это 3dvisbtn.dll.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 18:11, 09-08-2011 | #2685


Пользователь


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

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


давно ничего не делал, но возникла надобность
есть вот такой кусочек
читать дальше »
PHP код: Выделить весь код

[Setup]

AppName=My Program
AppVerName
=My Program
DefaultDirName
={sd}My Program
OutputDir
=.
OutputBaseFilename=test


[CustomMessages]
MyRadioCaption_1=(для 32-х разрядной системы)
MyRadioCaption_2=(для 64-х разрядной системы)
MyRadioDeskrip_0=Выберите версию  :

[
code]

var
  
Label0TLabel;
  
NewRadioButton1TNewRadioButton;
  
NewRadioButton2TNewRadioButton;

procedure RedesignWizardForm;
begin

  
Label0 }
  
Label0 := TLabel.Create(WizardForm);
  
with Label0 do
  
begin
    Name 
:= 'Label0';
    
Parent := WizardForm.SelectDirPage;
    
Caption := ExpandConstant('{cm:MyRadioDeskrip_0}');
    
Transparent := False;
    
Left := ScaleX(0);
    
Top := ScaleY(144);
    
Width := ScaleX(265);
    
Height := ScaleY(17);
  
end;

  { 
NewRadioButton1 }
  
NewRadioButton1 := TNewRadioButton.Create(WizardForm);
  
with NewRadioButton1 do
  
begin
    Name 
:= 'NewRadioButton1';
    
Parent := WizardForm.SelectDirPage;
    
Left := ScaleX(13);
    
Top := ScaleY(180);
    
Width := ScaleX(212);
    
Height := ScaleY(13);
    
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
  
end;

  { 
NewRadioButton2 }
  
NewRadioButton2 := TNewRadioButton.Create(WizardForm);
  
with NewRadioButton2 do
  
begin
    Name 
:= 'NewRadioButton2';
    
Parent := WizardForm.SelectDirPage;
    
Left := ScaleX(13);
    
Top := ScaleY(162);
    
Width := ScaleX(212);
    
Height := ScaleY(13);
    
Caption := ExpandConstant('{cm:MyRadioCaption_2}');
  
end;

  
NewRadioButton1.TabOrder := 0;
  
NewRadioButton2.TabOrder := 1;

end;

procedure InitializeWizard();
begin
  RedesignWizardForm
;
end


нужно привязать к двум компонентам

Отправлено: 16:33, 10-08-2011 | #2686


Старожил


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

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


Imitri7, пример
читать дальше »
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Files]
Source: 64.txt; DestDir: {app}; Check: RadioButton64Bit and IsWin64
Source: 32.txt; DestDir: {app}; Check: RadioButton32Bit and not IsWin64

[CustomMessages]
RadioButton32=(для 32-х разрядной системы)
RadioButton64=(для 64-х разрядной системы)
Myver=Выберите версию :

[code]
var
Label1: TLabel;
RadioButton32: TNewRadioButton;
RadioButton64: TNewRadioButton;

function RadioButton32Bit(): Boolean;
begin
Result:= RadioButton32.Checked;
end;

function RadioButton64Bit(): Boolean;
begin
Result:= RadioButton64.Checked;
end;

procedure RedesignWizardForm;
begin
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Name := 'Label1';
Parent := WizardForm.SelectDirPage;
Caption := ExpandConstant('{cm:Myver}');
Transparent := False;
Left := ScaleX(24);
Top := ScaleY(120);
Width := ScaleX(95);
Height := ScaleY(13);
end;

{ RadioButton32 }
RadioButton32 := TNewRadioButton.Create(WizardForm);
with RadioButton32 do
begin
Name := 'RadioButton32';
Parent := WizardForm.SelectDirPage;
Left := ScaleX(24);
Top := ScaleY(136);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := ExpandConstant('{cm:RadioButton32}');
end;

{ RadioButton64 }
RadioButton64 := TNewRadioButton.Create(WizardForm);
with RadioButton64 do
begin
Name := 'RadioButton64';
Parent := WizardForm.SelectDirPage;
Left := ScaleX(24);
Top := ScaleY(160);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := ExpandConstant('{cm:RadioButton64}');
end;

RadioButton32.TabOrder := 5;
RadioButton64.TabOrder := 6;
end;


procedure InitializeWizard();
begin
RedesignWizardForm;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:31, 10-08-2011 | #2687


Пользователь


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

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


to vint56, благодарю
to all
Цитата Imitri7:
требуется изменить цвет прогрессбара + чтобы обязательно показывались проценты
есть вот такая нараблтка
PHP код: Выделить весь код

function SetWindowTheme(hwndHWNDpszSubAppNamepcharpszSubIdListpchar): Longintexternal 'SetWindowTheme@uxtheme.dll stdcall delayload';

Procedure InitializeWizard();
begin
try
SetWindowTheme
(wizardform.progressgauge.Handle' '' ');
except
end
end
;

procedure CurPageChanged(CurPageIDInteger);
begin
if CurPageID=wpSelectDir then
SendMessage
(wizardform.progressgauge.Handle, $04090, $000977FF); 
за ранее благодарю

Последний раз редактировалось Imitri7, 11-08-2011 в 11:11.


Отправлено: 09:15, 11-08-2011 | #2688


Старожил


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

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


Imitri7, как та так
читать дальше »
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Files]
Source: compiler:innocallback.dll; Flags: dontcopy
Source: C:\Windows\Help\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs external

[code]
type
TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);

var
PercentsTimer: LongWord;
PercentsLabel: TLabel;

function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';

function SetWindowTheme(hwnd: HWND; pszSubAppName: pchar; pszSubIdList: pchar): Longint; external 'SetWindowTheme@uxtheme.dll stdcall delayload';

Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.1n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

Procedure PercentsProc(h, msg, idevent, dwTime: Longword);
Begin
with WizardForm.ProgressGauge do
begin
PercentsLabel.Caption:= 'Выполнено ' + NumToStr((Position-Min)/((Max - Min)/100)) + ' %';
end;
End;

procedure DeinitializeSetup();
begin
KillTimer(0, PercentsTimer);
end;

Procedure procbar();
begin
try
SetWindowTheme(wizardform.progressgauge.Handle, ' ', ' ');
except
end
end;

procedure InitializeWizard();
begin
procbar();
PercentsLabel:= TLabel.Create(WizardForm);
with PercentsLabel do
begin
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(40);
Width:= WizardForm.StatusLabel.Width;
Height:= WizardForm.StatusLabel.Height;
AutoSize:= False;
Transparent := True;
Width := ScaleX(200);
Height := ScaleY(100);
Font.Style:= [fsBold];
Left := ScaleX(100);
Font.Size:= 13;
Font.Name:= 'Georgia';
Font.Color:= ClBlack;
Parent:= WizardForm.InstallingPage;
end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
SendMessage(wizardform.progressgauge.Handle, $0409, 0, clblue); // здесь меняеш цвет процесбара по умолчанию стоит голубой clblue
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
PercentsTimer:= SetTimer(0, 0, 500, WrapTimerProc(@PercentsProc, 4));
end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:19, 11-08-2011 | #2689


Ветеран


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

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


Как сделать чтобы в Isexec когда указываешь папку с архивом и делаешь установку чтобы файлов setup-1a.bin и так далее не было а просто твой созданный архив и файл setup.exe?

Отправлено: 18:12, 11-08-2011 | #2690



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход