Войти

Показать полную графическую версию : Скрипты 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

Ivan_009
08-04-2012, 00:40
Возможно ли растянуть изображение только на странице установки :search:

Johny777
08-04-2012, 02:49
Ivan_009,
через процедуру CurPageChanged можно делать эксклюзивные настройки или действия для каждой из страниц в отдельности

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then
begin
Image.Left := ScaleX(0);
Image.Top := ScaleY(0);
Image.Width := WizardForm.Width;
Image.Height := ScaleY(?);
///Image.Stretch := True; /// не совсем понял как именно ты хочешь растянуть. Пропорции картинки могут нарушиться
end;
end;

айди страниц

wpWelcome = 1;
wpLicense = 2;
wpPassword = 3;
wpInfoBefore = 4;
wpUserInfo = 5;
wpSelectDir = 6;
wpSelectComponents = 7;
wpSelectProgramGroup = 8;
wpSelectTasks = 9;
wpReady = 10;
wpPreparing = 11;
wpInstalling = 12;
wpInfoAfter = 13;
wpFinished = 14;
MyCustomPageName.ID // своя страница

valyok666
08-04-2012, 14:56
Ivan_009, Вы справку можете почитать????или по каждой мелочи будете писать???

alert30
08-04-2012, 17:15
или по каждой мелочи будете писать??? »
Все равно будет игнорирован, одно и то же для "чайников" не читает книжки про строительстве чего-то.

valyok666
09-04-2012, 01:24
Ivan_009, Подумай

Temyraz@fb
09-04-2012, 15:44
всем привет. у меня вот какой вопрос как через inno setup изменить значение bat ?


begin
if FileExists ( DataDirPage.Edits[0].Text + '\psql.exe' ) then
begin
Result := True;
PathToPsql := DataDirPage.Edits[0].Text;
SaveStringToFile(ExpandConstant('{app}\text.txt'), DataDirPage.Edits[0].Text, True)
end
else
begin
MsgBox(ExpandConstant('{cm:msgNotFoundPsql}'), mbError, MB_OK);
Result := False;
end;
end;
вот это сохраняет значение в файле, но мне нужно чтоб он в bat изменил значение переменой например переменной: SET PGBIN

Johny777
09-04-2012, 16:11
но почему сначала не переименовать бат в текстовый документ. Потом внести значения и снова переименовать в бат?
через
SaveStringToFile »

begin
if FileExists(ExpandConstant('{src}\My.bat')) then
RenameFile(ExpandConstant('{src}\My.bat'), ExpandConstant('{src}\My.txt'))

вносим значения

RenameFile(ExpandConstant('{src}\My.txt'), ExpandConstant('{src}\My.bat'))
end;

или вот пример Genri создания батника для удаления сетапа после установки

procedure SelfDelete();
var
str: string;
BatName: string;
ResultCode: Integer;
begin
BatName:= ExpandConstant('{src}\del_bat.cmd');
str:= str+ '@echo off' + #10#13 +
str+ ':LOOP' + #10#13 +
str+ 'del ' + '"' + ExpandConstant('{srcexe}') + '"' + #10#13 +
str+ 'if exist ' + '"' + ExpandConstant('{srcexe}') + '"' + ' goto LOOP' + #10#13 +
str+ 'del ' + '"' + BatName + '"';
SaveStringToFile(BatName, str, False);
Exec(BatName, '', '', SW_HIDE, ewNoWait, ResultCode);
end;

procedure DeinitializeSetup();
begin
SelfDelete();
end;

опять же через SaveStringToFile

Temyraz@fb
09-04-2012, 16:16
вот начала батника

CLS
ECHO OFF
SET PGBIN="значение"


и как сказать чтоб он в этой поле изменил значение?

R.i.m.s.k.y.
09-04-2012, 16:30
Temyraz@fb, замена: stringChangeEx(строка в которой нужно подменить, чтоменяем, начтоменяем, True)

procedure RePlaceTextinFile(FilePath:string; find:string; replace:string);
var
S: TArrayOfString;
i : Integer;
begin
if not FileExists(FilePath) then begin MsgBox('Файл не найден ' + FilePath, mbError, mb_Ok); Exit;end; // если файла нет, выходим
LoadStringsFromFile(FilePath, S); // загружаем файл
for i:= 0 to GetArrayLength(S)-1 do begin
if (Pos(AnsiUpperCase(find), AnsiUpperCase(S[i])) > 0) then begin
StringChangeEx(S[i], find, replace, True);
end;
end;
SaveStringsToFile(FilePath, S, False); // сохраняем файл
end;
......
RePlaceTextinFile(ExpandConstant('{app}\www.bat'), 'SET PGBIN=', 'SET PGBIN="значение"');
......


переименование файла - RenameFile (староеимя, новоеимя)

sergey3695
09-04-2012, 16:45
если там через библиотеку идёт удаление , то ничем помочь не могу »
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', False);
Какая библиотека????

nik1967
09-04-2012, 18:41
sergey3695, ISDone.dll вообще то.
function Exec2

function Exec2 (FileName, Param: PAnsiChar; Show:boolean):boolean;
запускает приложение, указанное в параметре FileName с параметрами, заданными через пробел в Param и ожидает его завершения. Если приложение успешно запустилось, выполнило все необходимые действия и завершилось, то выходной параметр функции Exec2 устанавливается в true, иначе - false. Это единственная функция, которая не требует перед использованием инициализировать библиотеку (ISDoneInit). Текущий каталог перед запуском устанавливается как папка, в которой находится целевое приложение.
Show – true в этом параметре указывает, что запускаемое приложение будет видимо, false - запускает его в скрытом режиме;


Примеры:
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
запускает файл анинсталла с параметром '/VERYSILENT' в скрытом режиме.

valyok666
09-04-2012, 18:59
nik1967, справку надо читать всегда)без неё как без рук :happy:

Temyraz@fb
10-04-2012, 11:46
у меня вот какая проблема. как правильно написать:
RePlaceTextinFile(ExpandConstant('{app}\www.bat'), 'SET PGBIN=', 'SET PGBIN="значение"');
вместо "значения" чтоб присваивалась значение переменой: {code:SrcDir} и плюс добавлялся путь \base
не могу разобраться в синтаксисе

R.i.m.s.k.y.
10-04-2012, 11:50
Temyraz@fb, если SrcDir - строковая функция, то так
RePlaceTextinFile(ExpandConstant('{app}\www.bat'), 'SET PGBIN=', 'SET PGBIN='+ SrcDir + '\base');

Temyraz@fb
10-04-2012, 12:11
нет, эта директория.
используется она так же как и
[Files]
Source: {src}\files\*; DestDir: {code:SrcDir}\files\; Flags: ignoreversion recursesubdirs createallsubdirs external; Check: make_copy

R.i.m.s.k.y.
10-04-2012, 12:20
Temyraz@fb, мда, справку инно по Constants ты не читал
RePlaceTextinFile(ExpandConstant('{app}\www.bat'), 'SET PGBIN=', 'SET PGBIN=' + ExpandConstant('{src}') + '\base');

sergey3695
10-04-2012, 14:40
nik1967, я это знаю. ты до этого читал что я писал? ладно забейте.

Johny777
10-04-2012, 14:43
ладно забейте. »
только и остаётся к сожалению, тк чтобы добавить функцию какую ты хотел нужно связаться с автором библиотеки. Именно это я тебе советую. Его не трудно найти
или используй родной деинсталл, если это возможно
[UninstallDelete]
Type: filesandordirs; Name: {app}

R.i.m.s.k.y.
10-04-2012, 16:42
Temyraz@fb, все можно если осторожно
вон выше в моем примере RepalceTextInFile идет считываение текстовика построчно, добавив одну строчку по образцу SET PGBIN можно выдернуть что тебе нужно
и таки в чем твой вопрос?

Temyraz@fb
10-04-2012, 16:49
смотрите что я хочу, чтоб из файла например text.txt в котором есть только одна строчка бралась это значение и заменялась значении
Exec (ExpandConstant ( '{tmp}\check.bat' ), "ТУТ" + ' "' + PathToPsql + '"' , ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );




© OSzone.net 2001-2012