Войти

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


Страниц : 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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 [137] 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

avmaksimov
18-08-2011, 07:59
Все, что я нашел пока, это то, что при копировании какого-либо файла в обработчике Check вызвать "SendMessage(WizardForm.Handle, $0010{WM_CLOSE}, 0, 0);"... перед этим поставив следующим образом переменные обработчика:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Cancel := True;
Confirm := False;
end;

Вариант, конечно, но не такой, какого хотелось бы достичь... Долез даже до исходников Inno, но понял, что там вся архитектура так вроде построена, что после PostInstall, где я и использую код уже ничего не сделаешь...

Буду рад ошибиться. Кто согласен, что это было бы полезно, присоединяйтесь: http://innosetup.uservoice.com/forums/33177-inno-setup-feature-request/suggestions/2162103-function-in-pascalscript-to-rollback-changes?ref=title

Gugle
18-08-2011, 10:34
El Sanchez, R.i.m.s.k.y., спасибо большое. Пошел разбираться.

R.i.m.s.k.y.
18-08-2011, 10:39
Пошел разбираться. »
c таким ником вообще вопросов быть не должно! только ответы! :tongue:

VASYAKRN
18-08-2011, 11:47
http://inno.at.ua/TMP/12.7z
сделайте readymemo прозрачним, без рамочки

Добавлено:
http://inno.at.ua/TMP/Fenixx_Dead_Spase_2_ISdone0.6.7z
перемистите isdone c sspostinstall na ssinstall

Добавлено:
http://inno.at.ua/TMP/undercover_bratherhood_lite.7z
вставте workspace.png i statuspanel.png на все станице и 1.png на все странице кроме первой и последней через ботву. Файли в архиве

valyok666
18-08-2011, 12:11
VASYAKRN, а самому что не сделать?

VASYAKRN
18-08-2011, 12:28
Valyok666
пробивал никак

valyok666
18-08-2011, 12:30
так гугл и поиск на что?

VASYAKRN
18-08-2011, 12:57
Все равно нету

Raf-9600
18-08-2011, 14:25
Ктонить подскажет скрипт, чтоб при распаковке определенного файла, ингалятор, над прогресс-баром писал не "Распаковка файлов", а допустим "Распаковка музыки".
У меня когда-то был такой, кажысь через AferInstal работал, но я его потерял =\

P.S.
Ещё интересует, если применить такой скрипт на выполнение огромного количества мелких файлов (распаковку .ogg), то насколько существенно это замедлит установку?

R.i.m.s.k.y.
18-08-2011, 14:26
Raf-9600,
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;

замедлит несильно

Raf-9600
18-08-2011, 15:23
R.i.m.s.k.y., А можно по подробнее? Я просто не кодер, смыслю мало чего. Интуиция подсказывает что либо у Вас код не полный, либо возле файла к которому это приценяться, нужно что-то дописать :)

R.i.m.s.k.y.
18-08-2011, 15:29
Raf-9600, тут распаковка и этот самый ChangeCaption, думаю разберешься что к чему, тут просто как моя жисть :)
вся соль инно - в коде, и если не кодер может опробовать что-то попроще?
[Files]
Source: Folder1; DestDir: {app}; BeforeInstall: ChangeCaption('Установка первой папки'); Flags: ignoreversion recursesubdirs createallsubdirs uninsrestartdelete setntfscompression restartreplace
Source: unrar.exe; Destdir: {tmp}; BeforeInstall: ChangeCaption('Копирование архива');
Source: rar.rar; Destdir: {tmp}; BeforeInstall: ChangeCaption('Копирование архива'); AfterInstall: Unrar(ExpandConstant('{app}\2'));
Source: Folder2; DestDir: {app}; BeforeInstall: ChangeCaption('Установка второй папки'); Flags: ignoreversion recursesubdirs createallsubdirs uninsrestartdelete setntfscompression restartreplace

[_Code]
procedure ChangeCaption(str: string);
begin
WizardForm.StatusLabel.Caption:= str;
end;

procedure Unrar (path : string);
var res : integer;
begin
ChangeCaption('Распаковка архива');
Exec(ExpandConstant('{tmp}\unrar.exe'), ' x ' + ExpandConstant('{tmp}\rar.rar') + ' ' + path, ExpandConstant('{tmp}'),SW_HIDE,ewWaitUntilTerminated,res);
end;

insombia
18-08-2011, 16:03
Как сделать чтобы не было Setup-1a.bin а просто Setup-1.bin?

Imitri7
18-08-2011, 16:10
insombia, переименовать в нужном месте в скрипте

insombia
18-08-2011, 16:22
Imitri7 и где именно?

Raf-9600
18-08-2011, 16:34
думаю разберешься что к чему, тут просто как моя жисть »
Действительно. :)
Благодарю за код.

вся соль инно - в коде, и если не кодер может опробовать что-то попроще? »
Дык я собстно уже нашел пару скриптов, которые реализуют все красивости и функционал, что мне нужен. И благодаря Вам, остался лишь небольшой штрих, чтобы довести их до совершенства :)
Собстно мне нужно чтобы кто-то подсказал код, скрывающий BeveledLabel на странице установки (той, которая с прогресс-баром).

Imitri7
18-08-2011, 16:47
insombia, ctrl+H и в первую строку пишем Setup-1a.bin а во вторую Setup-1.bin жмем заменить все

to all
[Files]
Source: DirBitmap.bmp; DestDir: {tmp}; Flags: dontcopy
Source: DirBitmap2.bmp; DestDir: {tmp}; Flags: dontcopy

[CustomMessages]
ru.Enter=Укажите путь до вашего Steam профиля:

[code]
Var
Label0, Label1, Label2: TLabel;
NewEdit1, NewEdit2: TNewEdit;
TestSystemButton: TNewButton;
BitmapImage1: TBitmapImage;

procedure InitializeWizard();
begin
WizardForm.DirBrowseButton.Top := ScaleY(44);
WizardForm.DirEdit.Top := ScaleY(44);

WizardForm.SelectDirBrowseLabel.Top := ScaleY(150);

begin
ExtractTemporaryFile('DirBitmap.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\DirBitmap.bmp'));
WizardForm.SelectDirBitmapImage.Width:= 32
WizardForm.SelectDirBitmapImage.Height:= 32
WizardForm.SelectDirBitmapImage.Top:= WizardForm.SelectDirBitmapImage.Top
WizardForm.SelectDirBitmapImage.Parent := WizardForm.SelectDirPage;

BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Name := 'BitmapImage1';
Parent := WizardForm.SelectDirPage;
Left := WizardForm.SelectGroupBitmapImage.Left;
Top := WizardForm.SelectGroupBitmapImage.Top + ScaleY(30) + ScaleY(44);
Width := ScaleX(32);
Height := ScaleY(32);
ExtractTemporaryFile('DirBitmap2.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\DirBitmap2.bmp'));
end;

//ExtractTemporaryFile('DirBitmap2.bmp');
//WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\DirBitmap2.bmp'));
//WizardForm.SelectGroupBitmapImage.Width:= 32
//WizardForm.SelectGroupBitmapImage.Height:= 32
//WizardForm.SelectGroupBitmapImage.Top:= WizardForm.SelectGroupBitmapImage.Top + ScaleY(30) + ScaleY(44);
//WizardForm.SelectGroupBitmapImage.Parent := WizardForm.SelectDirPage;
end;

with WizardForm do begin
Label0 := TLabel.Create(WizardForm);
with Label0 do begin
Name := 'Label0';
Parent := WizardForm.SelectDirPage;
Caption := ExpandConstant('{cm:Enter}');
Transparent := False;
Left := WizardForm.SelectStartMenuFolderLabel.Left
Top := WizardForm.SelectStartMenuFolderLabel.Top + ScaleY(30) + ScaleY(44);
Height := ScaleY(20);
//AutoSize := true;
end;
NewEdit1 := TNewEdit.Create(WizardForm);
with NewEdit1 do begin
Name := 'NewEdit1';
Parent := WizardForm.SelectDirPage;
Top := WizardForm.DirEdit.Top + ScaleY(30) + ScaleY(44);
Width := WizardForm.DirEdit.Width
Height := ScaleY(20);
Text := 'D:\Games\Steam\steamapps\steamprofile';
//Color:=clColor;
end;
NewEdit1.TabOrder := 2;
end;
TestSystemButton := TNewButton.Create(WizardForm);
with TestSystemButton do begin
Parent := WizardForm.SelectDirPage;
Caption := 'Обзор...';
Left:= WizardForm.GroupBrowseButton.left
Top:=WizardForm.DirEdit.Top + ScaleY(30) + ScaleY(44);
Width:=WizardForm.GroupBrowseButton.Width
Height:=WizardForm.GroupBrowseButton.Height
//OnClick:=@TestSystemButtonOnClick
end;
end;


задача: надо сделать вторую кнопку рабочей, чтобы можно было выбирать папку и чтобы определенные компоненты туда ставились
буду рад любой помощи :)

El Sanchez
18-08-2011, 18:19
Функция запускается при ssPostInstall, т.е. после копирования всех остальных файлов... Так вот - как сделать так, чтобы в случае ошибки, делать откат изменений, такой же, как и при нажатии "Отмена" на более ранних этапах? »
avmaksimov, какой смысл сначала копировать файлы, а потом проверять их на "что-то тут не так"? Подобного рода проверки надо делать до установки или во время установки. Кстати, что проверяет ваша функция?

Gnom_aka_Lexander
18-08-2011, 18:46
http://inno.at.ua/TMP/12.7z
сделайте readymemo прозрачним, без рамочки »
Легко (http://rghost.ru/18422871). Прозрачный и без рамочки - как просил. Если хочеш - по остальным вопросам помогу. Но в таком-же стиле - чего просиш, то и дам.

VASYAKRN
18-08-2011, 22:32
http://inno.at.ua/TMP/18.08.bmp
gnom
сделай такое readymemo и пажалста помоги с остальним http://inno.at.ua/TMP/12.7z

Добавлено:
http://inno.at.ua/TMP/Fenixx_Dead_Spase_2_ISdone0.6.7z
перемистите isdone c sspostinstall na ssinstall

Добавлено:
http://inno.at.ua/TMP/undercover_bratherhood_lite.7z
вставте workspace.png i statuspanel.png на все станице и 1.png на все странице кроме первой и последней через ботву. Файли в архиве




© OSzone.net 2001-2012