Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [44] 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

Gnom_aka_Lexander
21-02-2012, 11:58
Тут (http://isskin.codejock.com/) есть все, что для этого нужно - длл, примеры кода, а так-же невероятно подробная и удивительно понятная справка по работе со скинами, прочтение которой снимает все вопросы разом. В гугле ищется за пять секунд.

YURSHAT
21-02-2012, 15:33
StarClock, а хорошие люди и перевод сделали http://pastehtml.com/view/bj5zbh42r.html :)

alert30
21-02-2012, 16:17
А так же на ru-board, от 1 части, и до 14 части. »
Spell1999, короче говоря, в Руборде тоже очень много скриптов, как и здесь.

Johny777
21-02-2012, 19:02
скажите пожалуйста
вот такие чекбокс и радиокнопка у меня при использовании скина
http://rghost.ru/36636582/image.png (http://rghost.ru/36636582.view)
хотел сделать такими (это родные. У меня они появляются, если сам создаю чекбокс)
http://rghost.ru/36636611/image.png (http://rghost.ru/36636611.view)
вот наткнулся на такое стандартное решение
ComponentsListBtnImageFile=btnimage.bmp
и наложил вот такие текстуры. (или правильнее сказать глифы)
http://rghost.ru/36636636/image.png (http://rghost.ru/36636636.view)
получил не то что нужно
вот
http://rghost.ru/36636667/image.png (http://rghost.ru/36636667.view)
вопрос почему (неужели из-за скина, тк без него всё в порядке?) и как можно это исправить.
Если нельзя так (вот так ComponentsListBtnImageFile=btnimage.bmp), то как сделать по другому.
заранее спасибо за помощь. :)

Gnom_aka_Lexander
21-02-2012, 20:07
неужели из-за скина »
Мзза него, родимого. вообще криво дело с этими скинами. Просто в скине для листбоксов другой цвет указан транспарентным. Либо вообще пнг использованы. Ковыряй скин. кстати, чекбоксы (не все, правда) ты можешь и в скине затекстурировать. Открывай скин в скинбилдере - ссылка в моем посте выше, и ковыряй, ищи косяк.

Spell1999
21-02-2012, 22:30
нет вы меня не так поняли. я уже себе сделал скрипт но хочеца чевото нового. и я ищю готовые скрипты всякие разные. тоесть из нескольких скриптов собираю 1 хороший.

BlackPhoenix28
21-02-2012, 23:17
Добрый день ! Подскажите пожалуйста. Как сделать что-бы сразу при запуске инсталятора выводилась фоновая картинка на полный экран а потом уже при установке шло слайд шоу ? И как сделать что-бы плеер был все время виден ? Если можно то поподробнее вплоть до того что и после какой строки вставлять и чего где править.


[Setup]
SourceDir=.
OutputDir=Setup
AppName=The Book of Unwritten Tales
AppVerName=The Book of Unwritten Tales
AppVersion=The Book of Unwritten Tales
AppPublisher=HMN Interactive
AppCopyright=HMN Interactive
DefaultDirName={pf}\The Book of Unwritten Tales
DefaultGroupName=The Book of Unwritten Tales
AllowNoIcons=yes
InfoBeforeFile=D:\Картинки\Лицензия.rtf
OutputBaseFilename=setup
WizardImageFile=D:\Картинки\InstallLeft.bmp
WizardSmallImageFile=D:\Картинки\InstallCorner.bmp
SetupIconFile=C:\Program Files (x86)\The Book of Unwritten Tales\Book.ico
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=lzma/ultra
DiskSpanning=yes
DiskSliceSize=524288000
SlicesPerDisk=1

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

[Files]
Source: "D:\Картинки\1.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\10.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\2.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\3.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\4.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\5.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\6.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\7.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\8.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "D:\Картинки\9.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "bass.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\20-abspann-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\08-erzmagier_alastair-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\10-das_lied_vom_tod-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\12-unknown-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\15-unknown-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "T:\The Book of Unwritten Tales\Soundtarck\OST-The_Book_Of_Unwritten_Tales-READNFO-2011-I_KnoW\16-ivo-ik.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: C:\Users\SASHA\Desktop\Game.reg; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

Source: "C:\Program Files (x86)\The Book of Unwritten Tales\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Icons]
Name: "{group}\The Book of Unwritten Tales"; Filename: "{app}\bout.exe"; WorkingDir: "{app}";
Name: "{userdesktop}\The Book of Unwritten Tales"; Filename: "{app}\bout.exe"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\{cm:UninstallProgram,The Book of Unwritten Tales}"; Filename: "{uninstallexe}"

[Run]
Description: "{cm:LaunchProgram, The Book of Unwritten Tales}"; Filename: "{app}\bout.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent unchecked
Filename: {win}\regedit.exe; Parameters: /s {tmp}\Game.reg; StatusMsg: "Вносим изменения в реестр ..."; Flags: waituntilterminated runasoriginaluser

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[Code]
const
Indent=25;

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boo lean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssAddImage(FileName:PAnsiChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure ShowMP3Panel(hMainFrm:HWND;StartVolume:integer;DefMP3Dir,BASSDir,MLabel:PAnsiChar;IsShowMP3Info,IsBk gFrmVisible:boolean;ShowTimeMP3Info:integer;dBottom:integer);external 'ShowMP3Panel@files:isgsg.dll stdcall';
procedure KillMP3Panel;external 'KillMP3Panel@files:isgsg.dll stdcall';

function InitializeSetup:boolean;
begin
ExtractTemporaryFile('Game.reg');
ExtractTemporaryFile('20-abspann-ik.mp3');
ExtractTemporaryFile('08-erzmagier_alastair-ik.mp3');
ExtractTemporaryFile('10-das_lied_vom_tod-ik.mp3');
ExtractTemporaryFile('12-unknown-ik.mp3');
ExtractTemporaryFile('15-unknown-ik.mp3');
ExtractTemporaryFile('16-ivo-ik.mp3');
ExtractTemporaryFile('bass.dll');
Result:=True;
end;

procedure InitializeWizard;
begin
ShowMP3Panel(WizardForm.Handle,80,ExpandConstant('{tmp}'),ExpandConstant('{tmp}'),'Repack by BlackPhoenix',True,True,7000,Indent);
ssInitialize(GetWindowLong(MainForm.Handle,-8),10,False,1,$FF000000);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
ExtractTemporaryFile('1.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\1.jpg');
ExtractTemporaryFile('2.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\2.jpg');
ExtractTemporaryFile('3.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\3.jpg');
ExtractTemporaryFile('4.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\4.jpg');
ExtractTemporaryFile('5.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\5.jpg');
ExtractTemporaryFile('6.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\6.jpg');
ExtractTemporaryFile('7.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\7.jpg');
ExtractTemporaryFile('8.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\8.jpg');
ExtractTemporaryFile('9.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\9.jpg');
ExtractTemporaryFile('10.jpg');
ssAddImage(ExpandConstant('{tmp}')+'\10.jpg');
ssStartShow;
end;
if CurStep=ssPostInstall then ssStopShow;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(GetSystemMetrics(0)-WizardForm.Width-Indent);
WizardForm.Top:=ScaleY(GetSystemMetrics(1)-WizardForm.Height-Indent);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end;
if (CurPageID=wpFinished) or (CurPageID=wpInfoAfter) then begin
if WizardForm.Width<>502 then begin
WizardForm.Visible:=False;
WizardForm.Width:=ScaleX(502);
WizardForm.Height:=ScaleY(392);
WizardForm.Left:=(GetSystemMetrics(0)-WizardForm.Width) div 2;
WizardForm.Top:=(GetSystemMetrics(1)-WizardForm.Height) div 2;
WizardForm.MainPanel.Visible:=True;
WizardForm.Bevel1.Visible:=True;
WizardForm.InnerNotebook.Left:=ScaleX(40);
WizardForm.InnerNotebook.Top:=ScaleY(72);
WizardForm.InnerNotebook.Width:=ScaleX(417);
WizardForm.Visible:=True;
end;
end;
end;

procedure DeinitializeSetup;
begin
KillMP3Panel;
ssDeInitialize;
end;


P.S. Подскажите пожалуйста начинающему скриптописцу.

Johny777
22-02-2012, 00:20
isgsg.dll »
у тебя в скрипте
похоже ты сделал свой скрипт прораммой inno setup game script generator созданной South с форума цсмании
там всё, то ты просишь реализовано
покопайся в программе
например на странице "Фоновые рисунки" сверху указываешь свой фоновый рисунок
снизу добавляешь картинки для слайдшоу

на странице "фоновая музыка" есть чекбокс "показать плеер"

BlackPhoenix28
22-02-2012, 01:06
Johny777,

Спасибо с фоновой картинкой уже разобрался. А вот с плеером как быть. Чекбокс то есть, но плеер со времен пропадает. А мне надо что-бы он все время отображался. Ну то есть что-бы отображался только плеер а название песни пропадало. Там есть задержка именно для окошка с названием песни а для плеера такого не нашел.

Devils Night
22-02-2012, 01:42
и я ищю готовые скрипты всякие разные. тоесть из нескольких скриптов собираю 1 хороший. »Ну вообще не думаю что есть сайт где лежат все скрипты, хотя пусть если даже где и есть то грубо говоря все скрипты ворованные, т.е залиты без согласования авторов, так что это придётся спрашивать лично у авторов, если они дадут добро, то поделятся, а нет, то руборд, OSZone, и поиск только поможет.

Johny777
22-02-2012, 02:55
BlackPhoenix28,
попробуй выявить строки в коде отвечающие за твой нынешний плеер и потом интегрируй это http://rghost.ru/36644901
получишь вот это (оно?)

[url]http://rghost.ru/36644908/image.png (http://rghost.ru/36644908.view)
http://rghost.ru/36644912/image.png (http://rghost.ru/36644912.view)

BlackPhoenix28
22-02-2012, 03:36
Johny777,

Нет, не то. Я хочу что-бы тот плеер который у меня стоит был виден все время. Просто он с перемоткой и паузой + можно несколько файлов проигрывать. Да и вообще он мне подходит еще и потому что у меня же во время установки окошко с прогрессом в правом нижнем углу, весь экран открыт и видны фоновые картинки а мне именно это и нужно. Поэтому и не хочется менять плеер.

R.i.m.s.k.y.
22-02-2012, 10:51
Подскажите, пожалуйста, как правильно занести в ключ реестр без Code путь, хранящийся в другом ключе
делаю так
[Registry]
...ValueName: Path; ValueData: {reg:HKLM\SOFTWARE\Classes\CLSID\{{EE30215D-164F-4A92-A4EB-9D4C13390F9F}\InprocServer32,}...
и получаю ошибку
Invalid registry constant "reg:HKLM\SOFTWARE\Classes\CLSID\{{EE30215D-164F-4A92-A4EB-9D4C13390F9F"

Где, в какой жеппе вообще расписан по человечьи синтаксис инно?


UPD: решение
..ValueName: Path; ValueData: {reg:HKLM\SOFTWARE\Classes\CLSID\{{EE30215D-164F-4A92-A4EB-9D4C13390F9F%7d\InprocServer32,};...

И кстати мой прошлый вопрос: "как закомментировать большой кусок текста в секции кода и реестра непострочно" остался без ответа, точнее ответ был неверным
Я конечно извернулся: в акелпаде меняю "конец строки" на "конец строки//" но это изврат

Johny777
22-02-2012, 19:30
можно мне маленький пример?
как привязать чекбокс к компоненту
например делаю простой пример

[Setup]
AppName=My Program
AppVerName=My Program v 1.7
DefaultDirName={pf}\My Program
OutputDir=.

[Components]
Name: g0; Description: 11111111; Check: make

[ъCode]
var
X: TCheckBox;

function make: Boolean;
begin
Result:=X.Checked;
end;

procedure InitializeWizard();
begin
X := TCheckBox.Create(WizardForm);
with X do
begin
Parent := WizardForm.SelectComponentsPage;
Caption := 'Yes';
Left := ScaleX(0);
Top := ScaleY(70);;
Width := ScaleX(300);
Height := ScaleY(15);
TabOrder := 0;
Checked := False;
end;
end;


вылетает с ошибкой
---------------------------
Ошибка запуска
---------------------------
Строка 16:

Could not call proc.
---------------------------
ОК
---------------------------

Gnom_aka_Lexander
22-02-2012, 19:44
Компонентами нельзя управлять из кода. они, в отличии от задач, создаются на запуске инсталла. соответсвенно и ошибка - ты пытаешься управлять объектом, до его создания. вот с задачами такое прокатит.

R.i.m.s.k.y.
22-02-2012, 20:47
Компонентами нельзя управлять из кода »
эээ коллега, а как же я тогда делаю вот так?
procedure InitializeWizard();
...
WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf(ExpandConstant('{#SVP}'))]:=True;
...
Да и прочие плюшки типа контроля за галочками в зависимости от остальных галочек?
И с задачами катит
Главное вертеть компонентами и задачами из кода после InitializeSetup

Johny777
22-02-2012, 21:06
Да и прочие плюшки типа контроля за галочками в зависимости от остальных галочек?
И с задачами катит »
R.i.m.s.k.y.,
можно пожалуйста более полный пример на основе моего предыдущего поста?
дальше по аналогии сделаю
у меня как раз зависимости задачи-компоненты и полностью убирать все компоненты и на странице через Check делать кучу галок с переключателями в секции файлов не самое весёлое занятие

Gnom_aka_Lexander
22-02-2012, 21:12
эээ коллега, а как же я тогда делаю вот так? »
Это не то. [Components] Name: g0; Description: 11111111; Check: make »
Как по твоему это называется? Инсталл, по крайней мере, думает, что это условие создания компонента, в зависимости от условия. а таковой возможности нет - компоненты при запуске инсталла уже созданы. и можно ими именно управлять. А не управлять возможностью их созданием. Что и пытался человек сделать. Я просто неточно выразился.

Serega
22-02-2012, 22:47
И кстати мой прошлый вопрос: "как закомментировать большой кусок текста в секции кода и реестра непострочно" остался без ответа, точнее ответ был неверным »
Лександер, насколько помню вам отвечал, много строчный текст комментируется так: { большой текст, много строк }

Инсталл, по крайней мере, думает, что это условие создания компонента, в зависимости от условия. а таковой возможности нет »
Не совсем так, допустим простой пример:

[Components]
Name: test; Description: ISetup.chm; Check: make

[Code]
function make: Boolean;
begin
Result := FileExists('{#CompilerPath}ISetup.chm');
end;

Если поставить "Check: not make", то компонент не будет создан... Ошибка возникает именно из-за попытки обращения к контролу, который ещё не создан.

Johny777
23-02-2012, 02:29
подскажите пожалуйста
как сдетать TNewEdit в котором будут вводиться параметры запуска ярлыка
(как в Steam "параметры запуска")
вот строка из моего скрипта
Name: {group}\Half-Life 2; Filename: {app}\common\half-life 2\hl2.exe; WorkingDir: {app}\common\half-life 2; Parameters: -steam -game hl2 -appid 220; Components: g0\c1; IconFilename: {app}\common\half-life 2\hl2.ico
-steam -game hl2 -appid 220 менять нельзя, но дописать можно очень многое
например -console +fps_max 60 -dev
может быть вот так
дальше не знаю
Name:.......Parameters: -steam -game hl2 -appid 220 -{code:функция};.........
похожие реализации уже были при вводе ника в rev.ini




© OSzone.net 2001-2012