Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
Наведя курсор на любой из компонентов, в правом окне, появляется описание этого компонента »
[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
english.ComponentsName1=My program™
russian.ComponentsName1=Моя программа™
english.ComponentsName1_1=English version
russian.ComponentsName1_1=Английская версия
english.ComponentsName1_2=Russian version
russian.ComponentsName1_2=Русская версия
english.ComponentsName2=Help
russian.ComponentsName2=Помощь
english.ComponentsName2_1=Documentation
russian.ComponentsName2_1=Документация
english.ComponentsName2_2=User manual
russian.ComponentsName2_2=Руководство пользователя
english.ComponentsInfoPanel1=Description
russian.ComponentsInfoPanel1=Описание
english.ComponentsInfoPanel2=Direct the cursor a mouse on component to read his description.
russian.ComponentsInfoPanel2=Наведите курсор мыши на компонент, чтобы прочитать его описание.
english.ComponentsDescription1=Necessarily is fixed
russian.ComponentsDescription1=Устанавливается обязательно
english.ComponentsDescription2=Install english version
russian.ComponentsDescription2=Установить английскую версию
english.ComponentsDescription3=Install russian version
russian.ComponentsDescription3=Установить русскую версию
english.ComponentsDescription4=Help
russian.ComponentsDescription4=Помощь
english.ComponentsDescription5=Read documentation
russian.ComponentsDescription5=Прочитать документацию
english.ComponentsDescription6=Read user manual
russian.ComponentsDescription6=Прочитать руководство пользователя
[Components]
Name: main; Description: {cm:ComponentsName1}; Types: full custom; Flags: fixed
Name: main\english; Description: {cm:ComponentsName1_1}; Flags: exclusive
Name: main\russian; Description: {cm:ComponentsName1_2}; Flags: exclusive
Name: help; Description: {cm:ComponentsName2}; Types: full custom
Name: help\documentation; Description: {cm:ComponentsName2_1}; Types: full custom
Name: help\manual; Description: {cm:ComponentsName2_2}; Types: full custom
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: main
Source: "MyProg.chm"; DestDir: "{app}"; Components: help
Source: "descctrl.dll"; Flags: dontcopy
[Messages]
ComponentsDiskSpaceMBLabel=
[Code]
function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;
procedure DeinitializeSetup();
begin
disabledesc();
end;
procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible:=False;
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Width := ScaleX(417);
InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(190);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(38);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := ExpandConstant('{cm:ComponentsInfoPanel1}');
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;
Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.Caption := ExpandConstant('{cm:ComponentsInfoPanel2}');
Info.WordWrap := true;
enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
ExpandConstant('{cm:ComponentsDescription1};')+
ExpandConstant('{cm:ComponentsDescription2};')+
ExpandConstant('{cm:ComponentsDescription3};')+
ExpandConstant('{cm:ComponentsDescription4};')+
ExpandConstant('{cm:ComponentsDescription5};')+
ExpandConstant('{cm:ComponentsDescription6};')
);
end;
и это есть в справке. иногда полезно туда заглядывать
Devils Night
29-10-2011, 09:32
Наведя курсор на любой из компонентов, в правом окне, появляется описание этого компонента. »
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Components]
Name: "program"; Description: "Игра"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Помощь"; Types: full
Name: "Text"; Description: "Tехт"; Types: full
Name: "Text\en"; Description: "Aнглийский"; Flags: exclusive
Name: "Text\de"; Description: "Немецкий"; Flags: exclusive
Name: "Text\cn"; Description: "Китайский"; Flags: exclusive
Name: "Text\ru"; Description: "Русский"; Flags: exclusive
Name: "Voice"; Description: "Озвучка"; Types: full
Name: "Voice\en"; Description: "Английская"; Flags: checkablealone
Name: "Voice\de"; Description: "Немецкая"; Flags: checkablealone
Name: "Voice\ch"; Description: "Китайская"; Flags: checkablealone
Name: "Voice\ru"; Description: "Русская"; Flags: checkablealone
Name: "Voice\ru2"; Description: "Русская"; Flags: checkablealone
Name: "Voice\ru3"; Description: "Русская"; Flags: checkablealone
[Files]
Source: compiler:Dll Pack\descctrl.dll; Flags: dontcopy
[ Code]
function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;
procedure DeinitializeSetup();
begin
disabledesc();
end;
procedure InitializeWizard();
begin
WizardForm.TYPESCOMBO.Visible:= false;
WizardForm.ComponentsList.Height := WizardForm.ComponentsList.Height + WizardForm.ComponentsList.Top - WizardForm.TYPESCOMBO.Top;
WizardForm.ComponentsList.Top := WizardForm.TYPESCOMBO.Top;
WizardForm.ComponentsList.Width := ScaleX(200);
InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := WizardForm.ComponentsList.Top;
InfoPanel.Left := ScaleX(216);
InfoPanel.Width := ScaleX(200);
InfoPanel.Height := WizardForm.ComponentsList.Height;
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := 'Информация:';
InfoCaption.Left := ScaleX(224);
InfoCaption.Top := InfoPanel.Top - ScaleY(5);
InfoCaption.Font.Color := clActiveCaption;
Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(188);
Info.Top := ScaleY(12);
Info.Height := WizardForm.ComponentsList.Height - ScaleY(18);
Info.Caption := 'Наведите на компонент, чтобы получить дополнительную информацию';
Info.WordWrap := true;
enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
'Короткое описание игры;'+
'Дополнительная документация, на разных языках;'+
'Техт игры;'+
'Официальный английский текст от EA Games;'+
'Официальный немецкий текст от неизвестного производителя;'+
'Пиратский китайский текст;'+
'Официальный русский текст от софтклаб;'+
'Озвучка игры;'+
'Официальная английская озвучка от EA Games;'+
'Официальная немецкая озвучка от неизвестного производителя;'+
'Пиратская китайская озвучка;'+
'Официальная русская озвучка от софтклаб;'+
'Русская озвучка от 7Wolf;'+
'Русская озвучка от фаргуса;'
);
end; оно самое, в правом окне.
Raf-9600
29-10-2011, 13:38
Собстно есть код для конвертирования OGG, с полноценным прогресс-баром. А ктонить мог бы прикрутить к нему возможность, чтоб прогресс отображался не только в окне инсталлятора, но и на самой иконке инсталлятора, в панели задач (таскбаре)? Речь идет о Win7.
Собстно код:
[C0de]
var
Files: Array of String;
S: String;
n: Integer;
Function StringToArray(Text, Cut: String): array of String; var i, k: Integer;
Begin
SetArrayLength(Result, 0); if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк
Repeat k:= Pos(Cut,Text);
if k = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE
end;
SetArrayLength(Result, GetArrayLength(Result) +1); i:= GetArrayLength(Result) -1;
if k = 0 then
Result[i]:=Text
else begin
Result[i]:= Copy(Text, 1, k -1); Delete(Text, 1, Length(Result[i]) + Length(Cut));
end;
Until Length(Text) * k = 0;
End;
procedure FindFiles(FromDir: String; Mask: String);
var FSR, DSR: TFindRec; FindResult: Boolean;
begin
FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S:= S + AddBackslash(fromDir) + FSR.Name +'|';
end;
FindResult:= FindNext(FSR);
end;
FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR)
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
FindFiles(AddBackSlash(FromDir)+DSR.Name, Mask)
end;
FindResult:= FindNext(DSR);
end;
FindClose(FSR); FindClose(DSR)
end;
procedure RecodeOgg;
var ResultCode: integer; CurFile: String;
begin
FindFiles(ExpandConstant('{app}'), '*.ogg') //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|') //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов
WizardForm.ProgressGauge.Position:=0
for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n]
StringChange(CurFile, AddBackslash(ExpandConstant('{app}')), '')
Exec(ExpandConstant('{app}\oggdec.exe'), '-Q '+AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode) //Для каждого файла запускаем декодер
DeleteFile(Files[n]) //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;
DeleteFile(ExpandConstant('{app}\oggdec.exe'))
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then RecodeOgg;
end;
Raf-9600
29-10-2011, 13:54
И ещё такой вопрос: есть ли у когонить код, реализующий возможность "вручную" передвигать прогресс-бар? Ну тоесть после распаковки файлов, у меня происходит 10 манипуляций с ними. Как сделать чтобы после каждой "манипуляции", полоска прогресс-бара увеличивалась?
P.S.
Нужен не второй прогресс-бар, а чтоб все происходило в стандартном, после распаковки файлов.
Gnom_aka_Lexander
29-10-2011, 20:21
"вручную" передвигать прогресс-бар? »
WizardForm.ProgressGauge.Position:=(тут увеличиваеш позицию после каждого действия).
Пример:
Действие
WizardForm.ProgressGauge.Position:=10;
Действие
WizardForm.ProgressGauge.Position:=20;
Действие
WizardForm.ProgressGauge.Position:=30;
............................
Последняя позиция должна равнятся максимальному значению прогрессбара:
WizardForm.ProgressGauge.Position:=WizardForm.ProgressGauge.Max;
Raf-9600
30-10-2011, 01:19
Лександер, А как его "задействовать"?
Когда указываю так, то ничего не работает. Прогресс-бар тупо сбрасывается "на ноль", и все.
[Run]
Filename: "{app}\binkmix.exe"; StatusMsg: "MyProgress1"; AfterInstall: MyProgress1;
Filename: "{app}\binkmix.exe"; StatusMsg: "MyProgress2"; AfterInstall: MyProgress2;
Filename: "{app}\binkmix.exe"; StatusMsg: "MyProgress3"; AfterInstall: MyProgress3;
Filename: "{app}\binkmix.exe"; StatusMsg: "MyProgress4"; AfterInstall: MyProgress4;
[C0de]
procedure MyProgress1;
begin
WizardForm.ProgressGauge.Position:=10
end;
procedure MyProgress2;
begin
WizardForm.ProgressGauge.Position:=20
end;
procedure MyProgress3;
begin
WizardForm.ProgressGauge.Position:=30
end;
procedure MyProgress4;
begin
WizardForm.ProgressGauge.Position:=40
end;
Raf-9600, а ты точно тот прогресс бар указываешь? Всмысле у тебя не кастомный он?
Всем добрый день!У меня такая проблема:
Я задаю в скрипте isdone я задаю для распаковки precomp'a файл cas_01.cas а он распаковывает data1 без расширения
Вот скрипт, если че можете кто нибудь поправить http://rghost.ru/27751441
Devils0411
30-10-2011, 14:49
Devils0411, код не распаковывается а дизассемблируется, лежит там же
Так проблема в том, что код неполный. При сборки обратно (При этом никакие изменения в iss файл не вносились) выдает кучу ошибок. Вот и хотелось бы увидеть полный код этого файла.
Да и кто-то писал на форуме, что при дизассемблировании установочного файла на основе Inno, часть кода теряется.
народ а кто поможет прикрутить эти компоненты, к этому скрипту http://rghost.ru/27770621
[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
english.ComponentsName1=My program™
russian.ComponentsName1=Моя программа™
english.ComponentsName1_1=English version
russian.ComponentsName1_1=Английская версия
english.ComponentsName1_2=Russian version
russian.ComponentsName1_2=Русская версия
english.ComponentsName2=Help
russian.ComponentsName2=Помощь
english.ComponentsName2_1=Documentation
russian.ComponentsName2_1=Документация
english.ComponentsName2_2=User manual
russian.ComponentsName2_2=Руководство пользователя
english.ComponentsInfoPanel1=Description
russian.ComponentsInfoPanel1=Описание
english.ComponentsInfoPanel2=Direct the cursor a mouse on component to read his description.
russian.ComponentsInfoPanel2=Наведите курсор мыши на компонент, чтобы прочитать его описание.
english.ComponentsDescription1=Necessarily is fixed
russian.ComponentsDescription1=Устанавливается обязательно
english.ComponentsDescription2=Install english version
russian.ComponentsDescription2=Установить английскую версию
english.ComponentsDescription3=Install russian version
russian.ComponentsDescription3=Установить русскую версию
english.ComponentsDescription4=Help
russian.ComponentsDescription4=Помощь
english.ComponentsDescription5=Read documentation
russian.ComponentsDescription5=Прочитать документацию
english.ComponentsDescription6=Read user manual
russian.ComponentsDescription6=Прочитать руководство пользователя
[Components]
Name: main; Description: {cm:ComponentsName1}; Types: full custom; Flags: fixed
Name: main\english; Description: {cm:ComponentsName1_1}; Flags: exclusive
Name: main\russian; Description: {cm:ComponentsName1_2}; Flags: exclusive
Name: help; Description: {cm:ComponentsName2}; Types: full custom
Name: help\documentation; Description: {cm:ComponentsName2_1}; Types: full custom
Name: help\manual; Description: {cm:ComponentsName2_2}; Types: full custom
[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: main
Source: "MyProg.chm"; DestDir: "{app}"; Components: help
Source: "descctrl.dll"; Flags: dontcopy
[Messages]
ComponentsDiskSpaceMBLabel=
function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';
var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;
procedure DeinitializeSetup();
begin
disabledesc();
end;
procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible:=False;
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Width := ScaleX(417);
InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(190);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(38);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := ExpandConstant('{cm:ComponentsInfoPanel1}');
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;
Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.Caption := ExpandConstant('{cm:ComponentsInfoPanel2}');
Info.WordWrap := true;
enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
ExpandConstant('{cm:ComponentsDescription1};')+
ExpandConstant('{cm:ComponentsDescription2};')+
ExpandConstant('{cm:ComponentsDescription3};')+
ExpandConstant('{cm:ComponentsDescription4};')+
ExpandConstant('{cm:ComponentsDescription5};')+
ExpandConstant('{cm:ComponentsDescription6};')
);
end;
И что нужно прописать в скрипте чтоб когда запускался setup.exe выводилось сообщение о том что такая программа уже есть и предлагалось удалить программу?
LinkOFF, думаем головой и лезем в справку от Krinkels.
LinkOFF, думаем головой и лезем в справку от Krinkels. »
я уже перепробовал все, уже 2 часа сижу и у меня из файла data1.pcf распаковывается файл data1(без расширения), а должен cas_01.cas
insombia
30-10-2011, 16:27
LinkOFF значит ты папку запаковал а не сам файл
LinkOFF значит ты папку запаковал а не сам файл »
не я чисто файл паковал
insombia, можешь скрипт посмотреть http://rghost.ru/27751441
insombia
30-10-2011, 16:32
не я чисто файл паковал »
может в скрипте что-то не так указал?может указал чтобы в папку распаковалось?
valyok666
30-10-2011, 16:36
LinkOFF,
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data1.pcf'), ExpandConstant('{app}\cas_01.cas'), true
insombia
30-10-2011, 16:42
valyok666 у него так и указано там просто у него указано даже cas_01.cas и так далее которое кажись указывать не нужно
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}\Data'), false, '', '', ExpandConstant('{app}'), PCFonFLY) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data1.pcf'), ExpandConstant('{app}\Data\cas_01.cas'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data2.pcf'), ExpandConstant('{app}\Data\cas_02.cas'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data3.pcf'), ExpandConstant('{app}\Data\cas_03.cas'), true ) then break;
LinkOFF попробуй указать так
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data1.pcf'), ExpandConstant('{app}\Data), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data2.pcf'), ExpandConstant('{app}\Data'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\Data\data3.pcf'), ExpandConstant('{app}\Data'), true ) then break;
я создавал precomp'ом 0.4.2 а в isdone 0.4. precomp 0.4 сможет распаковать архив сделанный 0.4.2?
valyok666
30-10-2011, 16:45
insombia, так он хочет выходной файл без папки или с папкой?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.